使用NON EMPTY的MDX查询不过滤NULL

时间:2014-04-16 06:44:15

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

我目前正在调查一段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])

由于所有返回的null都会导致结果集稀疏,并且影响客户端性能。

尝试将EXISTS替换为{I}过滤NULLS无效的NONEMPTY。是否有办法解决此问题或重写MDX语句以便结果不包含NULLS?

1 个答案:

答案 0 :(得分:0)

这些行的

NON EMPTY会排除显示中所有列中NULL的行,而列NON EMPTY会排除显示中的列在所有行中显示NULL

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