2013-06-05 105 views
1

當從PowerPivot的連接到SSAS,我得到了下面的問題 - 如果由於某種原因沒有行由MDX查詢返回,要麼返回沒有列名和PowerPivot的給出了一個錯誤。當在SSMS中執行這樣的查詢時,如果mdx返回1行(列名稱和行本身),則mdx返回0行;如果mdx返回1行,則返回2行。所以 - 我可以以某種方式迫使SSAS返回列名稱? 查詢目前看起來有點像這樣:力MDX查詢返回的列名

SELECT NON EMPTY {[Measures].[Measure1]} ON COLUMNS, 
NON EMPTY {Filter([DimLocalDate].[Date].&[20110101]:[DimLocalDate].[Date].&[20120101], 
[JobStatus].[JobStatus].&[1] } ON ROWS 
FROM [TheCube] 

在我的應用程序的客戶可以指定日期和狀態值。如果沒有找到結果,我會期望一個空的結果集,但是我得到一個錯誤。 謝謝。

回答

1

我之前選擇檢查,如果你非空子句將返回一個空集,在這種情況下,穿上行的虛擬設置將返回的PowerPivot至少1排。 類似於:

WITH 
SET [mySet] as NON EMPTY ({Filter([DimLocalDate].[Date].&[20110101]:[DimLocalDate].[Date].&[20120101], [JobStatus].[JobStatus].&[1] }) 
SET [myRealSet] as IIF(COUNT([mySet]) > 0, [mySet], {[DummySet]}) 
SELECT NON EMPTY {[Measures].[Measure1]} ON COLUMNS, 
[myRealSet] ON ROWS 
FROM [TheCube] 

會有幫助嗎?

+1

是的,非常感謝,這確實幫助。最後我使用了COUNT(HEAD([MySet],1))而不僅僅是COUNT([MySeat]) - 也許這樣做會更好,但仍然需要進行任何性能比較。再次感謝Michele ... – user2417797

2

重新SSIS錯誤:[MEMBER_CAPTION]不能在數據源中找到。

感謝您的解決方案幫助我。 我有同樣的問題,使用SSIS,SSAS輸出平面文件報告

我會張貼一個擴展示例來幫助其他人定義虛擬集。 請注意,日期是動態插入到MDX腳本中的。當存在該日期沒有數據,因此不返回任何結果

SSIS拋出異常。 這打亂了列順序

--create a blank set so that data is still returned when there are no results for that date 
set [BlankRowSet] as 
([Activity Period].[Days].[Day].&[2014-02-02T00:00:00], [Well].[Location].[Location].&[]) 

--create the active set as the crossjoin between Days, Wells 
set [ActiveSet] as 
nonempty([Activity Period].[Days].[Day].members * [Well].[Location].[Location].members) 

SET [RealSet] as IIF(COUNT([ActiveSet]) > 0, [ActiveSet], {[BlankRowSet]}) 


select {[Measures].[Total boe]} ON COLUMNS 
,[RealSet] ON ROWS 
FROM 
(select {[Activity Period].[Days].[Day].&[2014-02-02T00:00:00]:[Activity Period].[Days].[Day].& [2014-02-02T00:00:00]} on 0 from [Volumes]) 

where 
[Scenario].[All Scenarios].[Category].&[PVR Sales Estimates]