PowerBI DAX 的格式化字符串并不是一个简单的话题,我们用一个篇章来介绍其中的规律。后续的内容会进一步扩展到复杂的应用中。
什么是自定义格式字符串
格式字符串,是用来指定值显示的方式的。值可以是数字,文本,日期等。
例如,有一个数字是:12345.67892,我们想显示成:12,345.69,这有两种做法:
- 第一种方法,将原有值改写成字符串,那么结果是这个字符串;
- 第二种方法,将原有值改变显示样式,那么结果还是原来的值。
它们的区别在于:
- 第一种方法,可以用 FORMAT 函数实现,在表格导出时是文本,无法在 Excel 中继续处理;
- 第二种方法,使用系统内置的格式,在表格导出时将保持原有值,可以在 Excel 中继续运算。
Excel 中的格式化字符串
格式化字符串,不是一个新技术,而有着成熟的历史,在 Excel 中就有这个内容,如下:
可以看到这些就是自定义数字格式。
Excel 对自定义数字格式的三大支持:
- 第一种:自定义格式
- 第二种:三段式支持,包括:>0;=0,<0 分别显示的格式
- 第三种:条件支持,包括:颜色和大小范围
对于第三种,很多人并不知道,如下:
这里的数字 -21 的颜色并非设置所致,而是自定义数字格式,如下:
可以看出,自定义数字格式,有强大的能力,其本质在于:
不改变值的结果下,设置其显示的样式。
PowerBI 对自定义数字格式的支持
PowerBI 提供了对自定义数字格式的支持,但仅仅限于前两种形态,即:
- 第一种:自定义格式
- 第二种:三段式支持,包括:>0;<0;=0 分别显示的格式
在 2020年12月 版本(含)后的 Power BI Desktop 中,可以直接在度量值的设置文本框中改写。如下:
如果将这里设置为:【0.0】,那么有:
如果将这里设置为:【#,#0.0】,那么有:
如果将这里设置为:【#,#0.0;(#,#0.0);】,当 [KPI] = 0 时,有:
当 [KPI] < 0 时,有:
细致的伙伴可能会发现:这里是不能控制颜色的,没有错。对于颜色的控制,需要使用条件格式来进行。
综上,
- 第一种:自定义格式
- 第二种:三段式支持,包括:>0;<0;=0 分别显示的格式
要注意的是:第二种的不同段间显示的设置对应于与 0 的大小关系,第一段是 >0 ,第二段是 <0 ,第三段是 =0 。
又如:
自定义数字格式还可以轻松设置百分比等格式,各种日期格式也可以设置。
在 PowerBI 中使用自定义数字格式
Excel 作为全球商业智能软件的事实标准,自定义数字格式用于了 Excel 以及 VBA 长达多年,Power BI 中的同样需求必定以同样的方式来实现是非常合理的。那么,Power BI 的自定义数字格式是与 Excel 以及 VBA 的设置一样的。但在功能方面,是 Excel 功能的有限子集。
有了自定义数字格式,这让我们思考一些通用问题:
- 如何实现千分位分隔符,本文已示范
- 如何实现百分比,本文已示范
- 如何实现零值不显示,本文已示范
对 DAX FORMAT 函数熟悉的伙伴可能会思考这与 FORMAT 的区别在哪里,本文已经给出答案,用自定义数字格式的好处有两个:
- 保持值不变,仅仅改变显示样式,表格数据导出为 .csv 文件后,可以在 Excel 中继续以数字进行计算处理,而非文本;
- 这种做法相比于 FORMAT 的条件显示不需要多次 SWITCH 判断,有利于性能优化。
在这方面的官方参考文档,严格遵守:
https://docs.microsoft.com/zh-cn/power-bi/create-reports/desktop-custom-format-strings
实战应用
结合上述内容,可以思考:
如何实现 K(千) M(百万) B(十亿)的自动显示切换,效果如下:
该效果非常有用,可以将很小和很大的数字放在一起显示且自动加入合理的缩放单位。即使是制作图表,也可以得到有意义的显示,如下:
提示:可以借助本文的说明 计算组 官方文档实现,具有全局通用性。
总结
自定义格式字符串,是高级 PowerBI 应用中的基础物件,我们将使用这一特性构建高级能力,因此,理解和掌握自定义格式字符串是这些高级内容的前序内容。
在订阅了BI佐罗讲授的《BI进行时》课程区,除了可以下载本文案例,还可以观看视频讲解。