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中函式的名稱相同,其引數也可能不同,函式的結果也可能不同。

您將在後續章節中瞭解更多關於這些內容。

廣告
© . All rights reserved.