【问题标题】:MDX Query with NON EMPTY not filtering NULLsNON EMPTY 的 MDX 查询不过滤 NULL
【发布时间】:2014-04-16 06:44:14
【问题描述】:

我目前正在研究一段 MDX 代码,其中 NON EMPTY 无法过滤 NULL 值。这实际上列出了昨天所有帐户的 DEMO_KPI。由于当天并非所有帐户都处于活动状态,因此结果集应该非常小。 MDX 使用预定义的集合来查找昨天。我认为寻找昨天的复杂性是过去的设计。我是一个新手 MDX 开发人员,试图找出这个查询返回 NULL 的原因,但它仍然是一个谜。

    SELECT 
       NON EMPTY { [yesterday_1] } ON COLUMNS,
       NON EMPTY { [Account].[Account ID].[All].CHILDREN } ON ROWS
    FROM [DEMO]
    WHERE ( [DIM_1].[Hierarchy_1].&[xyz], [Dim_2].[Hierarchy_2].&[abc], [Measures].[Demo KPI] )

MDX 使用计算度量值,我在此处将其表示为一组代码..

    WITH 
      SET [base_yesterday_1] AS
        FILTER(
         [Date].[Date].[Date].MEMBERS,
         [Date].[Date].CURRENTMEMBER.NEXTMEMBER.PROPERTIES("CALENDAR DATE NO PADDING")=format(NOW(), 'M/d/yyyy')
         )
      SET [cyesterday_1] AS
       EXISTS(
         [Date].[Calendar].[Date].MEMBERS, 
         [base_yesterday_1]
         ).ITEM(0).ITEM(0)
      SET [yesterday_1] AS 
        {cyesterday_1.ITEM(0).ITEM(0)}
    SELECT 
      NON EMPTY { [yesterday_1] } ON COLUMNS,
      NON EMPTY { [Account].[Account ID].[All].CHILDREN } ON ROWS
    FROM [DEMO]
    WHERE ([DIM_1].[Hierarchy_1].&[xyz], [Dim_2].[Hierarchy_2].&[abc], [Measures].[Demo KPI])

结果集将是稀疏的,因为所有空值都返回并影响客户端性能。

已尝试将EXISTS 替换为NONEMPTY,这也无助于过滤NULL。有没有办法解决这个问题或重写MDX 语句以使结果不包含NULL?

【问题讨论】:

    标签: sql-server-2008-r2 ssas mdx


    【解决方案1】:

    NON EMPTY for the rows 从显示中排除在 all 列中将具有 NULL 的行,对于列,NON EMPTY 从显示中排除将在 all 列中显示 NULL 的列strong>所有行。

    我不确定您的数据内容。但也许它有助于在引号中添加包含[Measures].[Demo KPI] 度量值的度量值组的名称作为EXISTS 的第三个参数。也许在ON ROWS 之前直接添加一个HAVING 子句可能会有所帮助,它可以使用可以为每一行评估的任何条件来限制要显示的行。

    【讨论】:

    • 嗨弗兰克 - 因为自定义集不支持上下文感知(除了 WHERE 子句)这对用户将 currentmember 放入集 [base_yesterday_1] 有影响吗?
    • @whytheq 好点!可能[base_yesterday_1] 始终是空集,因为[Date].[Date].CURRENTMEMBER 是日期层次结构的默认成员,可能是没有NEXTMEMBER 的All 成员。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多