SSAS相关的FormatString显示不同的值单位

时间:2016-03-29 09:54:43

标签: sql-server ssas cube

我正在为一家能源公司签订SSAS多维数据集合同。

一项措施是“合同数量”。他们有电力和天然气合同。因此合约数量单位为km3或MWh。

措施“合同数量”最好不要拆分为Gas和El,但应采用相同的措施。

如何向最终用户显示不同的单位?我最好使用依赖于契约类型的FormatString(信息都在基础事实表和维度中)。我能这样做吗?

无论如何,我可以制造天然气和天然气可以与天然气混合 - 但不是天然气可聚合的吗?

编辑: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\3;-#,##0.00 \k\m\3";
    END SCOPE;
    SCOPE ([Contract Type].[Contract types].[Energy].&[Gas]);
    FORMAT_STRING ( This ) = "#,##0.00 \k\m\3;-#,##0.00 \k\m\3";
    END SCOPE;
END SCOPE;

2 个答案:

答案 0 :(得分:3)

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

在多维数据集中,您可以选择计算。您可以在此处使用范围来创建这些不同的单位。

答案 1 :(得分:3)

我认为你有两个挑战 - 但两者都可以用一对SCOPE语句来解决。

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

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

SCOPE ... END SCOPE可以嵌套,因此如果您愿意,可以在额外的父SCOPE中添加包裹这两个SCOPE,它指定计算的度量,因此您不必重复该度量名称。