如何在 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")
)
假设我有一个像这样的简单度量:
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")
)