代码之家  ›  专栏  ›  技术社区  ›  Divisadero

Analysis services筛选器函数隐式筛选空元素

  •  0
  • Divisadero  · 技术社区  · 7 年前

    我需要根据某种条件筛选[\u Account.Account selection]中的成员,无论成员是否为空,但filter()函数会隐式排除空成员。这是一个bug还是一个特性?MSDN没有提到过滤器函数的这种行为。

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

    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 回复  |  直到 7 年前
        1
  •  2
  •   GregGalloway    7 年前

    请尝试以下操作:

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