显示行上没有数据的项目 |数据交换系统

Show items with no data on rows | SSAS , MDX

正在执行一项任务,需要将所有维度的数据带到 Pivot Table(Excel Sheet),即使它们与事实无关。

首先,我能够通过使用 Excel 中的选项“PivotTable 选项”->“显示”->“显示行上没有数据的项目”来做到这一点。这里的问题是使用这个选项会影响其他维度,并且要求只对学生维度起作用,用户不喜欢每次都把选项改回来。然后我在下面使用 SCOPE 找到了这个解决方案,但就像上面一样,如果添加了任何其他维度,我找不到让范围忽略逻辑的方法,这样数据就不会重复。

SCOPE ([Program].[Program Hierarchy].MEMBERS, [Measures].[Number of Students]); 
THIS = IIF(ISEMPTY([Measures].[Number of Students]), 0, ([Measures].[Number of Students])); 
END SCOPE; 

那么有什么我可以添加上面的 SCOPE 以仅在程序维度中工作并忽略/跳过并正常工作,如果任何其他维度添加到枢轴 table?

如有任何建议,我们将不胜感激。

假设对于 Dimension1、attribute1 和属性 "Value 1",您在 Fact 中没有任何内容,因此它已从结果中删除,现在您通过选择选项。当你添加另一个维度的属性时假设Dimension2.Attribute1,因为"Value 1"在Fact中没有任何内容,因此Cube不会理解Dimension2.Attribute1的哪个值要显示在Dimension1.Attribute1之前,因此它会显示它的所有值。所以如果我们在 Dimension2 中有 3 个值,属性 1 那么 "Value 1" 将重复三次。现在使用 Excel 您无法解决问题,但可能只需要编写一个有效的 MDX 查询即可。

编辑:添加了查询。

下面的示例查询基于 AdventureWorks,第一个示例显示结果有一些空值,如果我取消注释 "non-empty" 所有空值都会消失,请继续尝试。

select [Measures].[Internet Sales Amount] on columns,
--non empty
[Product].[Subcategory].[Subcategory]
on rows 
from 
[Adventure Works]

没有非空的结果

现在让我们向查询添加另一个维度。请注意,第一行 (Bib-shorts) 的空值现在对第二个维度的所有值重复,因为立方体无法确定要显示哪个值。

select [Measures].[Internet Sales Amount] on columns,
--non empty
([Product].[Subcategory].[Subcategory],[Date].[Calendar Quarter of Year].[Calendar Quarter of Year])
on rows 
from 
[Adventure Works]

结果

现在上面的结果显示了您面临的问题。我们现在需要做的是,只要存在空值,我们就不需要第二个维度的各个成员,而是需要一个占位符来满足元组。

在下面的查询中我有两个元组 1) 对于非空数据点。这里我们展示的是二次元的实际成员。 2) 对于空数据点,我们在这里使用“.defaultmember”,这基本上意味着第二个维度的行为就像它从未被选中一样。仔细看看它说的第二个维度 "All Period"

select [Measures].[Internet Sales Amount] on columns,
--non empty 
{filter(([Product].[Subcategory].[Subcategory],[Date].[Calendar Quarter of Year].[Calendar Quarter of Year]),[Measures].[Internet Sales Amount]>0),
filter(([Product].[Subcategory].[Subcategory],[Date].[Calendar Quarter of Year].defaultmember),[Measures].[Internet Sales Amount]=null)
}
on rows 
from 
[Adventure Works]

结果: