Power Pivot 中的 DAX 案例

套用到
Microsoft 365 Excel Excel 2024 Excel 2021 Excel 2019 Excel 2016

本節提供範例連結,示範在以下情境中使用 DAX 公式。

  • 執行複雜計算
  • 處理文字與日期
  • 條件值與錯誤測試
  • 使用時間智慧
  • 排名與比較價值

本文內容

開始使用

造訪 DAX資源中心維基 ,您可以找到各種關於DAX的資訊,包括由業界頂尖專業人士及Microsoft提供的部落格、範例、白皮書及影片。

情境:執行複雜計算

DAX 公式能執行複雜的計算,包括自訂彙整、篩選及條件值的使用。 本節提供如何開始自訂計算的範例。

為樞紐分析表建立自訂計算

CALCULATE 和 CALCULATETABLE 是強大且靈活的函式,有助於定義計算欄位。 這些函式讓你能改變計算執行的情境。 你也可以自訂要執行的聚合或數學運算類型。 請參考以下主題作為範例。

對公式施加濾鏡

在大多數 DAX 函式以資料表作為參數的地方,你通常可以直接傳送過濾後的資料表,方法是用 FILTER 函式代替資料表名稱,或指定一個濾波器運算式作為函式參數之一。 以下主題提供如何建立過濾器及過濾器如何影響公式結果的範例。 欲了解更多資訊,請參閱 DAX 公式中的篩選資料

FILTER 函式讓你透過表達式來指定篩選條件,而其他函式則專門設計用來過濾空白值。

選擇性地移除濾波器,以創造動態比例

透過在公式中建立動態篩選器,你可以輕鬆回答以下問題:

  • 目前產品的銷售對全年總銷售的貢獻如何?
  • 與其他部門相比,這個部門在所有營運年度的總利潤中貢獻了多少?

你在樞紐分析表中使用的公式可能會受到樞紐分析表上下文的影響,但你也可以選擇性地透過添加或移除篩選條件來改變上下文。 ALL 主題的範例會示範如何做到這點。 要找出特定經銷商銷售額與所有經銷商銷售額的比率,你建立一個衡量標準,計算當前情境的價值除以 ALL 情境的價值。

ALLEXCEPT 主題提供了一個如何選擇性清除公式過濾器的範例。 這兩個例子都帶你了解結果如何因樞紐分析表的設計而改變。

關於如何計算比率與百分比的其他範例,請參閱以下主題:

使用外部迴圈的值

除了在計算中使用當前上下文的值外,DAX 還能使用先前迴圈的值來建立一組相關計算。 以下主題將詳細說明如何建立一個引用外部迴圈值的公式。 EARLIER 函式支援最多兩層巢狀迴圈。

想了解更多關於列上下文及相關表格,以及如何在公式中使用這個概念,請參見 「DAX 公式中的上下文」。

情境:處理文字與日期

本節提供連結至 DAX 參考主題,包含常見情境範例,例如處理文字、擷取與組合日期與時間值,或根據條件建立值。

透過串接建立鍵欄位

Power Pivot 不支援複合金鑰;因此,如果你的資料來源中有複合鍵,可能需要將它們合併成單一鍵欄位。 以下主題提供一個基於複合鍵建立計算欄位的範例。

根據從文本日期中提取的日期部分,Compose a Date

Power Pivot 使用 SQL Server 的日期/時間資料型態來處理日期;因此,如果你的外部資料包含格式不同的日期——例如,你的日期是以區域日期格式寫入,無法被 Power Pivot 資料引擎識別,或你的資料使用整數代理鍵——你可能需要使用 DAX 公式來擷取日期部分,然後將這些部分組合成有效的日期。時間表示。

例如,如果你有一欄日期,這些日期先以整數表示,然後匯入成文字串,你可以用以下公式將字串轉換成日期/時間值:

=日期 (右 ([Value1],4) ,左 ([VALUE1],2) ,中 ([VALUE1],2) )

Value1 結果
01032009 1/3/2009
12132008 12/13/2008
06252007 6/25/2007

以下主題將提供更多關於提取與組合日期函數的資訊。

定義自訂日期或數字格式

如果你的資料包含了標準 Windows 文字格式中未顯示的日期或數字,你可以定義自訂格式,以確保這些值能正確處理。 這些格式用於將數值轉換成字串,或從字串轉換。 以下主題也詳細列出可用於日期與數字處理的預設格式。

使用公式變更資料型別

在 Power Pivot 中,輸出的資料型態由來源欄位決定,且無法明確指定結果的資料型態,因為最佳資料型別是由 Power Pivot 決定的。 不過,你可以利用 Power Pivot 所做的隱含資料型別轉換來操作輸出資料型態。 

  • 要將日期或數字串轉換為數字,請乘以 1.0。 例如,以下公式計算當前日期減去3天,然後輸出相應的整數值。
    = (今日 () -3) *1.0
  • 要將日期、數字或貨幣值轉換為字串,請將該值與空字串串接。 例如,以下公式會以字串形式回傳今天的日期。
    =“”& 今天 ()

以下函式也可用來確保回傳特定資料型別:

將實數轉換為整數

情境:條件值與錯誤測試

