- 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函式返回表,這些表儲存在記憶體中,可用作其他DAX函式的引數。
Datetime是資料模型中另一種用於日期和時間值的新資料型別。需要日期和/或時間作為引數的DAX函式需要datetime資料型別。
DAX資料型別的摘要
以下是DAX支援的資料型別:
| 序號 | 資料型別和描述 |
|---|---|
| 1 | 64位(8位元組)整數值 沒有小數位的數字。 整數可以是正數或負數,但必須是介於-9,223,372,036,854,775,808 (-2^63) 和 9,223,372,036,854,775,807 (2^63-1) 之間的整數。 |
| 2 | 64位(8位元組)實數 實數是可以有小數位的數字。實數涵蓋以下值:
但是,有效數字位數限制為15位小數。 |
| 3 | 布林值
|
| 4 | 字串 Unicode字元資料字串。 可以是文字格式表示的字串、數字或日期。 最大字串長度為268,435,456個Unicode字元(256兆字元)或536,870,912位元組。 |
| 5 | datetime 採用可接受的日期時間表示形式的日期和時間。 有效日期為1900年1月1日之後的所有日期。 |
| 6 | 貨幣 貨幣資料型別允許的值範圍為-922,337,203,685,477.5808 到 922,337,203,685,477.5807,具有四位固定精度的小數。 |
| 7 | 空值 空值是DAX中的一種資料型別,用於表示和替換SQL空值。您可以使用BLANK函式建立空值,並使用邏輯函式ISBLANK測試空值。 |
| 8 | 表 表示資料模型中的表。 |
注意 - 資料模型不支援在Excel中使用的變體資料型別。因此,當您載入或匯入資料時,請確保表中每一列的資料型別一致。
DAX函式使用以下資料型別:
- 標量值,包括字串。
- 數字,包括整數和實數。
- 日期和時間。
如果資料型別不相容,DAX函式將返回錯誤。確保表中每一列的資料型別符合要求。如果不符合,您可以從Power Pivot視窗的Ribbon中顯式設定資料型別。
您可以在本教程庫中的教程 - DAX 函式 中瞭解每個DAX函式所需的資料型別。
DAX公式中的隱式資料型別轉換
您不需要轉換或以其他方式指定在DAX公式中使用的列或值的資料型別。當您在DAX公式中使用資料時,DAX會自動識別引用的列和您鍵入的值中的資料型別,並在必要時執行隱式轉換以完成指定的運算。
但是,可以成功轉換的值有一些限制。如果值或列的資料型別與當前運算不相容,DAX將返回錯誤。
DAX隱式資料轉換示例 - 假設您有一個DAX公式,其中您將數字新增到日期。DAX會在使用函式的上下文中解釋它。兩個引數都轉換為公共資料型別,結果以目標資料型別返回。
執行的轉換型別由運算子確定,運算子會在執行請求的運算之前轉換它所需的值。在以下部分中,您可以找到以下運算子的隱式資料轉換表:
- 加法 (+)
- 減法 (-)
- 乘法 (*)
- 除法 (/)
- 比較運算子
每個表列出運算子,並指示當列中的每個資料型別與相交行中的資料型別配對時執行的轉換。
加法 (+) 的隱式資料轉換表
| 運算子 (+) | 整數 | 貨幣 | 實數 | DATETIME |
|---|---|---|---|---|
| 整數 | 整數 | 貨幣 | 實數 | DATETIME |
| 貨幣 | 貨幣 | 貨幣 | 實數 | DATETIME |
| 實數 | 實數 | 實數 | 實數 | DATETIME |
| DATETIME | DATETIME | DATETIME | DATETIME | DATETIME |
例如,如果A是貨幣資料型別,B是實數資料型別,則在計算A+B時,DAX將A轉換為實數並將其新增到B。結果將是實數資料型別。
減法 (-) 的隱式資料轉換表
行標題是被減數(左側),列標題是減數(右側)。
| 運算子 (-) | 整數 | 貨幣 | 實數 | DATETIME |
|---|---|---|---|---|
| 整數 | 整數 | 貨幣 | 實數 | 實數 |
| 貨幣 | 貨幣 | 貨幣 | 實數 | 實數 |
| 實數 | 實數 | 實數 | 實數 | 實數 |
| DATETIME | DATETIME | DATETIME | DATETIME | DATETIME |
例如,如果A是整數資料型別,B是實數資料型別,則在計算A-B時,DAX將A轉換為實數並從A中減去B。結果將是實數資料型別。
注意 - 資料模型還支援一元運算子 -(負數),但此運算子不會更改運算元的資料型別。
乘法 (*) 的隱式資料轉換表
| 運算子 (*) | 整數 | 貨幣 | 實數 | DATETIME |
|---|---|---|---|---|
| 整數 | 整數 | 貨幣 | 實數 | 整數 |
| 貨幣 | 貨幣 | 實數 | 貨幣 | 貨幣 |
| 實數 | 實數 | 貨幣 | 實數 | 實數 |
例如,如果A是實數資料型別,B是貨幣資料型別,則要計算A*B,DAX將A轉換為貨幣資料型別並將A與B相乘。結果將是貨幣資料型別。
除法 (/) 的隱式資料轉換表
| 運算子 (/) | 整數 | 貨幣 | 實數 | DATETIME |
|---|---|---|---|---|
| 整數 | 實數 | 貨幣 | 實數 | 實數 |
| 貨幣 | 實數 | 貨幣 | 實數 | 實數 |
| 實數 | 實數 | 實數 | 實數 | 實數 |
| DATETIME | 實數 | 實數 | 實數 | 實數 |
例如,如果A是貨幣資料型別,B是實數資料型別,則在計算A/B時,DAX將A轉換為實數並執行除法。結果將是實數資料型別。
比較運算子的隱式資料轉換表
在比較表示式中,DAX遵循以下規則:
布林值大於字串值。
字串值大於數值或日期時間值。
數字和日期時間值被認為具有相同的等級。
布林值或字串值不執行隱式資料轉換。
BLANK或空值根據另一個比較值的資料型別轉換為0/""/false。
對於數值或日期時間型別,將如以下表格所示隱式執行資料轉換:
| 比較運算子 | 整數 | 貨幣 | 實數 | DATETIME |
|---|---|---|---|---|
| 整數 | 整數 | 貨幣 | 實數 | 實數 |
| 貨幣 | 貨幣 | 貨幣 | 實數 | 實數 |
| 實數 | 實數 | 實數 | 實數 | 實數 |
| DATETIME | 實數 | 實數 | 實數 | DATETIME |
DAX如何處理空值、空字串和零值?
在DAX中,空值、空值、空單元格或缺失值都由相同的特殊值(BLANK)表示。
- 您可以使用DAX BLANK函式生成BLANK。
- 您可以使用DAX ISBLANK函式測試BLANK。
DAX在DAX公式或DAX函式中如何處理空值取決於各個操作(例如加法或連線)或特定的DAX函式。
示例
| DAX公式 | 結果 |
|---|---|
| BLANK + BLANK | BLANK |
| BLANK + 5 | 5 |
| BLANK * 5 | BLANK |
| 5 / BLANK | 無窮大 |
| 0 / BLANK | NaN |
| BLANK / BLANK | BLANK |
| FALSE OR BLANK | FALSE |
| FALSE AND BLANK | FALSE |
| TRUE OR BLANK | TRUE |
| TRUE AND BLANK | FALSE |
| BLANK OR BLANK | BLANK |
| BLANK AND BLANK | BLANK |