分析服务过滤器函数隐式过滤空元素

时间:2018-03-02 08:45:42

标签: ssas mdx

我需要通过某种条件从[__Account.Account选择]中过滤成员,无论成员是否为空,但Filter()函数隐式排除空成员。这是一个错误或功能吗? MSDN没有提到Filter函数的这种行为。

知道如何避免这个问题吗?

WITH 
  SET [__Account.Account selection] AS 
    '{
      {
        [Account].[Account Number].&[110]
       ,[Account].[Account Number].&[1130]
       ,[Account].[Account Number].&[1164]
       ,[Account].[Account Number].&[1210]
       ,[Account].[Account Number].&[1300]
       ,[Account].[Account Number].&[20]
       ,[Account].[Account Number].&[8500]
       ,[Account].[Account Number].&[8040]
      }
    }' 
  SET [__Account.Account Number_RootMembers_Smart] AS 
    '{
    Filter(
        [__Account.Account selection],
        1 = 1)}' 
SELECT 
  [__Account.Account Number_RootMembers_Smart] ON ROWS
 ,{} ON COLUMNS
FROM [Adventure Works]

注意:函数Generate()具有相同的行为。

注2:由"空成员"我的意思是对任何措施都没有价值的成员。

Response

并且有成员有措施...... enter image description here

1 个答案:

答案 0 :(得分:2)

请试试这个:

WITH 
  SET [__Account.Account selection] AS 
    {
      {
        [Account].[Account Number].&[110]
       ,[Account].[Account Number].&[1130]
       ,[Account].[Account Number].&[1164]
       ,[Account].[Account Number].&[1210]
       ,[Account].[Account Number].&[1300]
       ,[Account].[Account Number].&[20]
       ,[Account].[Account Number].&[8500]
       ,[Account].[Account Number].&[8040]
      }
      * [Account].[Account].[Account].Members
    } 
  SET [__Account.Account Number_RootMembers_Smart] AS 
    {
    Filter(
        [__Account.Account selection],
        1=1)}
SELECT  {} ON COLUMNS,

  [__Account.Account Number_RootMembers_Smart] ON ROWS
FROM [Adventure Works]

请注意,我已将[Account].[Account].[Account].Members添加到查询中。以前,由于未提及,当前坐标为[All Accounts]成员。由于帐户维度是父子维度,因此所有成员显然不存在8个帐号中的6个。更改查询可确保将相关的帐户和帐户编号对放在一起,以便多维数据集空间中存在所有8行并显示。