2013-06-26 22 views
2

我需要編寫一個mdx查詢,該查詢通過維度值還可以通過日期範圍來限制其結果。我知道如何做一個或另一個,但我不知道如何同時做兩個。我該如何寫一個按日期範圍和維度成員值進行切片的mdx查詢

這適用於日期範圍:

SELECT {[Measures].[Hours]} ON COLUMNS, [Time Type].[Type].Members ON ROWS 
FROM [cube] 
WHERE {[Date].[Date ISO].[2013-01-26]:[Date].[Date ISO].[2013-06-25]} 

而這個工程的成員切片機:

SELECT {[Measures].[Hours]} ON COLUMNS, [Time Type].[Type].Members ON ROWS 
FROM [cube] 
WHERE [Time Type].[Allocation Type].[Direct] 

如何通過這兩個約束的結果,其中在同一時間子句值?我試圖把它們都在同一個WHERE像這樣:

SELECT {[Measures].[Hours]} ON COLUMNS, [Time Type].[Type].Members ON ROWS 
FROM [cube] 
WHERE ([Time Type].[Allocation Type].[Direct], 
    {[Date].[Date ISO].[2013-01-26]:[Date].[Date ISO].[2013-06-25]}) 

但蒙德里安與回覆:無功能相匹配的簽名(,)。

請注意,Mondrian不支持子查詢或我會這樣做。

我想我可能需要在我的行上爲我的成員約束使用過濾器函數,但是我需要過濾一些我不想顯示的東西,我不知道該怎麼做。

回答

0

我覺得CROSSJOIN是像這樣的答案:

SELECT {[Measures].[Hours]} ON COLUMNS, [Time Type].[Type].Members ON ROWS 
FROM [cube] 
WHERE CROSSJOIN([Time Type].[Allocation Type].[Direct], 
    {[Date].[Date ISO].[2013-01-26]:[Date].[Date ISO].[2013-06-25]}) 

CROSSJOIN在我的範圍內創建了「直接」成員和日期所有組合的元組對我的WHERE切片機,我認爲這是正確的。答案。