假设我有一个像这样的MDX查询:
SELECT Measure1, Measure2, Measure3 ON COLUMNS
[Region].[Region].[Region] ON ROWS
FROM TheCube
如果我想排除ALL THREE度量为空的行,我会使用SELECT NON EMPTY,它可以快速运行。但实际上我需要排除Measure1和Measure2都为空的行,即使Measure3有一个值 - 因为在这个特定的立方体中,Measure3总是有一个值,所以NON EMPTY根本没有效果。
我能做到
SELECT Measure1, Measure2, Measure3 ON COLUMNS
FILTER ([Region].[Region].[Region],
NOT (IsEmpty(Measure1) AND IsEmpty(Measure2)) ON ROWS
FROM TheCube
它甚至可以工作,但它需要永远:比上面的NON EMPTY查询长一个数量级。事实上,即使我用一个总是正确的表达式来过滤,比如FILTER(...,1 = 1),它也需要很多时间。
是否有更有效的方法来过滤掉Measure1和Measure2都为空的行?
答案 0 :(得分:2)
我认为你正在寻找类似的功能NonEmpty。 http://msdn.microsoft.com/en-us/library/ms145988.aspx 以下是他们之间的一个很好的解释:http://thatmsftbiguy.com/nonemptymdx/
答案 1 :(得分:0)
只需以更易读的方式重新输入生成的查询:
SELECT Measure1, Measure2, Measure3 ON COLUMNS
NonEmpty([Region].[Region].[Region],
{ [Measure1], [Measure2] }) ON ROWS
WHERE -- some filter
如果您不使用WHERE,则必须非常小心地检查您的NonEmpty()运行的确切内容。