在MDX中,如何使用零填充空值/空值,例如:
如果我有尺寸A
和两个尺度X
和Y
,则在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
,但我没有得到任何改进
答案 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'
其中最后一个值是空值的格式