[英]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.