打开

FORMAT函数,原来还可以这么用

JaryYuan
JaryYuan
2022-07-04 20:50:46

本文开始之前,先来看一个很常见的小需求,在PowerBI中如何像Excel一样,将负数显示为外面套一个括号的样式呢?

以下面这个数据为例,显示的是每个产品的同比增长率:

如何让最下面三个负增长的数据,不用负号,而是用括号的方法来表示呢?,DAX可能有多种方法都可以实现,这里介绍一个FORMAT的妙用,建立度量值:

结果如下:

是不是非常简单。

之前曾经介绍过FORMAT函数的用法(利用FORMAT函数自定义数据格式),不过在这篇文章中,只是介绍了利用FORMAT的普通用法,其实利用第2个参数,还可以更加灵活地设置数值的格式。

FORMAT的第2个参数是格式表达式,它可以用分号,分隔为1个部分、2个部分和3个部分:

1个部分:格式表达式应用于所有值

2个部分:第一部分用于正数和0的格式、第二部分用于负数的格式

3个部分:第一部分用于正数、第二部分用于负数、第三部分用于0

之前文章的介绍都是只有1个部分,也就是格式表达式应用于所有值。

文本开头写的度量值:FORMAT([同比], "0%;(0%)"),就是用一个分号将参数表达式分割为2个部分的用法:

第一个部分0%,意思是将正数和0表示为正常的百分比格式;

第二个部分(0%)表示将负数显示为带括号的百分比格式

理解了这个用法以后,就可以运用FORMAT函数更加灵活地设置数据格式了,下面来看几种常见的场景。

正数前面显示“+”

这里第2参数分割为三个部分,分别设置正数、负数、0的格式:

带上下箭头的正负数

根据正负返回增长/下降字符

正负数配色

如果让负数显示为红色括号的数据,可以用FORMAT这样写度量值,第二部分返回“red”:

然后将这个度量值用于前面同比1度量值的字体颜色,效果如下:

因为有很多字母在FORMAT的参数表达式中有特定的含义,所以用了反斜杠“\”,让某些字母显示为它本身,而不表示特定的含义。

由于这个原因,正负数配色度量值不建议使用FORMAT,直接用IF判断的方式来写配色度量值更简单,这里只是为了说明FORMAT的这个用法。

显示数据格式,还可以在格式窗口中直接设置,比如正数前面显示“+”,在格式窗口中输入这些字符也可以实现:

不过这里的设置只适合直接显示,用FORMAT函数的方式不仅能直接显示特定的格式,还可以嵌套在DAX中使用,使用场景更加丰富,建议灵活掌握FORMAT的这些用法。

我的新书上市啦,关于Power BI数据可视化实战

这个好看的柱形图,帮你理解 Power BI 中条件格式的用法

批量合并不规则文件的第三种方法,这次把从文件夹合并数据讲透了