像 Excel 一樣,DAX 有函式可以測試資料中的數值,並根據條件回傳不同的值。 例如,你可以建立一個計算欄位,根據年度銷售額將轉售商標示為 優先價值 。 測試數值的函數也有助於檢查值的範圍或類型,以防止意外的資料錯誤導致計算失效。

根據條件建立價值

你可以使用巢狀 IF 條件來測試數值並有條件地產生新值。 以下主題包含一些條件處理與條件值的簡單範例:

公式內的錯誤測試

與 Excel 不同的是,計算欄位的一列不能有有效值,另一列則有無效值。 也就是說,如果 Power Pivot 欄位的任何部分有錯誤,整欄都會被標記為錯誤,因此你必須永遠修正導致無效值的公式錯誤。

例如,如果你建立一個除以零的公式,可能會得到無限大結果,或是錯誤。 有些公式如果函數在預期數值時遇到空白值也會失敗。 在建立資料模型時,最好讓錯誤出現,這樣你就能點擊訊息並排除問題。 不過,當你發佈工作簿時,應該加入錯誤處理,以防止意外值導致計算失敗。

為了避免計算欄位回傳錯誤,你會結合邏輯函數和資訊函式來測試錯誤,並且總是回傳有效值。 以下主題提供一些簡單的範例,說明如何在 DAX 中實現此操作:

情境:運用時間智慧

DAX 時間情報功能包含協助您從資料中擷取日期或日期範圍的功能。 你可以利用這些日期或日期範圍來計算相似期間的數值。 時間智慧功能還包含標準日期區間的功能,讓你能比較跨月份、年份或季度的數值。 你也可以建立一個公式,比較指定期間的第一和最後一日期的數值。

關於所有時間智慧函數的列表,請參見 DAX) (的時間智慧函數 。 關於如何在 Power Pivot 分析中有效使用日期與時間的建議,請參見 Power Pivot 中的日期

計算累積銷售額

以下主題包含計算期末與期初餘額的範例。 這些範例讓你能在不同區間(如天、月、季或年)建立流動餘額。

比較隨時間變化的數值

以下主題包含如何比較不同時期總和的範例。 DAX 支援的預設時間範圍包括月份、季度和年份。

計算一個自訂日期範圍的值

請參閱以下主題,了解如何取得自訂日期範圍,例如促銷開始後的前15天。

如果你使用時間智慧函數來取得自訂的日期集合,你可以將這組日期作為一個函式的輸入,進行計算,從而建立跨時間段的自訂彙總。 請參考以下主題,了解如何進行此操作:

  • 平行週期功能

    注意

    如果您不需要指定自訂日期範圍,但使用標準會計單位如月份、季度或年份,我們建議您使用專為此目的設計的時間情報功能進行計算,例如 TOTALQTD、TOTALMTD、TOTALQTD 等。

情境:排名與比較價值

若要只顯示欄位或樞紐分析表中最前面 n 個項目,你有幾個選項:

  • 你可以利用 Excel 的功能來建立頂尖篩選器。 你也可以在樞紐分析表中選擇多個頂或底值。 本節的第一部分說明如何篩選樞紐分析表中前十項項目。 更多資訊請參閱 Excel 文件。
  • 你可以建立一個公式來動態排序數值,然後再用排名值來篩選,或者用排名值當作切片軟體使用。 本節第二部分將說明如何建立這個公式,然後在切片軟體中使用這個排名。

每種方法都有優缺點。

  • Excel Top 篩選器使用簡單,但僅用於顯示。 如果樞紐分析表底層的資料有變動,你必須手動重新整理樞紐分析表才能看到變更。 如果你需要動態處理排名,可以用 DAX 建立一個公式,將數值與欄位內的其他數值做比較。
  • DAX 公式更強大;此外,只要將排名值加入切片軟體,你只要點擊切片器即可更改顯示的頂尖數值。 然而,計算量龐大,且此方法可能不適合多列的資料表。

僅顯示樞紐分析表中前十項

顯示樞紐分析表中的頂值或底值
  1. 在樞紐分析表中,點擊列 標籤 標題中的向下箭頭。
  2. 選擇 價值篩選器>前十名。
  3. 在「 Top 10 Filter <」欄位名稱> 對話框中,選擇要排名的欄位及數值,如下:
    1. 選擇 Top 以顯示值最高的儲存格,或選擇 Bottom(底部 )顯示值最低的儲存格。
    2. 輸入你想看到的最高或最底的數值。 預設是 10。
    3. 選擇你想要的數值顯示方式:
NameDescriptionItems選擇此選項,以篩選樞紐分析表,僅依值顯示頂端或底端項目的清單。百分比 選擇此選項以篩選樞紐分析表,只顯示符合指定百分比的項目。總共選擇此選項以顯示頂端或底端項目的總和。
  1. 選擇包含你想要排名的數值的欄位。
  2. 按一下 [確定]

使用公式動態排序項目

以下主題將示範如何使用 DAX 建立排名,並儲存在計算欄位中。 由於 DAX 公式是動態計算的,即使底層資料改變,你也能確保排名正確。 此外,因為公式是用在計算欄位,你可以在切片軟體中使用排名,然後選擇前5、前10,甚至前100名。