动态DAX数字格式

时间:2017-08-16 11:30:41

标签: powerbi dax ssas-tabular

我想基于维度值(或者实际上,基于度量值的数量级)动态更改DAX度量的数字格式。

我知道我可以使用SWITCHFORMAT,如Kaspar De Jonge所示:https://www.kasperonbi.com/dynamic-format-using-dax/

以下是我创建的衡量类型的示例:

My Measure:=IF ( 
    HASONEVALUE ( dimMeasureType[Measure Type] ), 
    SWITCH ( VALUES ( dimMeasureType[Measure Type] ),
        "Total Cost", FORMAT ( [Total Cost], "#,##0, k" ),
        "Cost Per Unit", FORMAT ( [Cost Per Unit], "#,##0.00" ),
        "Cost % Sales", FORMAT ( [Cost % Sales], "0.00%" ),
        BLANK()
    ),
    BLANK()
)

但是这种技术会返回文本度量。我需要能够绘制我的度量图表,所以我不想将它们转换为文本。是否有另一种技术可以动态更改度量数字格式,而无需转换为字符串?

如果它有所作为,我在SQL Server 2016 BI上使用SSAS-Tabular。

2 个答案:

答案 0 :(得分:5)

我不认为这目前是可能的,但是它有望在将来实现popular feature request

我建议对链接到的想法进行投票和评论,以增加您的支持。

答案 1 :(得分:0)

一种解决方法是创建多个度量并将其全部添加到图表中。根据维值,只有一个度量返回值,所有其他度量都返回BLANK(),并且不会显示在图表中。您可以通过在名称末尾添加空格来为它们提供相同的显示名称:

My Measure:=IF ( 
    SELECTEDVALUE( dimMeasureType[Measure Type] ) = "Total Cost", 
    [Total Cost],
    BLANK()
)
[My Measure ]:=IF ( 
    SELECTEDVALUE( dimMeasureType[Measure Type] ) = "Cost Per Unit", 
    [Cost Per Unit],
    BLANK()
)
[My Measure  ]:=IF ( 
    SELECTEDVALUE( dimMeasureType[Measure Type] ) = "Cost % Sales", 
    [Cost % Sales],
    BLANK()
)

但这有一些缺点:

  • 图表图例显示所有度量,即使其所有值为BLANK()
  • 图表的y轴格式与“值”部分中的第一个度量相同。