Ssas MDX:过滤特定列不为空的元组的有效方法?

Ssas MDX:过滤特定列不为空的元组的有效方法?,ssas,mdx,Ssas,Mdx,假设我有这样一个MDX查询: 如果我想排除所有三个度量值都为空的行,我将使用SELECT NON empty,它工作得很快。但我实际上需要排除Measure1和Measure2都为空的行,即使Measure3有一个值——因为在这个特定的多维数据集中,Measure3总是有一个值,所以非空根本没有效果 我可以 它甚至可以工作,但需要永远:比上面的非空查询长一个数量级。事实上,即使我使用一个始终为真的表达式进行过滤,比如filter…,1=1,也需要很多时间 有没有更有效的方法过滤出Measur

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

如果我想排除所有三个度量值都为空的行,我将使用SELECT NON empty,它工作得很快。但我实际上需要排除Measure1和Measure2都为空的行,即使Measure3有一个值——因为在这个特定的多维数据集中,Measure3总是有一个值,所以非空根本没有效果

我可以

它甚至可以工作,但需要永远:比上面的非空查询长一个数量级。事实上,即使我使用一个始终为真的表达式进行过滤,比如filter…,1=1,也需要很多时间


有没有更有效的方法过滤出Measure1和Measure2都为空的行?

我认为您正在寻找类似的函数NonEmpty。
以下是它们之间的一个很好的解释:

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


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

我看过《无间道》。100万美元的问题是如何使用它编写SELECT,即如何在NonEmpty的结果中再添加一列。你能举个例子吗?实际上,我没有意识到NoneEmpty还有第二个参数。那可能会导致我想要的。但是一个例子仍然是受欢迎的。好吧,更多关于非空的研究,它实际上在第一个和第二个参数之间进行交叉连接,所以将两组度量传递给它是行不通的。可以尝试在行轴上使用NonEmpty子句和一些度量值,但这会忽略任何筛选以及其他内容,因此也是有问题的。仍然在努力解决这个问题……非空加上WHERE子句起了作用。如在非空[Region].[Region].[Region].[Region],{[Measure1],[Measure2]}列上选择Measure1、Measure2、Measure3,行上选择-some筛选器。如果你不使用WHERE,你必须非常小心地检查你的NonEmpty到底在运行什么。 SELECT Measure1, Measure2, Measure3 ON COLUMNS [Region].[Region].[Region] ON ROWS FROM TheCube SELECT Measure1, Measure2, Measure3 ON COLUMNS FILTER ([Region].[Region].[Region], NOT (IsEmpty(Measure1) AND IsEmpty(Measure2)) ON ROWS FROM TheCube SELECT Measure1, Measure2, Measure3 ON COLUMNS NonEmpty([Region].[Region].[Region], { [Measure1], [Measure2] }) ON ROWS WHERE -- some filter