Ssas 如何获取MDX中返回的空值
我有两个维度,分别是Ssas 如何获取MDX中返回的空值,ssas,mdx,Ssas,Mdx,我有两个维度,分别是T和L 当我运行此命令时: SELECT {measures.[value]} on 0, {nonempty([T].[Hierarchy Items].[T1])} on 1 FROM [Cube] WHERE ( [L].[L3].&[49733] ) 我得到了所有的T1成员和where子句 但是当我删除非空函数时 SELECT {measures.[value]} on 0, {[T].[Hierarchy Items].[
T
和L
当我运行此命令时:
SELECT
{measures.[value]} on 0,
{nonempty([T].[Hierarchy Items].[T1])} on 1
FROM [Cube]
WHERE
(
[L].[L3].&[49733]
)
我得到了所有的T1成员和where子句
但是当我删除非空
函数时
SELECT
{measures.[value]} on 0,
{[T].[Hierarchy Items].[T1]} on 1
FROM [Cube]
WHERE
(
[L].[L3].&[49733]
)
我将获得所有T1成员,where子句不适用
是否有任何方法可以同时获取所有空值,并且过滤器(where)也适用?您需要了解nonempty是如何工作的。例如,我想看到互联网销售金额为2011,考虑下面的查询
select [Measures].[Internet Sales Amount] on 0 ,
[Product].[Category].[Category]
on 1
from
[Adventure Works]
where
[Date].[Calendar Year].&[2011]
结果:
现在,查询返回2011年售出或未售出的所有产品。对于已售出的产品,它返回一个销售额。然而,其他三个产品是在2011年和2011年之间使用笛卡尔乘积返回的(MDX的where行为与SQL的where行为不同)。现在我只想看到2011年销售的产品
select [Measures].[Internet Sales Amount] on 0 ,
nonempty(
[Product].[Category].[Category],
[Measures].[Internet Sales Amount]) on 1
from
[Adventure Works]
where
[Date].[Calendar Year].&[2011]
结果
为此,我可以使用{non empty}或{nonempty}关键字告诉MDX仅检索事实表中具有有效项的组合。由于事实表中没有包含其他三种产品的2011年行,因此不会返回它们。可能是这样的:
WITH
SET S AS
EXISTS(
[T].[Hierarchy Items].[T1].members,
{ [L].[L3].&[49733] },
"MeasureGroupName"
)
SELECT
{measures.[value]} on 0,
S on 1
FROM [Cube];
谢谢您的回答,但我是否可以获取所有L3=49733的T1成员,无论其是否为null?@sqluser在事实表中您没有L3=49733和[T].[Hierarchy Items].[T1]且值不为null()的行。所以你不会得到结果。运行以下查询(根据环境进行调整后)从yourFact中选择*,其中L3=49733和HierarchyItem=T1,让我知道它是否返回任何东西(如果有解决方法),感谢您的回答,但它返回了所有内容。@sqluser尝试将度量值组第三个参数添加到EXISTS函数中