神操作!DAX 生成中文日期表

PowerBI战友联盟

共 3806字,需浏览 8分钟

 ·

2024-05-29 18:41

之前我们介绍过如何在 Power Query 中生成一个符合本地日期格式习惯的日期表。

参考:PowerQuery 技巧:可视化操作生成日期表

虽然 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 系统区域设置影响。

参考:PowerBI 深度解析:如何更改日期切片器的格式

在 Power BI 中最常用的日期格式设置应该是使用 DAX 生成日期表,但是大多数人在生成中文日期表时使用的是 MONTH 函数后跟月字符生成的月份名称,因为 FORMAT 函数并不完全支持中文本地化。但是读完本文你会发现,虽然中文本地化参数无效,但是我们可以利用 OOOO 和 AAAA 去读取本地格式的月份和星期,它会跟随你的系统区域设置变化,这样就能够很好的显示出中文格式的日期格式了。

或者,你也可以使用 Power Query 来生成中文日期表,它支持日期格式中文化。

参考:PowerQuery 日期表进阶:自定义日期字段格式

如果你对本文的 Power BI 源文件感兴趣可以私信老师了解领取方式。

数据分析精英都在学习的五大能力境界

分析师必备:业务数据分析能力五层成熟度路线图框架全解


↓ 数据分析精英正在学习的课程 ↓

他们是:企业老板,高管,CFO,分析...
可以体验百万级真实企业项目案例,彻底打通任督二脉


数据分析师训练营 课程表


时间:2024年06月 班
主题:《业财分析之道》终极业财融合,分析师必备。[私信报名咨询]

数据分析 | Power BI | Tableau | FineBI
企业咨询 | 企业培训 | 个人学习 | 职业规划
咨询老师,验证码:data2024

带你彻底解锁数据分析的力量

点击“阅读原文”获取更多资源

浏览 178
1点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
1点赞
评论
收藏
分享

手机扫一扫分享

分享
举报