神操作!DAX 生成中文日期表
共 3806字,需瀏覽 8分鐘
·
2024-05-29 18:41
之前我們介紹過如何在 Power Query 中生成一個(gè)符合本地日期格式習(xí)慣的日期表。
雖然 Power Query 可以生成日期表,但是很多小伙伴還是喜歡用 DAX 來生成日期表,在使用 DAX 生成日期表的時(shí)候,我們國內(nèi)用戶的一大苦惱就是使用 FORMAT 函數(shù)提取出來的月和星期全是英文格式的,無法直接生成中文,需要進(jìn)行額外的替換操作生成中文。
但是其實(shí)是可以直接實(shí)現(xiàn)的,本文將從原因和解決辦法兩方面為大家介紹如何使用 DAX 生成一個(gè)中文日期表。
原因
我們?nèi)ゲ榭?FORMAT 函數(shù)的自定義日期格式,它好像是支持將結(jié)果轉(zhuǎn)換為本地對(duì)應(yīng)日期時(shí)間格式的,而且 FORMAT 函數(shù)是支持第三個(gè)參數(shù)的,第三個(gè)參數(shù)叫做 local_name,表示函數(shù)要使用的區(qū)域設(shè)置的名稱。
在 Power BI 中試一下,使用 FORMAT 函數(shù)的第三個(gè)參數(shù)本地化提取日期月份格式,第一個(gè) FORMAT 函數(shù)參數(shù)是中文,第二個(gè) FORMAT 函數(shù)參數(shù)是英文,第三個(gè) FORMAT 函數(shù)參數(shù)是德語,第四個(gè) FORMAT 函數(shù)參數(shù)是西班牙語。我們可以看到,除了中文,其他每一個(gè)都本地化參數(shù)都可以正確顯示。
這是什么原因呢?
在 FORMAT 函數(shù)的自定義日期格式部分,有一些字符串對(duì)應(yīng)的日期格式會(huì)說明已本地化,那中文對(duì)應(yīng)月份名稱沒辦法生成是不是因?yàn)?Windsow 系統(tǒng)沒有徹底把中文語言包本地化呢?
帶著這個(gè)疑問,又查看了一下區(qū)域語言與區(qū)域語言包的對(duì)照關(guān)系,發(fā)現(xiàn)中文語言包確實(shí)是部分本地化。
而西班牙語跟德語是完全本地化的語言包,所以西班牙語和德語的本地日期格式可以正確返回,而中文因?yàn)榛A(chǔ)語言還是 en-US,會(huì)返回符合美國日期格式的月份名稱。
這么看來,這個(gè)問題好像無解了,但是又突然發(fā)現(xiàn) DAX FORMAT 函數(shù)是以 Visual Basic 使用的格式字符串為基礎(chǔ)。
在 VBA 中,F(xiàn)ORMAT 函數(shù)是可以讀取本地日期格式設(shè)置的。
解決方法
既然 VBA 中的 FORMAT 函數(shù)可以讀取本地日期格式,我們大膽假設(shè),DAX 中的 FORMAT 函數(shù)也跟 VBA 中的一樣,可以使用指定的字符串來返回本地日期格式。VBA 中的 OOOO 和 AAAA 對(duì)應(yīng)本地區(qū)域日期的月份和周,那 DAX 中的 FORMAT 是不是也同樣適用呢?
我們?cè)?DAX 中嘗試一下。
成功!使用 OOOO 和 AAAA 可以直接獲取本地化的日期格式月和周,適用于任何語言,而傳統(tǒng)的 mmmm 和 dddd 不適用于沒有完全本地化的區(qū)域語言包。
所以我們?cè)?DAX 中創(chuàng)建日期表的語句可以更改為以下語句。
日期表 =ADDCOLUMNS (CALENDAR ( "2019/1/1", "2022/12/31" ),"年序號(hào)", YEAR ( [Date] ),"年份名稱", YEAR ( [Date] ) & "年","季度", QUARTER ( [Date] ),"季度名稱", "Q" & QUARTER ( [Date] ),"月份序號(hào)", MONTH ( [Date] ),"月份名稱", FORMAT ( [Date], "OOOO" ),"月份簡稱", FORMAT ( [Date], "OOO" ),"星期幾", FORMAT ( [Date], "AAAA" ),"周幾", FORMAT ( [Date], "AAA" ))
效果。
除了這些本地月和周日期格式設(shè)置,F(xiàn)ORMAT 函數(shù)還可以設(shè)置預(yù)定義的日期和時(shí)間格式,這個(gè)設(shè)置會(huì)跟隨本地 Windows 系統(tǒng)的區(qū)域日期格式設(shè)置。
我們可以在控制面板中更改日期、時(shí)間或數(shù)字格式中設(shè)置。
默認(rèn)的長日期格式是 yyyy年M月d日,也可以在前面增加星期幾。
在 Power BI 中使用 Long Date 作為日期格式。
將系統(tǒng)區(qū)域的長日期格式改為帶有星期幾的日期格式。
再次執(zhí)行查詢語句,結(jié)果也被修改。
總結(jié)
Power BI 中的大部分日期格式跟 Windows 系統(tǒng)設(shè)置是有很大關(guān)系的,之前我們也介紹過如何修改 Power BI 中日期切片器的日期顯示格式,得出的結(jié)論也是受 Windows 系統(tǒng)區(qū)域設(shè)置影響。
在 Power BI 中最常用的日期格式設(shè)置應(yīng)該是使用 DAX 生成日期表,但是大多數(shù)人在生成中文日期表時(shí)使用的是 MONTH 函數(shù)后跟月字符生成的月份名稱,因?yàn)?FORMAT 函數(shù)并不完全支持中文本地化。但是讀完本文你會(huì)發(fā)現(xiàn),雖然中文本地化參數(shù)無效,但是我們可以利用 OOOO 和 AAAA 去讀取本地格式的月份和星期,它會(huì)跟隨你的系統(tǒng)區(qū)域設(shè)置變化,這樣就能夠很好的顯示出中文格式的日期格式了。
或者,你也可以使用 Power Query 來生成中文日期表,它支持日期格式中文化。
參考:PowerQuery 日期表進(jìn)階:自定義日期字段格式
如果你對(duì)本文的 Power BI 源文件感興趣可以私信老師了解領(lǐng)取方式。
數(shù)據(jù)分析精英都在學(xué)習(xí)的五大能力境界
分析師必備:業(yè)務(wù)數(shù)據(jù)分析能力五層成熟度路線圖框架全解
↓ 數(shù)據(jù)分析精英正在學(xué)習(xí)的課程 ↓
可以體驗(yàn)百萬級(jí)真實(shí)企業(yè)項(xiàng)目案例,徹底打通任督二脈
一數(shù)據(jù)分析師訓(xùn)練營 課程表一
時(shí)間:2024年06月 班
主題:《業(yè)財(cái)分析之道》終極業(yè)財(cái)融合,分析師必備。[私信報(bào)名咨詢]
點(diǎn)擊“閱讀原文”獲取更多資源
