我正在使用SSRS創建一個報告,其中層次結構顯示在x軸上。我想根據用戶通過性能點過濾器選擇的層次結構的最低級別使動態級別動態化。例如,如果用戶選擇了2015年加上2004年12月,報告應該以月份爲粒度,但顯示2014年12月 - 2015年12月(含)。返回MDX中層次結構級別的底部數量
使用了AdventureWorks立方體(2008R2),我可以查詢發貨日期財政層級結構如下:
WITH
MEMBER [SDName] AS [Ship Date].[Fiscal].CURRENTMEMBER.NAME
MEMBER [SDLevel] AS [Ship Date].[Fiscal].CURRENTMEMBER.LEVEL_NUMBER
SELECT
{[SDName], [SDLevel]} ON COLUMNS
,STRTOSET(" {[Ship Date].[Fiscal].[Fiscal Year].&[2011],
[Ship Date].[Fiscal].[Fiscal Quarter].&[2006]&[3],
[Ship Date].[Fiscal].[Fiscal Quarter].&[2008]&[3],
[Ship Date].[Fiscal].[Month].&[2007]&[5]}", CONSTRAINED) ON ROWS
FROM [Adventure Works]
凡STRTOSET功能將包含用戶多選擇參數的輸出。這將返回:
正如你可以看到,出現了3個不同層次的選擇層次(年,季度和月份)的。我想返回月份的水平,即4
我一直在使用BOTTOMCOUNT如下嘗試:
WITH
MEMBER [SDName] AS [Ship Date].[Fiscal].CURRENTMEMBER.NAME
MEMBER [SDLevel] AS [Ship Date].[Fiscal].CURRENTMEMBER.LEVEL_NUMBER
SELECT
BottomCount
(
{[SDName], [SDLevel]},
1,
[SDLevel]
) ON COLUMNS
,STRTOSET(" {[Ship Date].[Fiscal].[Fiscal Year].&[2011],
[Ship Date].[Fiscal].[Fiscal Quarter].&[2006]&[3],
[Ship Date].[Fiscal].[Fiscal Quarter].&[2008]&[3],
[Ship Date].[Fiscal].[Month].&[2007]&[5]}", CONSTRAINED) ON ROWS
FROM [Adventure Works]
但這正好返回相同的結果,如下圖所示以上。
我想知道這是因爲WHERE子句需要先過濾數據(思如SQL),所以我嘗試:
WITH
MEMBER [SDName] AS [Ship Date].[Fiscal].CURRENTMEMBER.NAME
MEMBER [SDLevel] AS [Ship Date].[Fiscal].CURRENTMEMBER.LEVEL_NUMBER
SELECT
BottomCount
(
{[SDName], [SDLevel]},
1,
[SDLevel]
) ON COLUMNS
,[Ship Date].[Fiscal].ALLMEMBERS ON ROWS
FROM [Adventure Works]
WHERE (STRTOSET(" {[Ship Date].[Fiscal].[Fiscal Year].&[2011],
[Ship Date].[Fiscal].[Fiscal Quarter].&[2006]&[3],
[Ship Date].[Fiscal].[Fiscal Quarter].&[2008]&[3],
[Ship Date].[Fiscal].[Month].&[2007]&[5]}", CONSTRAINED))
,但我得到的錯誤:
我不明白的。
我也使用子查詢的嘗試:
WITH
MEMBER [SDName] AS [Ship Date].[Fiscal].CURRENTMEMBER.NAME
MEMBER [SDLevel] AS [Ship Date].[Fiscal].CURRENTMEMBER.LEVEL_NUMBER
SELECT
BottomCount
(
{[SDName], [SDLevel]},
1,
[SDLevel]
) ON COLUMNS
,[Ship Date].[Fiscal].ALLMEMBERS ON ROWS
FROM (SELECT STRTOSET(" {[Ship Date].[Fiscal].[Fiscal Year].&[2011],
[Ship Date].[Fiscal].[Fiscal Quarter].&[2006]&[3],
[Ship Date].[Fiscal].[Fiscal Quarter].&[2008]&[3],
[Ship Date].[Fiscal].[Month].&[2007]&[5]}", CONSTRAINED) ON COLUMNS
FROM [Adventure Works])
,但是這給了我所有成員在層次結構的最低水平(儘管是已經使用STRTOSET輸入過濾的話):
任何人都可以幫忙嗎?我的MDX不太好,我正在努力獲得正確的輸出。
注:我意識到,當我開始探索這個問題,我可以分析參數輸出到查找層次結構的某些層面,即
@DateSelection LIKE "*[Month]*"
,但我希望能利用這次軍演來提高我的MDX技能!