如何在范围内动态设置format_string?

时间:2014-10-09 12:40:19

标签: scope ssas mdx format-string ssas-2008-r2

我有3个措施:

[Measures].[Some Count] with FORMAT_STRING="#,0"
[Measures].[Some Amount] with FORMAT_STRING="Currency"
[Measures].[Some Percent] with FORMAT_STRING="Percent"

SCOPE用于更改所有度量的值,让我们这样说:

SCOPE ([Dimension 1].[Hierarchy 1].[Level 1]);
THIS = IIF(<some condition>,<change>,<not change>);
FORMAT_STRING(THIS) = ???
END SCOPE;

问题:[尺寸1]的上一级测量格式错误。 12345而不是12,345等。

可能的解决方案:更改为IIF(Measures.CurrentMember是[Measures]。[Some Count],&#34;#,0&#34; etc。)

缺点:

  1. 测量列表创建,支持(如果更改了smth,不要忘记更改等等)
  2. 没有机会使用多组措施(甚至在SSAS浏览器中)。
  3. 有没有办法动态设置度量格式?

    更新:实际上,实际项目中有数百项措施,所以我试图避免采取措施列表。

2 个答案:

答案 0 :(得分:0)

我不确定你想要什么,但你可以尝试使用:

FORMAT_STRING([Measures].[Cost])='"£"#,0'; 

在你的范围之后。

答案 1 :(得分:0)

您可以将格式保留在成员属性中并传递它...

format_string(this) = (existing [Dimension 1].[Format].[Format]).item(0).membervalue;