SSAS计算成员以确定属性值的百分比

时间:2018-07-19 13:14:37

标签: ssas mdx olap-cube

我对编写MDX查询是陌生的,并且在将一个查询简单起来的时候遇到了麻烦。

该多维数据集所基于的数据集市具有一个星型模式,该星型模式具有一个中心的事实表(以为中心)。事实表中有一列用于批准该物料的日期。并非所有项目都得到批准,在这种情况下,AprovalDate将为NULL。

我需要做的是显示在数据透视表中遍历多维数据集时已批准项目的百分比。我不太了解如何定义将执行此计算的计算所得成员。

我正在使用由SSAS自动创建的度量,该度量对项目数进行计数(“项目计数”)。为了使事情变得更简单,我在事实表中添加了一个命名计算(“状态已批准”),当AprovalDate可用时,其值为1,否则为0。

我目前有以下内容:

CREATE MEMBER CURRENTCUBE.[Measures].[Percentage Approved]
AS IIF(
    [Measures].[Item Count] = 0, 
    0, 
    SUM({[Item].[Has Status Approved].&[1]},[Measures].[Item Count]) / [Measures].[Item Count]
    ), 
FORMAT_STRING = "Percent", 
VISIBLE = 1;

这似乎给了我正确的结果,但是所有未批准的项目都从结果中滤除(因此,仅显示100%批准的百分比的行)。

我应该如何将MDX查询放在一起以获得所需的结果?任何帮助/澄清将不胜感激,我发现这一切都很混乱

1 个答案:

答案 0 :(得分:0)

您需要除数中的ALL成员吗?

CREATE MEMBER CURRENTCUBE.[Measures].[Percentage Approved]
AS IIF(
    [Measures].[Item Count] = 0, 
    0, 
    SUM({[Item].[Has Status Approved].&[1]},[Measures].[Item Count]) / ( [Item].[All], [Measures].[Item Count])
    ), 
FORMAT_STRING = "Percent", 
VISIBLE = 1;