问题
我需要创建一个报告,列出符合特定条件的多个帐户 - 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]
这种跨维过滤可以吗?
答案 0 :(得分:3)
使用*
符号代替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
上进行交叉加入,则此表格会非常广泛,但这可能只是一个错字:
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.所以下面没有{{ 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];
并使用NON EMPTY,那么您应该会看到更少的行:
[Measures].[Count]
答案 1 :(得分:0)
最后我最终使用过滤器作为我的列,并让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]