1

假设我有一个这样的 MDX 查询:

SELECT Measure1, Measure2, Measure3 ON COLUMNS
[Region].[Region].[Region] ON ROWS
FROM TheCube

如果我想排除所有三个度量都为空的行,我会使用 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 都为空的行?

4

2 回答 2

2

我认为您正在寻找类似的功能 NonEmpty。 http://msdn.microsoft.com/en-us/library/ms145988.aspx 这是它们之间的一个很好的解释:http: //thatmsftbiguy.com/nonemptymdx/

于 2013-05-09T20:22:00.720 回答
0

只需以更易读的方式重新输入结果查询:

SELECT Measure1, Measure2, Measure3 ON COLUMNS
NonEmpty([Region].[Region].[Region], 
         { [Measure1], [Measure2] }) ON ROWS
WHERE -- some filter

如果你不使用 WHERE,你必须非常小心地检查你的 NonEmpty() 到底运行在什么上面。

于 2013-05-20T20:01:00.810 回答