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