加入 PowerBI自己学 知识星球:下载源文件,边学边练;遇到问题,提问交流,有问必答。
在PowerBI中,使用数字单位会遇到如下痛点:
1 使用固定单位,较小权限用户的数字较小,数字可能会变成0;
2 固定单位是英文用户的千分位习惯,不满足中国用户的万、亿等习惯;
3 使用系统自带的自动单位,默认按照最大值的数字量级显示单位,小量级数字也会变成0;
4 不管是固定单位还是自动单位,浏览器语言如果是中文,会出现一排看起来不友好的“千”、“百万”等;
5 度量值使用FORMAT后会变成文本,不支持从小到大排序,不支持放在柱状图等图表中,导出后不是数字。
解决方案
在保持数字格式的前提下,数字单位有如下3种方案:
方案1 增加单位表,通过切片器切换单位,不同量级的数字按照所选的单位一刀切。
操作步骤
STEP 1 点击菜单栏主页下的输入数据,创建一个单位表。
STEP 2 选中单位表中的单位列,点击菜单栏列工具下的按列排序,选择单位序号。这样,切片器中的单位就按指定顺序排列了。
STEP 3 修改度量值公式,将原有的度量值公式写在“_vm_Figure=”后。
Sales_单位表 =
VAR _vm_Figure = SUM(Fact_Sales[销售额])
RETURN DIVIDE(_vm_Figure,SELECTEDVALUE('单位表'[数量级], 1))
在画布中显示如下:
方案2 使用动态格式字符串,按照英文用户习惯,不同量级的数字强制英文动态显示为K、M、Bn等。
操作步骤
STEP 1 写好度量值后,点击菜单栏度量工具下的格式,选择动态。
2 点击度量值公式前面的下拉菜单,将度量值切换到格式,然后录入不同量级的数字对应的格式。这个动态格式字符串功能不会把度量值改为文本,只是在报告显示的时候,按照此文本字符串格式显示,其中的格式设置可以参考FORMAT函数的数字格式。
SWITCH(TRUE(),
[Sales]>=1E9, "#,#,,,.0" & " Bn",
[Sales]>=1E6, "#,#,,.0" & " M",
[Sales]>=1E3, "#,.0" & " K",
[Sales]>=-1E3, "0.0",
[Sales]>=-1E6, "#,.0" & " K",
[Sales]>=-1E9, "#,#,,.0" & " M",
"#,#,,,.0" & " Bn"
)
STEP 3 如果是图表,需要在图表的格式中,将Y轴值的单位和数据标签值的单位设置为无单位,不要设置为固定的千、百万等,不然反而会有显示问题。
在画布中显示如下:
报告发布后,在网页中导出数据时选择.xlsx格式,导出后仍然是数字格式。如果选择.csv或者在PowerBI桌面版中导出(也是csv),就不是数字格式了。
方案3 使用动态格式字符串,按照中国用户习惯,不同量级的数字强制中文动态显示为千、万、亿等。
操作步骤
操作步骤同方案2,将方案2中STEP 2的代码更改为相应的中文,其中要对度量值做相应的位数调整才能变相利用千分位的格式设置。
SWITCH(TRUE(),
[Sales]>=1E8, """" & FORMAT([Sales]*10,"#,#,,,.0" & " 亿"),
[Sales]>=1E4, """" & FORMAT([Sales]*100,"#,#,,.0" & " 万"),
[Sales]>=1E3, "#,.0" & " 千",
[Sales]>=-1E3, "0.0",
[Sales]>=-1E4, "#,.0" & " 千",
[Sales]>=-1E8, """" & FORMAT(-[Sales]*100,"#,#,,.0" & " 万"),
"""" & FORMAT(-[Sales]*10,"#,#,,,.0" & " 亿")
)
在画布中显示如下: