依赖于 SSAS 的 FormatString 来显示不同的值单位

SSAS dependent FormatString to display different unit of values

我正在为一家能源公司的合同开发 SSAS 多维数据集。

一个度量是"Contract volume"。他们有电力和天然气合同。所以合同量的单位不是km3就是MWh。

度量 "Contract volume" 最好不要拆分为 Gas 和 El,而应保持在同一度量中。

如何向最终用户显示不同的单位?我最好使用依赖于合同类型的 FormatString(信息既存在于基础事实 table 中,也存在于维度中)。我可以这样做吗?

有没有办法让 gas 可与 gas 聚合,el 与 el 可聚合 - 但不是 gas 可聚合的 el?

编辑:SQL Server 2008 R2 多维

编辑:谢谢@Mike Honey 这是我最终在脚本视图中编写的代码:

SCOPE 
    (
        {[Measures].[Measure 1],
        [Measures].[Measure 2],
        [Measures].[Measure 3],
        [Measures].[Measure 4]}
    );

    SCOPE([Contract Type].[Contract types].[Energy].&[El].Children);
    FORMAT_STRING ( This ) = "#,##0.00 \k\W\h;-#,##0.00 \k\W\h";
    END SCOPE;
    SCOPE ([Contract Type].[Contract types].[Energy].&[El]);
    FORMAT_STRING ( This ) = "#,##0.00 \k\W\h;-#,##0.00 \k\W\h";
    END SCOPE;

    SCOPE([Contract Type].[Contract types].[Energy].&[Gas].Children);
    FORMAT_STRING ( This ) = "#,##0.00 k\m;-#,##0.00 \k\m";
    END SCOPE;
    SCOPE ([Contract Type].[Contract types].[Energy].&[Gas]);
    FORMAT_STRING ( This ) = "#,##0.00 \k\m;-#,##0.00 \k\m";
    END SCOPE;
END SCOPE;

我认为您可以为此使用 SCOPE: https://msdn.microsoft.com/en-us/library/ms145515.aspx

在立方体中你可以select计算。这是您可以使用作用域创建这些不同单元的地方。

我认为您有 2 个挑战 - 但都可以用一对 SCOPE 语句解决。

在 Cube 的 Calculations 选项卡中,我将首先在 Measures 层次结构上创建一个 Calculated Member,其值 Expression 为 NULL。然后(在脚本视图中)我将添加一对 SCOPE 语句(用于 Gas 和 El)。每个的 Subcube 表达式将指定新的计算量度,以及分别指定 Gas 和 EL 的维度成员。

然后在每个 SCOPE 语句中,您可以使用 This = 语法指定 Gas 和 El 的源度量,然后使用 FORMAT_STRING ( This ) = 语法指定度量格式。

SCOPE ... END SCOPE 可以嵌套,因此如果您愿意,可以将这 2 个 SCOPE 添加到指定计算度量的额外父 SCOPE 中,这样您就不必重复该度量名称。