显示数千或数百万的SSAS度量

时间:2017-04-26 12:06:14

标签: ssas mdx

我有一个使用Microsoft SSAS创建的Olap多维数据集。在内部,我在源交易货币和所需的"报告"之间存在多对多的关系。货币。这一切都是功能性的,但要显示一个动态货币符号,我正在使用"货币"格式化字符串default并根据所选货币传入自定义LCID。

使用"货币" format是小数位和大数。我报告数百万英镑/美元,我的首席财务官希望看到这些数字以千万或数百万报告。为了控制这一点,我已阅读有关使用#,,这样的特殊格式字符串的内容,但这不允许显示货币符号。

我有一个想法,有一个特殊的维度,相当于1,1000,1000000,然后创建一个计算的度量除以此(显然默认为1而不是可聚合),但我有很多措施。

其他人可以就替代方法提出建议吗?

3 个答案:

答案 0 :(得分:1)

我只需通过脚本分配设置FORMAT_STRING

FORMAT_STRING(([Dim-Currency].[Currency Code].&[USD])) = "$#,,";
FORMAT_STRING(([Dim-Currency].[Currency Code].&[Euro])) = "€#,,";

答案 1 :(得分:0)

您可以在此处使用SCOPE声明:

Scope(AddCalculatedMembers([Measures].Members));
    This = case     
        when [Measures].CurrentMember >= 1000000
        then Cstr(Cint([Measures].CurrentMember / 1000000)) + " millions"
        when [Measures].CurrentMember >= 1000
        then Cstr(Cint([Measures].CurrentMember / 1000)) + " thousands"
        else [Measures].CurrentMember
    end;
End Scope;

Cint 返回int值, Cstr 有助于将int值连接到文本。我不确定它是不是太多了。我从来没有使用过"货币"老实说。

答案 2 :(得分:0)

我和@GregGalloway在一起。在我们的立方体脚本中,它实现如下:

Scope
([Dim-Currency].[Currency Code].&[EUR]); 
//EUR
    FORMAT_STRING(This) = '€ #,##0.00';  
End Scope; 

Scope
([Dim-Currency].[Currency Code].&[GBP]); 
    FORMAT_STRING(This) = '£ #,##0.00';  
End Scope; 

我们通过金字塔前端渲染。