我有一个带有两个度量值组的多维数据集,一个用于MOLAP格式,另一个用于ROLAP格式。我还在每个成员组的单个列中创建了计算成员([C]
)([A]
MOLAP和[B]
ROLAP)。我只想要[C]
返回0123B的值(如果它不是空的),否则返回[B]
。这与CASE
语句实现很容易地:如何正确无法在此工作?
WITH MEMBER [C] AS
CASE
WHEN ISEMPTY([A]) THEN [B]
ELSE [A]
END
这个伟大的工程,并运行下面的查询显示的结果完全一样我希望要显示他们,其中[C]
是[B]
只有当[A]
是空的。
SELECT
{ [A]
, [B]
, [C]
} ON COLUMNS
, [Time].CHILDREN ON ROWS
FROM
[Cube]
然而,也有一些情况下,既[A]
和[B]
是空的,我想过滤出来的结果集。通常情况下,我就可以只包住[Time]
维度NONEMPTY
来实现这一目标:
SELECT
{ [A]
, [B]
, [C]
} ON COLUMNS
, NONEMPTY([Time].CHILDREN) ON ROWS
FROM
[Cube]
但是当我尝试这与上面的查询,结果过滤掉所有地方[A]
是空的,行的,无论[B]
是否为空。没有过滤出[B]
为空的行。
我预计NONEMPTY要么:
- 过滤出行,其中
[C]
是空的([A]
和[B]
是空的)OR - 过滤掉所有行
[A]
或[B]
是空
为什么NONEMPTY
只需要[A]
in acc ount这里?
你说得对,'NON EMPTY'是我想要的。但在这种情况下,在同一轴上不是'[A]'和'[B]'?为什么'NONEMPTY'只会过滤出[A]为空的行,而不是'[B]'所在的行? – mclark1129
啊,我现在看到了。 NONEMPTY是FILTER功能的特殊形式。它从第一组中删除第二组中空的项目。如果你没有提供第二套,它只是使用你的立方体的默认度量 - 在这种情况下,[A]。如果您想针对[C]测试NONEMPTY,则必须将[C]放入函数的第二个参数中。 – Bill