【问题标题】:How Aggregate at leaf level as Max, and aggregate as SUM for the superior levels within a Time dimension hierarchy. SSAS如何在叶级别聚合为 Max,并为时间维度层次结构中的上级聚合为 SUM。 SSAS
【发布时间】:2015-01-29 16:22:06
【问题描述】:

我对 SSAS 很陌生,但遇到以下问题:

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

能源 |成本 |生产 |时间

NHU-1 通用能源 | 0.99 | 21.28 | 2013-12-01 00:15:00.000

NHU-1 通用能源 | 13.74 | 21.28 | 2013-12-01 00:15:00.000

NHU-1 通用能源 | 7.92 | 21.28 | 2013-12-01 00:15:00.000

NHU-1 通用能源 | 1.57 | 21.28 | 2013-12-01 00:15:00.000

NHU-1 通用能源 | 9.03 | 21.28| 2013-12-01 00:15:00.000

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

公式是: X= sum(Cost) / Max(Production)

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

X = 33.25 / 21.28

X = 1.56

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

在 DSV 中,我创建了一个命名计算:X = cost / Production,并在 Cube 中将 Production 设置为 Max 聚合类型。

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

【问题讨论】:

    标签: ssas olap aggregation dimension


    【解决方案1】:

    您可以通过 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;
    

    由于CurrentMember,不确定这是否适用于YearDay 级别的多个过滤器。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-01-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多