本節提供範例連結,示範在下列情況下使用 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 ()

下列函數也可以用來確保已返回特定資料類型:

將實數轉換成整數

案例:條件值與錯誤測試

DAX Excel函數,讓您測試資料中的值,並根據條件返回不同的值。 例如,您可以建立計算資料行,根據每年銷售量將轉銷商標為"偏好" 或 "值"。 測試值的函數也很有用,可用於檢查值的範圍或類型,以防止意外的資料錯誤中斷計算。

根據條件建立值

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

測試公式中的錯誤

與 Excel不同,您無法在計算結果欄的一列中有有效的值,在另一列則有不正確值。 也就是說,如果 Power Pivot 欄的任何部分發生錯誤,整個資料行會以錯誤標記,因此您必須一直更正導致無效值的公式錯誤。

例如,如果您建立除以零的公式,您可能會獲得無限結果或錯誤。 如果函數在預期數值時遇到空白值,某些公式也會失敗。 當您開發資料模型時,最好允許錯誤出現,好讓您按一下郵件並疑難排解問題。 不過,當您發佈活頁簿時,您應該納入錯誤處理,以防止意外的值導致計算失敗。

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

案例:使用時間智慧

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

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

計算累計銷售額

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

比較一段時間的值

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

計算自訂日期範圍中的值

請參閱下列主題,以瞭解如何取回自訂日期範圍,例如促銷活動開始後的 15 天。

如果您使用時間智慧函數來取回自訂的日期集,您可以使用該日期集作為執行計算之函數的輸入,以跨時段建立自訂匯總。 請參閱下列主題以瞭解如何執行此操作:

  • PARALLELPERIOD 函數

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

分析案例:排名與比較值

若要只顯示欄或樞紐分析表中的前 n 個專案數,您有幾個選項:

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

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

每個方法都有優點和缺點。

  • Excel頂端篩選很容易使用,但篩選僅供顯示之用。 如果樞紐分析表的基礎資料變更,您必須手動重新重新組織樞紐分析表,以查看變更。 如果您需要動態處理排名,您可以使用 DAX 建立公式,將值與欄中的其他值進行比較。

  • DAX 公式功能更為強大;此外,只要將排名值新加到交叉資料交叉點,您只要按一下交叉交叉資料器,即可變更顯示的頂端值數目。 不過,計算成本較高,而且這個方法可能不適合包含多列的資料表。

只顯示樞紐分析表中的前十個專案

顯示樞紐分析表中的頂端或底端值

  1. 在樞紐分析表中,按一下 [列標籤標題 的向下箭 號。

  2. 選取 10>值篩選

  3. 在 [前 10 個 篩選<欄名稱>對話方塊中,選擇要排名的欄,以及值數,如下所示:

    1. 選取頂端以查看值最高的儲存格或底端,以查看值最低的儲存格。

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

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

名稱

描述

項目

選取此選項以篩選樞紐分析表,只顯示頂端或底部專案的清單,並按其值顯示。

百分比

選取此選項以篩選樞紐分析表,只顯示加到指定百分比的專案。

Sum

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

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

  2. 按一下 [確定]。

使用公式動態排序專案

下列主題包含如何使用 DAX 建立儲存在計算欄中的排名範例。 由於 DAX 公式是動態計算,因此即使基礎資料已變更,您也永遠可以確定排名正確無誤。 此外,由於公式是在計算結果欄中使用,因此您可以使用 Slicer 中的排名,然後選取前 5、前 10 或甚至前 100 個值。

Need more help?

Expand your skills
Explore Training
Get new features first
Join Microsoft Office Insiders

Was this information helpful?

How satisfied are you with the translation quality?
What affected your experience?

Thank you for your feedback!

×