【问题标题】:MDX - Exclude columns with (null) or zero valuesMDX - 排除具有(空)或零值的列
【发布时间】:2017-05-22 20:03:23
【问题描述】:

我正在处理 SSMS 2014 中的多维数据集查询,我的查询返回所有列,即使是那些包含 0 和(空)值的列。我知道这是因为日期和客户名称不为空。

使用下面的 MDX 查询,如何删除包含(空)值或登录计数为零的任何列?

WITH 
  MEMBER [2MonthsPriorUniqueUsers] AS Sum({[Date].[Calendar Year Month].CurrentMember.Lag(2)},[Measures].[App Unique Users Loggedin]) 
  MEMBER [1MonthPriorUniqueUsers] AS Sum({[Date].[Calendar Year Month].CurrentMember.Lag(1)},[Measures].[App Unique Users Loggedin]) 
  MEMBER [1MonthPriorTotalAppLogins] AS Sum({[Date].[Calendar Year Month].CurrentMember.Lag(1)},[Measures].[App Logins])
  MEMBER [Measures].[PercentUniqueIncreaseMoM] AS ([1MonthPriorUniqueUsers] / [2MonthsPriorUniqueUsers])-1,FORMAT_STRING = "Percent" 
SELECT 
   NON EMPTY 
     {[Date].[Calendar Year Month].[201705]}
   *  [Project].[Client Name].members ON 0,
  NON EMPTY 
    {
      [Measures].[PercentUniqueIncreaseMoM]
     ,([1MonthPriorUniqueUsers])
     ,[2MonthsPriorUniqueUsers]
     ,[1MonthPriorTotalAppLogins]
    } ON 1
FROM [MyCube]

提前致谢!

【问题讨论】:

    标签: ssms mdx cube olap-cube ssms-2014


    【解决方案1】:

    您想使用NonEmpty()Filter() 函数。例如,如果您需要根据[Measures].[App Logins]排除空记录:

    WITH 
      MEMBER [2MonthsPriorUniqueUsers] AS Sum({[Date].[Calendar Year Month].CurrentMember.Lag(2)},[Measures].[App Unique Users Loggedin]) 
      MEMBER [1MonthPriorUniqueUsers] AS Sum({[Date].[Calendar Year Month].CurrentMember.Lag(1)},[Measures].[App Unique Users Loggedin]) 
      MEMBER [1MonthPriorTotalAppLogins] AS Sum({[Date].[Calendar Year Month].CurrentMember.Lag(1)},[Measures].[App Logins])
      MEMBER [Measures].[PercentUniqueIncreaseMoM] AS ([1MonthPriorUniqueUsers] / [2MonthsPriorUniqueUsers])-1,FORMAT_STRING = "Percent" 
    SELECT 
       NON EMPTY 
         {[Date].[Calendar Year Month].[201705]}
       *  Filter([Project].[Client Name].members,[Measures].[App Logins]>0) ON 0,
      NON EMPTY 
        {
          [Measures].[PercentUniqueIncreaseMoM]
         ,([1MonthPriorUniqueUsers])
         ,[2MonthsPriorUniqueUsers]
         ,[1MonthPriorTotalAppLogins]
        } ON 1
    FROM [MyCube]
    

    【讨论】:

    • 这对 (null) 值起到了作用,我非常感谢,但是任何为零的值呢?
    • 查看更新后的答案。最简单的方法是 Filter() 函数。
    • 我仍然得到零值@Danylo ...在进行一些测试(增加我过滤的数字)时,我注意到即使数字显着增加,比如> 300,我得到的结果明显少于 300 个 [Measures].[App Logins](例如,25 个 App Logins)。还有什么建议吗?
    • 您确定使用 [Measures].[App Logins] 来检查值吗?
    • 我确定。您是否认为出于某种原因它一直在计算应用登录次数,而不仅仅是在该日期期间?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-10-23
    • 2021-09-11
    • 1970-01-01
    • 1970-01-01
    • 2020-06-13
    • 1970-01-01
    • 2011-07-26
    相关资源
    最近更新 更多