我对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中实现这一目标? 我应该使用计算会员吗?
答案 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
,我不确定此问题适用于Day
和CurrentMember
级别的多个过滤器。