- 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運算子及其使用方法。
DAX運算子型別
DAX支援以下型別的運算子:
DAX運算子優先順序順序
您可以使用多個DAX運算子組合多個值或表示式的DAX公式。在這種情況下,最終結果將取決於執行操作的順序。DAX為您提供了預設的運算子優先順序順序,以及覆蓋預設優先順序順序的方法。
DAX預設運算子優先順序如下表所示。
| 優先順序順序 | 運算子 | 操作 |
|---|---|---|
| 1 | ^ | 指數 |
| 2 | – | 符號 |
| 3 | * 和 / | 乘法和除法 |
| 4 | ! | NOT |
| 5 | + 和 – | 加法和減法 |
| 6 | & | 連線 |
| 7 | =, <, >, <=, >= 和 <> | 等於、小於、大於、小於等於、大於等於和不等於 |
DAX表示式語法
您需要首先了解DAX表示式語法以及如何使用運算元和運算子進行表示式計算。
所有表示式都以等號(=)開頭。等號表示後續字元構成表示式。
在等號的右側,您將擁有由DAX運算子連線的運算元。例如,= 5 + 4 > 5。
= 5 * 6 - 3.
表示式總是從左到右讀取,計算也按照該順序進行,基於上一節中給出的DAX運算子優先順序。
如果DAX運算子具有相同的優先順序值,則它們從左到右進行計算。例如,=5*6/10。* 和 / 具有相同的優先順序順序。因此,表示式的計算結果為 30/10 = 3。
如果表示式中的DAX運算子具有不同的優先順序值,則它們將按照從左到右的優先順序順序進行計算。
= 5 + 4 > 7。預設優先順序是先 + 後 >。因此,表示式從左到右計算。先計算 5 + 4 的結果為 9,然後計算 9 > 5 的結果為 TRUE。
= 5 * 6 - 3。預設優先順序是先 * 後 - 。因此,表示式從左到右計算。先計算 5 * 6 的結果為 30,然後計算 30 - 3 的結果為 27。
= 2 * 5 - 6 * 3。預設優先順序是先 *,然後是 -。因此,表示式的計算結果為 10 – 18,然後為 -8。注意,它不是 10 - 6 的結果為 4,然後 4*3 的結果為 12。
使用括號控制DAX計算順序
您可以透過使用括號來更改DAX預設運算子優先順序順序,對運算元和運算子進行分組以控制計算順序。
例如,= 5 * 6 - 3 使用DAX預設運算子優先順序順序計算結果為 27。如果您使用括號對運算元和運算子進行分組,如 = 5 * (6 - 3),則先計算 6 - 3 的結果為 3,然後計算 5 * 3 的結果為 15。
= 2 * 5 - 6 * 3 使用DAX預設運算子優先順序順序計算結果為 -8。如果您使用括號對運算元和運算子進行分組,如 = 2 * (5 - 6) * 3,則先計算 5 - 6 的結果為 -1,然後計算 2 * (-1) * 3 的結果為 -6。
如您所見,使用相同的運算元和運算子,透過不同的分組方式可以得到不同的結果。因此,當您在DAX公式中使用DAX運算子時,您應該注意計算順序。
Excel和DAX之間的差異
儘管DAX與Excel公式具有相似之處,但兩者之間存在一些顯著差異。
由於其底層的記憶體駐留計算引擎,DAX比Excel更強大。
DAX支援比Excel更多的資料型別。
DAX提供了關係資料庫、資料模型的更多高階功能,包括對日期和時間型別的更豐富的支援。
在某些情況下,DAX中計算的結果或函式的行為可能與Excel中的不同。這是由於以下差異造成的:
- 資料型別轉換
- 資料型別
資料型別轉換的差異
在DAX中,當您有一個表示式 =value1 運算子 value2 時,兩個運算元 value1 和 value2 應該具有相同的資料型別。如果資料型別不同,DAX將首先隱式地將它們轉換為公共資料型別。有關詳細資訊,請參閱章節 - DAX語法。
例如,您必須比較兩種不同資料型別的運算元,例如公式產生的數字,例如 =[Amount] * 0.08 和一個整數。第一個數字可以是小數點後有多位小數的十進位制數,而第二個數字是整數。然後DAX處理如下:
首先,DAX將使用可以儲存兩種數字的最大數字格式將兩個運算元轉換為實數。
接下來,DAX將比較這兩個實數。
相反,Excel嘗試比較不同資料型別的值,而無需先將它們強制轉換為公共資料型別。因此,您可能會發現DAX和Excel中相同比較表示式的結果不同。
資料型別的差異
DAX和Excel中的運算子優先順序順序相同。但是,Excel支援的運算子百分比 (%) 和資料範圍不受DAX支援。此外,DAX支援表作為資料型別,而Excel則不支援。
此外,在Excel公式中,您可以引用單個單元格、陣列或單元格範圍。在DAX公式中,您不能引用任何這些。DAX公式引用的資料應該是表、列、計算欄位和計算列。
如果您將公式從Excel複製並貼上到DAX中,請確保DAX公式的正確性,因為DAX語法與Excel公式語法不同。此外,即使DAX和Excel中函式的名稱相同,其引數也可能不同,函式的結果也可能不同。
您將在後續章節中瞭解更多關於這些內容。