Applies ToMicrosoft 365 Excel Excel 2024 Excel 2021 Excel 2019 Excel 2016 Power BI

本節提供範例連結,示範在下列案例中使用 DAX 公式。

  • 執行複雜的計算

  • 使用文字和日期

  • 條件值和錯誤測試

  • 使用時間智慧

  • 排名和比較值

本文內容

開始使用

請造訪 DAX 資源中心 Wiki ,您可以在這裡找到 DAX 的各種相關信息,包括由業界頂尖專業人員和Microsoft所提供的部落格、範例、白皮書和影片。

案例:執行複雜計算

DAX 公式可以執行複雜的計算,包括自定義匯總、篩選及使用條件值。 本節提供如何開始使用自定義計算的範例。

建立數據透視表的自定義計算

CALCULATE 和 CALCULATETABLE 是功能強大且彈性的函數,可用於定義導出字段。 這些函數可讓您變更執行計算的上下文。 您也可以自定義要執行的匯總或數學運算類型。 如需範例,請參閱下列主題。

將篩選套用至公式

在 DAX 函數採用表格做為自變數的大部分位置,您通常可以改用篩選的數據表,方法是改用 FILTER 函數而非數據表名稱,或將篩選表達式指定為函數自變數之一。 下列主題提供如何建立篩選以及篩選如何影響公式結果的範例。 如需詳細資訊,請參閱 篩選 DAX 公式中的數據

FILTER 函數可讓您使用表達式指定篩選準則,而其他函數則是特別設計來篩選空白值。

選擇性地移除篩選以建立動態比例

透過在公式中建立動態篩選,您可以輕鬆回答如下所示的問題:

  • 目前產品銷售額占當年總銷售額的貢獻為何?

  • 與其他部門相比,這個部門對所有營運年度的總利潤貢獻多少?

您在數據透視表中使用的公式可能會受到數據透視表上下文的影響,但您可以透過新增或移除篩選來選擇性地變更上下文。 ALL 主題中的範例會示範如何執行此動作。 若要找出特定經銷商的銷售比例與所有經銷商的銷售比例,您必須建立一個量值,以計算目前上下文的值,除以 ALL 上下文的值。

ALLEXCEPT 主題提供範例,說明如何選擇性地清除公式上的篩選。 這兩個範例都會根據數據透視表的設計,逐步引導您了解結果的變更方式。

如需如何計算比例和百分比的其他範例,請參閱下列主題:

使用外部迴圈的值

除了在計算中使用目前上下文的值之外,DAX 還可以使用前一個迴圈的值來建立一組相關的計算。 下列主題提供如何建立參照外部迴圈中值的公式的逐步解說。 EARLIER 函數最多支援兩個巢狀循環層級。

若要深入瞭解列上下文和相關表格,以及如何在公式中使用此概念,請參閱 DAX 公式中的上下文

案例:使用文字和日期

本節提供 DAX 參考主題的連結,其中包含使用文字、擷取及撰寫日期和時間值,或根據條件建立值的常見案例範例。

透過串連建立索引鍵欄

Power Pivot 不允許複合索引鍵;因此,如果您的數據源中有複合索引鍵,您可能需要將它們合併成單一索引鍵欄。 下列主題提供一個範例,說明如何根據複合索引鍵建立計算結果列。

根據從文字日期擷取的日期部分撰寫日期

Power Pivot 使用 SQL Server 日期/時間數據類型來處理日期;因此,如果您的外部數據包含格式不同的日期,例如,如果日期是以 Power Pivot 數據引擎無法辨識的地區日期格式撰寫,或者您的數據使用整數替代索引鍵,您可能需要使用 DAX 公式來擷取日期部分,然後將部分撰寫成有效的日期/時間表示。

例如,如果您有一欄日期已經以整數表示,然後匯入為文字字串,您可以使用下列公式將字串轉換為日期/時間值:

