- Excel DAX 教程
- DAX - 首頁
- DAX - 概述
- DAX - 計算列
- DAX - 計算欄位/度量值
- DAX - 編輯計算欄位
- DAX - 刪除計算欄位
- DAX - 語法
- DAX - 運算子
- DAX - 標準引數
- DAX - 函式
- DAX - 理解 DAX 函式
- DAX - 評估上下文
- DAX - 公式
- 更新 DAX 公式的結果
- 更新資料模型中的資料
- DAX - 重新計算 DAX 公式
- DAX 公式重新計算故障排除
- DAX - 公式錯誤
- DAX - 時間智慧
- DAX - 篩選器函式
- DAX - 場景
- 執行復雜計算
- DAX - 文字和日期操作
- 條件值和錯誤測試
- DAX - 使用時間智慧
- DAX - 排名和比較值
- Excel DAX 有用資源
- DAX - 快速指南
- DAX - 有用資源
- DAX - 討論
Excel DAX - 文字和日期操作
DAX 可用於涉及文字操作、提取和組合日期和時間值或基於條件建立值的場景。您可以使用 DAX 執行以下操作:
- 透過連線建立表中的鍵列。
- 根據從文字日期中提取的日期部分組合日期。
- 定義自定義日期格式。
- 使用公式更改資料型別。
- 將實數轉換為整數。
- 將實數、整數或日期轉換為字串。
- 將字串轉換為實數或日期。
透過連線建立鍵列
PowerPivot 中的資料模型僅允許一個鍵列。它不支援您可能在外部資料來源中找到的複合鍵。因此,如果資料來源中的表中存在任何複合鍵,則需要將它們組合成資料模型中表的單個鍵列。
您可以使用 DAX 函式 CONCATENATE 將兩個列組合到資料模型中表的單個列中。DAX 函式 CONCATENATE 將兩個文字字串連線成一個文字字串。連線的專案可以是文字、數字或布林值(以文字表示),或這些專案的組合。如果列包含適當的值,您也可以使用列引用。
= CONCATENATE ([Column1], [Column2])
DAX CONCATENATE 函式僅接受兩個引數。如果任何引數不是文字資料型別,它將被轉換為文字。DAX CONCATENATE 函式返回連線的字串。
基於從文字日期中提取的日期部分的日期
Power Pivot 中的資料模型支援用於日期和時間值的資料型別 datetime。對日期和/或時間值進行操作的 DAX 函式需要引數為 datetime 資料型別。
如果您的資料來源包含不同格式的日期,則需要首先使用 DAX 公式提取日期部分,並將這些部分組合起來構成有效的 DAX datetime 資料型別。
您可以使用以下 DAX 函式來提取和組合日期:
DATE - 以 datetime 格式返回指定的日期。
DATEVALUE - 將文字形式的日期轉換為 datetime 格式的日期。
TIMEVALUE - 將文字格式的時間轉換為 datetime 格式的時間。
定義自定義日期格式
假設資料來源中的日期沒有以標準格式表示。您可以定義自定義日期格式以確保正確處理這些值。DAX FORMAT 函式使您能夠根據指定的格式將值轉換為文字。
FORMAT (<value>, <format_string>)
FORMAT 函式返回一個包含根據 format_string 定義的格式的值的字串。
您可以使用預定義的日期和時間格式,也可以為 FORMAT 函式的 argument format_string 建立使用者定義的日期和時間格式。
以下是預定義的日期和時間格式名稱。如果您使用除這些預定義字串之外的其他字串,它們將被解釋為自定義日期和時間格式。
| 序號 | Format_String & 描述 |
|---|---|
| 1 | "General Date" 顯示日期和/或時間。例如,2015/2/10 上午 10:10:32 |
| 2 | "Long Date" 或 "Medium Date" 根據長日期格式顯示日期。例如,2016年3月7日,星期三 |
| 3 | "Short Date" 使用短日期格式顯示日期。例如,2016/2/3 |
| 4 | "Long Time" 使用長時間格式顯示時間。 通常包括小時、分鐘和秒。 例如,上午 10:10:32 |
| 5 | "Medium Time" 以 12 小時制顯示時間。 例如,晚上 09:30 |
| 6 | "Short Time" 以 24 小時制顯示時間。 例如,14:15 |
或者,您可以使用下表中的字元建立使用者定義的日期/時間格式。
| 序號 | 字元 & 描述 |
|---|---|
| 1 | : 時間分隔符。 時間分隔符。在格式化時間值時分隔小時、分鐘和秒。 |
| 2 | / 日期分隔符。 在格式化日期值時分隔日、月和年。 |
| 3 | % 用於指示應將以下字元讀取為單字母格式,而不考慮任何尾隨字母。還用於指示將單字母格式讀取為使用者定義的格式。 |
以下是各種字元的詳細資訊。
%d - 將日期顯示為不帶前導零的數字(例如 5)。
%dd - 將日期顯示為帶前導零的數字(例如 05)。
%ddd - 將日期顯示為縮寫(例如 Sun)。
%dddd - 將日期顯示為完整名稱(例如 Sunday)。
%M - 將月份顯示為不帶前導零的數字(例如,一月表示為 1)。
%MM - 將月份顯示為帶前導零的數字(例如,一月表示為 01)。
%MMM - 將月份顯示為縮寫(例如,一月表示為 Jan)。
%MMMM - 將月份顯示為完整月份名稱(例如,一月)。
%gg - 顯示時期/時代字串(例如,公元)。
%h - 使用 12 小時制顯示小時作為不帶前導零的數字(例如,下午 1:15:15)。如果這是使用者定義的數字格式中的唯一字元,請使用%h。
%hh - 使用 12 小時制顯示小時作為帶前導零的數字(例如,下午 01:15:15)。
%H - 使用 24 小時制顯示小時作為不帶前導零的數字(例如,13:15:15、1:15:15)。如果這是使用者定義的數字格式中的唯一字元,請使用 %H。
%HH - 使用 24 小時制顯示小時作為帶前導零的數字(例如,13:15:15、1:15:15)。
%m - 將分鐘顯示為不帶前導零的數字(例如,2:1:15)。如果這是使用者定義的數字格式中的唯一字元,請使用 %m。
%mm - 將分鐘顯示為帶前導零的數字(例如,2:01:15)。
%s - 將秒顯示為不帶前導零的數字(例如,2:15:5)。如果這是使用者定義的數字格式中的唯一字元,請使用 %s。
%ss - 將秒顯示為帶前導零的數字(例如,2:15:05)。
%f - 顯示秒的小數部分。例如,ff 顯示百分之一秒,而ffff 顯示萬分之一秒。您可以在使用者定義的格式中使用最多七個f 符號。如果這是使用者定義的數字格式中的唯一字元,請使用%f。
%t - 使用 12 小時制,並在中午之前顯示任何小時的大寫 A;在中午和晚上 11:59 之間顯示任何小時的大寫 P。如果這是使用者定義的數字格式中的唯一字元,請使用 %t。
%tt - 對於使用 12 小時制的區域設定,在中午之前顯示任何小時的大寫 AM;在中午和晚上 11:59 之間顯示任何小時的大寫 PM。對於使用 24 小時制的區域設定,不顯示任何內容。
%y - 顯示不帶前導零的年份數字(0-9)。如果這是使用者定義的數字格式中的唯一字元,請使用%y。
%yy - 以兩位數字格式顯示年份,如果適用則帶前導零。
%yyy - 以四位數字格式顯示年份。
%yyyy - 以四位數字格式顯示年份。
%z - 顯示不帶前導零的時區偏移量(例如,-8)。如果這是使用者定義的數字格式中的唯一字元,請使用%z。
%zz - 顯示帶前導零的時區偏移量(例如,-08)。
%zzz - 顯示完整的時區偏移量(例如,-08:00)。
您可以觀察到,格式字串區分大小寫。透過使用不同的情況可以獲得不同的格式。
更改 DAX 公式輸出的資料型別
在 DAX 公式中,輸出的資料型別由源列確定,您不能顯式指定結果的資料型別。這是因為 Power Pivot 會確定最佳資料型別。但是,您可以使用 Power Pivot 執行的隱式資料型別轉換來操作輸出資料型別。否則,您可以使用某些 DAX 函式來轉換輸出資料型別。
使用隱式資料型別轉換
要將日期或數字字串轉換為數字,請乘以 1.0。例如,= (TODAY()+5)*1.0。此公式計算當前日期加 5 天並將結果轉換為整數值。
要將日期、數字或貨幣值轉換為字串,請將該值與空字串連線起來。例如,= Today() & “”
使用 DAX 函式進行資料型別轉換
您可以將 DAX 函式用於以下目的:
- 將實數轉換為整數。
- 將實數、整數或日期轉換為字串。
- 將字串轉換為實數或日期。
您將在以下部分學習此內容。
將實數轉換為整數
您可以使用以下 DAX 函式將實數轉換為整數:
ROUND (<number>, <num_digits>) - 將數字四捨五入到指定的位數並返回十進位制數。
CEILING (<number>, <significance>) - 將數字向上舍入到最接近的整數或最接近的 significance 倍數,並返回十進位制數。
FLOOR (<number>, <significance>) - 將數字向下舍入到零,到最接近的 significance 倍數,並返回十進位制數。
將實數、整數或日期轉換為字串
您可以使用以下 DAX 函式將實數、整數或日期轉換為字串:
FIXED (<number>, [<decimals>], [<no_comma>]) - 將數字四捨五入並以文字形式返回結果。小數點右邊的位數為 2 或指定的位數。結果帶逗號或可選地不帶逗號。
FORMAT (<value>, <format_string>) - 根據指定的格式將值轉換為文字。
您已經學習瞭如何使用 Format 函式將日期轉換為字串。
將字串轉換為實數或日期
您可以使用以下 DAX 函式將字串轉換為實數或日期:
VALUE (<text>) - 將表示數字的文字字串轉換為數字。
DATEVALUE (date_text) - 將文字格式的日期轉換為日期時間格式的日期。
TIMEVALUE (time_text) - 將文字格式的時間轉換為日期時間格式的時間。