2017-04-26 48 views
0

我有使用Microsoft SSAS创建的Olap立方体。在内部,我在源交易货币和所需的“报告”货币之间有多对多的关系。这是全部功能,但是要显示动态货币符号,我使用“货币”格式字符串默认值,并根据所选货币传递自定义LCID。以千位或百万位显示SSAS度量值

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

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

其他人可以建议一种替代方法吗?

+0

你用什么来显示报告?可能您可以重复使用您的前端工具集。 –

+0

目前使用Excel和Pyramid Analytics。前端工具存在的问题是他们认为他们知道的更好,当你说让它变成数百万时,它会切断立方体格式的货币符号,让报告消费者猜测他们的货币! –

回答

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; 

目标类返回int值和CSTR帮助加盟int值的文本。我不确定它是不是太多。老实说,我从来没有使用过“货币”类型。

+0

有趣的做法是,问题完全与货币符号。我目前使用此代码语言(([Dim-Currency]。[Currency Code] .Members,[Measures]。[Sales]))= [Dim-Currency]。[Currency Code] .CurrentMember.MemberValue; '而且它在维度上具有LCID的价值 - 这使得货币符号具有动态性。我需要将它建立在您的范围声明中,但会给它一个镜头! –

1

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

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

谢谢。对不起,问一个愚蠢的问题,但它似乎设置了维度上的格式字符串,这是如何随后应用于许多措施? –

+0

@DomCotton测试它,但我相信它会应用于所有度量。如果不是,我们可以在每个声明中包括[度量] .AllMembers。 – GregGalloway

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; 

我们通过Pyramid前端渲染。