神操作!DAX 生成中文日期表
共 3806字,需浏览 8分钟
·
2024-05-29 18:41
之前我们介绍过如何在 Power Query 中生成一个符合本地日期格式习惯的日期表。
虽然 Power Query 可以生成日期表,但是很多小伙伴还是喜欢用 DAX 来生成日期表,在使用 DAX 生成日期表的时候,我们国内用户的一大苦恼就是使用 FORMAT 函数提取出来的月和星期全是英文格式的,无法直接生成中文,需要进行额外的替换操作生成中文。
但是其实是可以直接实现的,本文将从原因和解决办法两方面为大家介绍如何使用 DAX 生成一个中文日期表。
原因
我们去查看 FORMAT 函数的自定义日期格式,它好像是支持将结果转换为本地对应日期时间格式的,而且 FORMAT 函数是支持第三个参数的,第三个参数叫做 local_name,表示函数要使用的区域设置的名称。
在 Power BI 中试一下,使用 FORMAT 函数的第三个参数本地化提取日期月份格式,第一个 FORMAT 函数参数是中文,第二个 FORMAT 函数参数是英文,第三个 FORMAT 函数参数是德语,第四个 FORMAT 函数参数是西班牙语。我们可以看到,除了中文,其他每一个都本地化参数都可以正确显示。
这是什么原因呢?
在 FORMAT 函数的自定义日期格式部分,有一些字符串对应的日期格式会说明已本地化,那中文对应月份名称没办法生成是不是因为 Windsow 系统没有彻底把中文语言包本地化呢?
带着这个疑问,又查看了一下区域语言与区域语言包的对照关系,发现中文语言包确实是部分本地化。
而西班牙语跟德语是完全本地化的语言包,所以西班牙语和德语的本地日期格式可以正确返回,而中文因为基础语言还是 en-US,会返回符合美国日期格式的月份名称。
这么看来,这个问题好像无解了,但是又突然发现 DAX FORMAT 函数是以 Visual Basic 使用的格式字符串为基础。
在 VBA 中,FORMAT 函数是可以读取本地日期格式设置的。
解决方法
既然 VBA 中的 FORMAT 函数可以读取本地日期格式,我们大胆假设,DAX 中的 FORMAT 函数也跟 VBA 中的一样,可以使用指定的字符串来返回本地日期格式。VBA 中的 OOOO 和 AAAA 对应本地区域日期的月份和周,那 DAX 中的 FORMAT 是不是也同样适用呢?
我们在 DAX 中尝试一下。
成功!使用 OOOO 和 AAAA 可以直接获取本地化的日期格式月和周,适用于任何语言,而传统的 mmmm 和 dddd 不适用于没有完全本地化的区域语言包。
所以我们在 DAX 中创建日期表的语句可以更改为以下语句。
日期表 =
ADDCOLUMNS (
CALENDAR ( "2019/1/1", "2022/12/31" ),
"年序号", YEAR ( [Date] ),
"年份名称", YEAR ( [Date] ) & "年",
"季度", QUARTER ( [Date] ),
"季度名称", "Q" & QUARTER ( [Date] ),
"月份序号", MONTH ( [Date] ),
"月份名称", FORMAT ( [Date], "OOOO" ),
"月份简称", FORMAT ( [Date], "OOO" ),
"星期几", FORMAT ( [Date], "AAAA" ),
"周几", FORMAT ( [Date], "AAA" )
)
效果。
除了这些本地月和周日期格式设置,FORMAT 函数还可以设置预定义的日期和时间格式,这个设置会跟随本地 Windows 系统的区域日期格式设置。
我们可以在控制面板中更改日期、时间或数字格式中设置。
默认的长日期格式是 yyyy年M月d日,也可以在前面增加星期几。
在 Power BI 中使用 Long Date 作为日期格式。
将系统区域的长日期格式改为带有星期几的日期格式。
再次执行查询语句,结果也被修改。
总结
Power BI 中的大部分日期格式跟 Windows 系统设置是有很大关系的,之前我们也介绍过如何修改 Power BI 中日期切片器的日期显示格式,得出的结论也是受 Windows 系统区域设置影响。
在 Power BI 中最常用的日期格式设置应该是使用 DAX 生成日期表,但是大多数人在生成中文日期表时使用的是 MONTH 函数后跟月字符生成的月份名称,因为 FORMAT 函数并不完全支持中文本地化。但是读完本文你会发现,虽然中文本地化参数无效,但是我们可以利用 OOOO 和 AAAA 去读取本地格式的月份和星期,它会跟随你的系统区域设置变化,这样就能够很好的显示出中文格式的日期格式了。
或者,你也可以使用 Power Query 来生成中文日期表,它支持日期格式中文化。
如果你对本文的 Power BI 源文件感兴趣可以私信老师了解领取方式。
数据分析精英都在学习的五大能力境界
分析师必备:业务数据分析能力五层成熟度路线图框架全解
↓ 数据分析精英正在学习的课程 ↓
可以体验百万级真实企业项目案例,彻底打通任督二脉
一数据分析师训练营 课程表一
时间:2024年06月 班
主题:《业财分析之道》终极业财融合,分析师必备。[私信报名咨询]
点击“阅读原文”获取更多资源