=DATE (RIGHT ([Value1],4) ,LEFT ([Value1],2) ,MID ([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 天,然後輸出對應的整數值。

    = (TODAY () -3) *1.0

  • 若要將日期、數位或貨幣值轉換為字串,請使用空字串串連值。 例如,下列公式會以字串的形式傳回今天的日期。

    =“”& TODAY ()

下列函數也可以用來確保傳回特定的數據類型:

將實數轉換成整數

案例:條件式值和錯誤測試

和 Excel 一樣,DAX 的函數可讓您測試數據中的值,並根據條件傳回不同的值。 例如,您可以建立將經銷商標示為[ 慣用 ] 或 [ ] 的計算結果列,視每年銷售量而定。 測試值的函數也很適合用來檢查值的範圍或類型,以避免意外的數據錯誤破壞計算。

根據條件建立值

您可以使用巢狀 IF 條件來測試值,並條件化產生新的值。 下列主題包含一些條件式處理和條件值的簡單範例:

測試公式中的錯誤

不同於 Excel,您無法在計算結果列的一列中有有效的值,在另一列中不能有無效的值。 也就是說,如果 Power Pivot 欄的任何部分發生錯誤,整個欄都會加上錯誤標幟,因此您必須一律更正導致無效值的公式錯誤。

例如,如果您建立的公式除以零,您可能會得到無限結果或錯誤。 如果函數在預期數值時遇到空白值,部分公式也會失敗。 當您正在開發數據模型時,最好允許顯示錯誤,以便按兩下郵件並疑難解答問題。 不過,發佈活頁簿時,您應該納入錯誤處理,以防止非預期的值造成計算失敗。

為了避免傳回計算結果列中的錯誤,您可以使用邏輯和資訊函數的組合來測試錯誤,並一律傳回有效的值。 下列主題提供一些簡單的範例,說明如何在DAX中執行此動作:

案例:使用時間智慧

DAX 時間智慧函數包含可協助您從數據擷取日期或日期範圍的函數。 然後,您可以使用這些日期或日期範圍來計算類似期間的值。 時間智慧函數也包含可搭配標準日期間隔使用的函數,可讓您比較月、年或季的值。 您也可以建立一個公式,比較指定期間中第一個和最後一個日期的值。

如需所有時間智慧函數的清單,請參閱 時間智慧函數 (DAX)。 如需如何在 Power Pivot 分析中有效使用日期和時間的秘訣,請參閱 Power Pivot 中的日期

計算累計銷售額

下列主題包含如何計算結帳和開啟餘額的範例。 這些範例可讓您建立跨天、月、季或年等不同間隔的執行餘額。

比較一段時間的值

下列主題包含如何比較不同時段的總和的範例。 DAX 支援的預設時段為月、季和年。

計算自定義日期範圍的值

請參閱下列主題以瞭解如何擷取自定義日期範圍的範例,例如促銷活動開始后的前15天。

如果您使用時間智慧函數來擷取一組自定義的日期,您可以使用該日期集做為執行計算之函數的輸入,以建立跨時段的自定義匯總。 如需如何執行此動作的範例,請參閱下列主題:

  • PARALLELPERIOD 函數

    附註: 如果您不需要指定自定義的日期範圍,但使用標準的會計單位,例如月、季或年,建議您使用為此目的所設計的時間智慧函數來執行計算,例如 TOTALQTD、TOTALMTD、TOTALQTD 等。

案例:排名和比較值

若只要顯示欄或數據透視表中的前 n 個項目數,您有幾個選項:

  • 您可以使用 Excel 中的功能來建立 [頂端] 篩選。 您也可以在數據透視表中選取一些頂端或底部的值。 本節的第一部分說明如何篩選數據透視表中前 10 個專案。 如需詳細資訊,請參閱 Excel 檔。

  • 您可以建立公式,以動態方式為值排名,然後根據排名值進行篩選,或使用排名值做為交叉分析篩選器。 本節的第二部分說明如何建立此公式,然後在交叉分析篩選器中使用該排名。

每種方法都有優缺點。

  • Excel 頂端篩選很容易使用,但篩選僅供顯示之用。 如果數據透視表的基礎數據變更,您必須手動重新整理數據透視表才能看到變更。 如果您需要動態處理排名,可以使用DAX建立公式,將值與欄中的其他值進行比較。

  • DAX 公式更強大;此外,您可以將排名值新增至交叉分析篩選器,只要按下交叉分析篩選器即可變更顯示的頂端值數目。 不過,計算的成本高,而且這個方法可能不適合具有許多數據列的數據表。

僅顯示數據透視表中的前十個專案

顯示數據透視表中頂端或底部的值

  1. 在數據透視表中,按兩下 [ 列卷標 ] 標題中的向下箭號。

  2. 選取 [值篩選> 前 10 名

  3. 在 [ 前 10 個篩選] <欄名稱> ] 對話框中,選擇要排名的欄和值的數目,如下所示:

    1. 取 [上 ],查看含有最高值的單元格或 [ 下] 以查看具有最低值的單元格。

    2. 輸入您要查看的頂端或底部值數目。 預設值為 10。

    3. 選取您要顯示值的方式:

名稱

描述

項目

選取此選項可篩選資料透視表,以依其值只顯示頂端或底部項目的清單。

百分比

選取此選項可篩選資料透視表,只顯示加總到指定百分比的專案。

Sum

選取此選項以顯示頂端或底部專案的值總和。

  1. 選取包含您要排名之值的欄。

  2. 按一下 [確定]。

使用公式動態排序專案

下列主題包含如何使用 DAX 建立儲存在計算結果列中的排名的範例。 由於 DAX 公式是以動態方式計算,因此即使基礎數據已變更,您隨時都可以確定排名正確無誤。 此外,由於公式是在計算結果列中使用,因此您可以使用交叉分析篩選器中的排名,然後選取前 5 名、前 10 名或甚至前 100 個值。

需要更多協助嗎?

想要其他選項嗎?

探索訂閱權益、瀏覽訓練課程、瞭解如何保護您的裝置等等。

社群可協助您詢問並回答問題、提供意見反應,以及聆聽來自具有豐富知識的專家意見。