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函数中