如何在叶级别聚合为Max,并聚合为时间维度层次结构中的上级别的SUM。 SSAS

时间:2015-01-29 16:22:06

标签: ssas olap aggregation dimension

我对SSAS很新,我遇到了以下问题:

事实表包含以下措施:成本和生产。 但是在一天中的一次我可以在事实表中有多个值,如下所示:

能源|成本|生产|时间

NHU-1 Common Energy | 0.99 | 21.28 | 2013-12-01 00:15:00.000

NHU-1 Common Energy | 13.74 | 21.28 | 2013-12-01 00:15:00.000

NHU-1 Common Energy | 7.92 | 21.28 | 2013-12-01 00:15:00.000

NHU-1 Common Energy | 1.57 | 21.28 | 2013-12-01 00:15:00.000

NHU-1 Common Energy | 9.03 | 21.28 | 2013-12-01 00:15:00.000

现在,我必须对名为X的字段进行计算。

公式是: X =总和(成本)/最大(生产)

在这种情况下,X的值为:

X = 33.25 / 21.28

X = 1.56

我创建了一个具有以下格式的时间维度层次结构:年/日/时间

在DSV中,我创建了一个命名计算:X =成本/生产,并在多维数据集中我将生产设置为最大聚合类型。

当我查询多维数据集并查看时间级别的值时,这很有效,但问题会提升到上述级别(日和年),因为生产仍然汇总为这些级别的最大值。我需要将Production作为Max聚合为时间级别,而对于其余级别我需要将其聚合为SUM。 我如何在SSAS中实现这一目标? 我应该使用计算会员吗?

1 个答案:

答案 0 :(得分:0)

您可以通过SCOPE覆盖更高级别的值:

让我们说[Time Dimension] - 维度名称,[YDT] - 层次结构名称。

SCOPE ([Time Dimension].[YDT].[Day],[Measures].[Production]);
THIS = SUM([Time Dimension].[YDT].CurrentMember.Children,[Measures].[Production]);
END SCOPE;

SCOPE ([Time Dimension].[YDT].[Year],[Measures].[Production]);
THIS = SUM([Time Dimension].[YDT].CurrentMember.Children,[Measures].[Production]);
END SCOPE;

由于Year,我不确定此问题适用于DayCurrentMember级别的多个过滤器。