如何在MDX中填写结果 - 蒙德里安

时间:2013-10-25 20:18:27

标签: mdx mondrian

在MDX中,如何使用零填充空值/空值,例如:

如果我有尺寸A和两个尺度XY,则在MDX查询后我得到了这个:
(“ - ”表示“空”或“空”值)

       X   Y
A.A1   1   - 
A.A2   -   2
A.A3   -   - 

如果我使用“NON EMPTY”A.A3已消失,但在尝试使用CoalesceEmpty填写零时,我得到了这个:

       X   Y
A.A1   1   0 
A.A2   0   2
A.A3   0   0 

假设有太多像A.A3这样的元组,我不想再显示,我如何用零填充空值,并且不显示所有列中为空的元组。

结果必须是:

       X   Y
A.A1   1   0 
A.A2   0   2

注意:我确实试过了filter,但我没有得到任何改进

2 个答案:

答案 0 :(得分:0)

我不确定Mondrian是否支持它,但在Analysis Services中,您可以在行轴上使用HAVING,如下所示:

SELECT {Measures.X, Measures.Y}
       ON COLUMNS,
       A.Members
       HAVING Measures.X <> 0 AND Measures.Y <> 0
       ON ROWS
  FROM MyCube

与只查看空(即NON EMPTY)值的NULL相比,对于HAVING,您可以自己说明条件。在Analysis Services中,数字比较以与零相同的方式处理NULL,因此上面的条件不包括null和零。

另一种方法 - 稍微取决于客户端工具 - 将使用NON EMPTY继续使用MDX而不使用CoalesceEmpty,但通过FORMAT_STRING将NULL值转换为0 。这要求客户端工具使用多维数据集提供的格式字符串或格式化值,而不是实现自己的数字格式。

答案 1 :(得分:0)

我误用了'FORMAT_STRING'!,我只应用了一种格式,感谢此链接http://social.msdn.microsoft.com/Forums/en-US/2715b737-a9a5-4094-8235-df71e92b7bb2/how-to-remove-null-values-in-mdx引用此链接http://msdn.microsoft.com/en-us/library/ms146084.aspx

数值的正确格式为:

  

FORMAT_STRING ='#0 ;;; 0'

其中最后一个值是空值的格式