FORMAT函数是一个很神奇的函数,它能把数值或日期转换成指定格式的文本,如果把FORMAT的功能再配合上DAX引擎的数据类型自动转换,那么将达到化腐朽为神奇的效果。
废话不多说,下面通过两个案例来介绍一下FORMAT函数的巧用,为各位抛砖引玉。
1、天数转换成:xx天xx时xx分xx秒
问题描述
现有一列天数,需要转换成xx天xx时xx分xx秒的格式,如果不足一天,则需转换成xx时xx分xx秒的格式,具体如下图所示:
解决思路
在DAX引擎中,日期其实是以数值的形式存储的,比如说0对应着1899年12月30日,1.5则对应着1899年12月31日 12:00:00 ;所以,我们可以把天数转换成日期,这样就可以利用FORMAT函数提取出时间,然后把天数向下取整即可获得xx天,最后再做个IF判断输出不同格式即可。
解决方案
该问题比较简单,采用计算列即可,具体如下图所示:
2、英文数字转换成中文数字
问题描述
现在需要把0-9的整数转换成中文数字,具体如下图所示:
解决思路
可以用IF嵌套或SWITCH枚举完成,但这样的代码书写量太大了,不够简洁。因此我们采用另一种方法来完成,思路为:把整数转换成日期,然后利用FORMAT函数能够返回日期的中文月份这一特性,从而得到整数所对应的中文月份,例如:整数4所对应的中文月份为:四月,然后再提取左边第一位的字符即可。此外,由于0没有对应的中文月份,所以再用IF判断做一下控制即可。
解决方案
该问题也比较简单,采用计算列即可,具体如下图所示:
以上两个例子都比较简单,哪怕不用我所给出的方法也一样能够完成,但巧用FORMAT函数却能够大大减少代码书写量,也更优雅。
DAX系列文章中涉及到的案例文件,均已上传到QQ群:344353627,若有需要,可自行加群获取。