[英]MDX filtering by multiple dimension members
問題
我需要創建一個報告,該報告將列出一些符合某些條件的帳戶simulationDate
, statisticPeriod
, region
。
現在我的查詢看起來像這樣:
WITH MEMBER [Measures].[Count] as 1
SELECT [Measures].[Count] ON COLUMNS,
NON EMPTY
Crossjoin(
[Account].[Account Number].ALLMEMBERS,
{[simulationDate].[day].&[10010101]},
{[statisticPeriod].[period].&[201201]},
{[region].[code].&[SO]}
)
ON COLUMNS
FROM [myWH]
這種跨維度過濾可以嗎?
使用*
表示Crossjoin
代替Crossjoin
函數會稍微更現代:
WITH
MEMBER [Measures].[Count] AS 1
SELECT
[Measures].[Count] ON COLUMNS
,NON EMPTY
[Account].[Account Number].ALLMEMBERS*
{[simulationDate].[day].&[10010101]}*
{[statisticPeriod].[period].&[201201]}*
{[region].[code].&[SO]} ON COLUMNS
FROM [myWH];
我假設您的自定義指標[Measures].[Count]
只是一個占位符?
如果您在COLUMNS
上進行交叉COLUMNS
,則該表將非常寬,但這可能只是一個錯字:
WITH
MEMBER [Measures].[Count] AS 1
SELECT
[Measures].[Count] ON COLUMNS,
NON EMPTY
[Account].[Account Number].ALLMEMBERS*
{[simulationDate].[day].&[10010101]}*
{[statisticPeriod].[period].&[201201]}*
{[region].[code].&[SO]} ON ROWS
FROM [myWH];
您已在交叉連接的行前面添加了關鍵字NON EMPTY
。 這是告訴處理器以排除任何空行-為空[Measures].[Count]
....但這一措施是從來沒有空它總是等於1所以沒有跟隨Non Empty
應返回一模一樣結果:
WITH
MEMBER [Measures].[Count] AS 1
SELECT
[Measures].[Count] ON COLUMNS,
[Account].[Account Number].ALLMEMBERS*
{[simulationDate].[day].&[10010101]}*
{[statisticPeriod].[period].&[201201]}*
{[region].[code].&[SO]} ON ROWS
FROM [myWH];
因此,就過濾而言,您什么都不做-您需要哪種過濾? 如果用多維數據集中的實際度量替換[Measures].[Count]
並使用NON EMPTY,那么應該看到的行要少得多:
SELECT
[Measures].[ReplaceWithActualMeasure] ON COLUMNS,
NON EMPTY
[Account].[Account Number].ALLMEMBERS*
{[simulationDate].[day].&[10010101]}*
{[statisticPeriod].[period].&[201201]}*
{[region].[code].&[SO]} ON ROWS
FROM [myWH];
最后,我最終將過濾器用作列,並讓NON EMPTY子句負責過濾:
SELECT
NON EMPTY
{[simulationDate].[day].&[10010101]} *
{[statisticPeriod].[period].&[201201]} *
{[region].[code].&[SO]}
ON COLUMNS,
NON EMPTY
[Account].[Account Number].ALLMEMBERS
ON ROWS
FROM [myWH]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.