显示行中没有数据的项目|会计标准

时间:2019-01-16 18:27:43

标签: ssas mdx

正在执行一项任务,该任务需要将所有维度的数据带到数据透视表(Excel工作表)中,即使它们与事实无关。

首先,我可以通过使用Excel中的选项“数据透视表选项”->“显示”->“显示行中没有数据的项目”来做到这一点。这里的问题在于,使用此选项会影响其他维度,并且要求仅针对“学生”维度执行此操作,并且用户不希望每次都继续更改该选项。然后我在下面使用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来仅在程序维度中工作并且可以忽略/跳过并在向数据透视表添加任何其他维度的情况下正常工作吗?

任何建议将不胜感激。

1 个答案:

答案 0 :(得分:0)

让我们假设对于Dimension1,attribute1和属性“值1”,事实中什么都没有,因此将其从结果中删除,现在您通过选择选项来强制Excel显示它。当您添加另一个维度的属性时,假设Dimension2.Attribute1,因为“值1”在事实中什么都没有,因此多维数据集将无法理解Dimension2.Attribute1的哪个值将显示在Dimension1.Attribute1的前面,因此它将显示所有它的价值。因此,如果在Dimension2中有3个值,属性1,则“值1”将重复3次。现在,使用Excel您不能解决问题,但是可能只可能编写有效的MDX查询。

编辑:查询已添加。

以下示例查询基于AdventureWorks,第一个示例显示结果中包含一些空值,如果我取消注释“非空”,则所有空值都将消失,请继续尝试。

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

结果不为空 enter image description here

现在,让我们向查询添加另一个维度。请注意,现在对于第二维的所有值重复第一行的空值(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]

结果 enter image description here

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

在下面的查询中,我有两个元组 1)用于非空数据点。在这里,我们显示第二维的实际成员。 2)对于空数据点,这里我们使用“ .defaultmember”,这基本上意味着第二维将表现出从未选择的状态。仔细查看第二个维度,即“所有期间”

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]

结果:

enter image description here