Excel DAX - 執行復雜計算



DAX公式可以執行涉及自定義聚合、篩選和使用條件值的複雜計算。您可以使用DAX執行以下操作:

  • 為資料透視表建立自定義計算。
  • 將篩選器應用於DAX公式。
  • 選擇性地移除篩選器以建立動態比率。
  • 使用來自外迴圈的值。

為資料透視表建立自定義計算

DAX函式CALCULATE和CALCULATETABLE功能強大且靈活。它們對於定義計算欄位很有用。這些DAX函式使您可以更改執行計算的上下文。您還可以自定義要執行的聚合或數學運算的型別。

CALCULATE函式

CALCULATE (<表示式>,[<篩選器1>],[<篩選器2>]…)

CALCULATE函式在一個由零個或多個指定的篩選器修改的上下文中評估給定的表示式。

如果您的資料已被篩選,則CALCULATE函式會更改篩選資料的上下文,並在您透過篩選器指定的新的上下文中評估表示式。這意味著,指定列上的任何現有篩選器都將被刪除,取而代之的是應用於篩選器引數中的篩選器。

示例

假設您想按運動專案顯示按國家/地區名稱篩選的獎牌百分比。您的計算應獲取覆蓋您在資料透視表中應用於國家/地區的篩選器的百分比值。

  • 定義一個計算欄位 - 獎牌計數百分比,如下面的螢幕截圖所示。

Calculated Fields

使用此DAX公式,CALCULATE函式將考慮結果表中的所有行,幷包含包含ALL函式的篩選器。這樣,您就在分母中得到了總數。

您的資料透視表將如下面的螢幕截圖所示。

Row Labels

在上圖中,國家/地區已過濾為美國,資料透視表中顯示了前18個值。接下來,您可以動態篩選資料透視表中的值。但是,自定義DAX公式將確保計算的正確性。

CALCULATETABLE函式採用值表並執行與CALCULATE函式相同的操作。

在公式中篩選資料

您可以在DAX公式中建立篩選器,以選擇源資料中的值用於計算。您可以透過定義篩選器表示式並將其與用作DAX公式輸入的表一起使用來實現此目的。

篩選器表示式使您可以獲得源資料的一個子集。每次更新DAX公式的結果時,都會動態應用篩選器,具體取決於資料的當前上下文,您可以確保獲得準確且預期的結果。

篩選器表示式通常包含一個DAX篩選器函式,該函式僅返回表的選定行,然後可以將其用作您用於資料聚合的另一個DAX函式的引數。

示例

下面的螢幕截圖顯示了計算欄位的定義,該欄位僅提供夏季運動專案的獎牌計數。

Filtering Data

使用此計算欄位,資料透視表的外觀如下面的螢幕截圖所示。

Calculated Field Screenshot

您可以看到,右側具有新計算欄位的資料透視表中的值與左側在“季節”欄位上顯式應用篩選器的資料透視表中的值匹配。

注意 - DAX篩選器和值函式返回一個表,但從不直接將表或行返回到資料模型,因此始終嵌入在另一個DAX函式中。

有關這些DAX函式的詳細資訊,請參閱章節 - DAX篩選器函式。

動態新增和刪除篩選器

您在資料透視表中使用的DAX公式可能會受到資料透視表上下文的影響。但是,您可以透過新增或刪除篩選器來選擇性地更改上下文。您可以使用DAX函式ALL和ALLEXCEPT動態選擇行,而不管資料透視表上下文如何。

此外,您可以使用DAX函式DISTINCT和VALUES返回不同的值。

使用來自外迴圈的值

您可以使用先前迴圈中的值,使用DAX EARLIER函式建立一組相關的計算。此DAX函式最多支援兩層巢狀迴圈。

廣告