Analysis Services Filter 函数隐式过滤空元素

Analysis services Filter function implicitly filters empty elements

我需要根据某些条件从 [__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:"empty member" 我指的是在任何衡量标准上都没有价值的成员。

并且有成员采取措施...

请试试这个:

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]成员。由于帐户维度是一个 parent-child 维度,因此 All 成员显然不存在 8 个帐号中的 6 个。更改查询可确保将相关的帐号和帐号对放在一起,以便所有 8 行都存在于多维数据集中 space 并显示出来。