如何在 Power BI 的度量中有条件地显示小数

How to conditionally display decimals in a measure in Power BI

假设我有一个像这样的简单度量:

SimpleMeasure = MyTable[Column1]/MyTable[Column2]

是否可以根据值显示小数位数?例如,如果我的度量计算出数字 500,那么我不想看到 500.00,而是 500。但是,如果我的度量计算出 0.56,那么我希望看到的值显示为小数点后两位,而不是四舍五入到数字 1.

所以可能的可视化 table 看起来像这样:

Store   SimpleMeasure
00      10
01      18
02      0.67
03      6

提前致谢!

您可以使用 Switch() 函数。它将 return 第一个 True 结果。将您的值按 DESC 顺序排列 - 从最大值开始,然后是较低的值,然后是最低值。例如:

Switch(
    True
    ,[SimpleMeasure]<1,Round([SimpleMeasure],2) -- 0.655->0.66
    ,[SimpleMeasure]>999,Round([SimpleMeasure],-2) --1044->1000
    ,[SimpleMeasure]>499,Round([SimpleMeasure],-1) -- 505,5->510
    ,[SimpleMeasure]>99,Round([SimpleMeasure],0)  -- 101,55->102        
    ,[SimpleMeasure]>1,Round([SimpleMeasure],1)  -- 99,43->99.4
)

Or/and 您可以在 Switch() 中使用 Format() 函数,使用或代替 Round(),例如:

Format([SimpleMeasure],"#,##0.#") 

Or
     
Format(Round([SimpleMeasure],1),"#,##0.#")

-- Both of them Format() will return  and show 99,43 as 99,4. 
-- Placeholer # returns a digit or nothing.
-- Placegholder 0 returns a digit or 0. 

Format() 和 Round() 的使用取决于您的任务。但对于选择性 Fomat,您将需要 Switch()。

希望,回答对您破案有所帮助

IF(
[SimpleMeasure] < 1, FORMAT([SimpleMeasure], "#,##0.##",
FORMAT([SimpleMeasure], "#,##0")
)