【问题标题】:How to set format_string dynamically in scope?如何在范围内动态设置 format_string?
【发布时间】:2014-10-09 12:40:18
【问题描述】:

我有 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 is [Measures].[Some Count],"#,0" etc.)

缺点:

  1. 措施列表的创建,它的支持(如果smth改变了,不要忘记在这里改变等等)
  2. 没有机会使用测量集(即使在 SSAS 浏览器中)。

有没有办法动态设置度量格式?

更新:实际上,实际项目中有数百个措施,所以我尽量避免措施列表。

【问题讨论】:

  • 一般还是 FORMAT_STRING(THIS)?它适用于常规 MDX 表达式。

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


【解决方案1】:

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

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

在你的范围之后。

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-12
      • 1970-01-01
      • 2010-10-21
      相关资源
      最近更新 更多