PowerPivot 中的資料分析運算式 (DAX)

重要:  本文係由機器翻譯而成,請參閱免責聲明。本文的英文版本請見這裡,以供參考。

資料分析運算式 (DAX) 聽起來有點生畏,但不讓騙您的名稱。DAX 基本概念是確實很容易瞭解。第一個項目第一次-DAX 不是程式設計語言。DAX 是公式的語言。您可以使用 DAX 來定義自訂計算導出資料行量值(也稱為導出欄位)。DAX 包含在 Excel 公式中使用函數及其他設計來使用關聯式資料,並執行動態彙總的函數。

了解 DAX 公式

DAX 公式與 Excel 公式很類似。若要建立 DAX 公式,您必須輸入等號,後接函數名稱或運算式,以及任何必要的值或引數。DAX 跟 Excel 一樣會提供各式各樣的函數,您可以用來搭配字串、使用日期和時間執行計算或建立條件化值。

不過,DAX 公式有下列重要的不同點:

  • 如果您要以逐列為基礎來自訂計算,DAX 包含的函數可讓您使用目前資料列值或相關值來執行依內容而異的計算。

  • DAX 包括一種函數,它會傳回資料表,作為其結果,而非一個值。這些函數可用來為其他函數提供輸入。

  • 時間智慧函數DAX 中允許使用計算範圍中的日期,並且比較整個平行時期的結果。

使用 DAX 公式的位置

您可以在Power Pivotc 導出的資料行導出的 fields中建立公式。

計算結果欄

計算結果欄是您新增至現有 Power Pivot 資料表中的欄。您並非在欄中貼上或匯入值,而是建立定義欄值的 DAX 公式。如果您在樞紐分析表 (或樞紐分析圖) 中包含 Power Pivot 資料表,便可以像使用任何其他資料欄一樣使用計算結果欄。

計算結果欄中的公式類似您在 Excel 中建立的公式。不過,和 Excel 中不同的是,您無法針對資料表中的不同列建立不同的公式,DAX 公式會自動套用到整個欄。

某個欄包含公式時,便會計算每一列的值。一旦您建立公式,便立即會針對該欄計算結果。只有當重新整理基礎資料或使用手動重算時,才會重新計算欄的值。

您可以建立量值為基礎的計算結果的欄和其他計算結果的欄。不過,避免使用相同名稱的導出資料行和量值,因為這可能導致混淆結果。時參照的資料行,最好使用完整的資料行參考,以避免意外叫用量值。

如需詳細資訊,請參閱 中的計算結果欄Power Pivot

量值

量值是專為使用Power Pivot資料的樞紐分析表 (或樞紐分析圖) 中使用建立公式。量值可以根據標準彙總函數,例如計算或加總],或者您可以使用 DAX 定義自己的公式。量值會使用樞紐分析表 [] 區域中。如果您想要將計算的結果放在樞紐分析表的不同區域,請改為使用計算結果的欄。

當您定義公式明確的量值時,沒有任何反應鍵,直到您新增至樞紐分析表的量值。當您新增的量值時,公式會評估的樞紐分析表 [] 區域中的每個儲存格。結果建立的每個資料列和資料行標頭組合,因為量值的結果可能會不同每個儲存格中。

以其來源資料的表格儲存您所建立的量值的定義。它會出現在 [樞紐分析表欄位] 清單中,所有使用者可用的活頁簿。

如需詳細資訊,請參閱Power Pivot 中的量值

使用資料編輯列建立公式

Power Pivot 就像 Excel,可提供資料編輯列,讓您輕鬆建立及編輯公式,並提供 [自動完成] 功能,將輸入及語法錯誤降到最低。  

輸入資料表的名稱 開始輸入資料表的名稱。公式自動完成會提供下拉式清單,其中包含以這些字母開頭的有效名稱。  

輸入欄名 輸入括弧,然後從目前資料表的欄清單中選擇欄。若是另一個資料表的欄,則開始輸入資料表名稱的第一個字母,然後選擇 [自動完成] 下拉式清單中的欄。  

如需詳細資訊和如何建立公式的逐步解說,請參閱在中建立計算公式Power Pivot

使用「自動完成」的秘訣

您可以在具備巢狀函數的現有公式中使用 [公式自動完成]。緊接在插入點前面的文字用於在下拉式清單中顯示值,而插入點後面的所有文字都保持不變。

您為常數建立的定義名稱不會顯示在 [自動完成] 下拉式清單中,但您仍可自行輸入。

Power Pivot 不會新增函數的右括弧或自動成對的括弧。您應該確定每個函數的語法正確,否則便無法儲存或使用公式。 

在公式中使用多個函數

您可以建立函數的巢狀結構,這表示您將某個函數的結果當成另一個函數的引數來使用。您可以在計算結果欄中建立最多 64 層的巢狀函數。不過,巢狀結構會讓您難以建立公式或進行公式疑難排解。

許多 DAX 函數的設計目的,是專門作為巢狀函數使用。這些函數會傳回的資料表,但無法直接將其儲存成結果, 而必須提供作為資料表函數的輸入。例如,SUMX、AVERAGEX 和 MINX 函數 全都需要資料表作為第一個引數。

附註: 量值,以確保欄之間相依性所需的諸多計算不會影響效能中存在函數的巢狀結構一些限制。

比較 DAX 函數與 Excel 函數

DAX 函數程式庫是以 Excel 函數程式庫為基礎,但是兩種程式庫有諸多差異。本節摘要說明 Excel 函數和 DAX 函數之間的相異和相似之處。

  • 許多 DAX 函數的名稱和一般行為與 Excel 函數相同,但是已修改為可接受不同類型的輸入,而且在某些情況下,可能會傳回不同的資料類型。一般來說,若沒有稍做修改,您無法在 Excel 公式中使用 DAX 函數,或是在 Power Pivot 中使用 Excel 公式。

  • DAX 函數不會採用儲存格參照或範圍作為參照,而是使用欄或資料表作為參照。

  • DAX 日期及時間函數會傳回 datetime 資料類型。相反地,Excel 日期及時間函數則會傳回以序號代表日期的整數。

  • 許多新的 DAX 函數會傳回值的資料表,或是根據值資料表作為輸入內容來計算。相反地,Excel 的函數不會傳回資料表,但有些函數則可搭配陣列使用。Power Pivot 中的新功能可讓您輕鬆參照完整的資料表和欄。

  • DAX 提供新的查閱函數,類似 Excel 中的陣列與向量查閱函數。不過,DAX 函數需要在資料表之間建立關聯。

  • 我們預期欄中的資料一律是同一種資料類型。如果資料的類型不相同,DAX 便會將整欄變更為最適合所有值的資料類型。

DAX 資料類型

您可以從可能支援不同資料類型的許多不同資料來源,將資料匯入 Power Pivot 資料模型。當您匯入或載入資料,然後在計算或樞紐分析表中使用資料時, 資料便會轉換成其中一種 Power Pivot 資料類型。如需資料類型清單,請參閱資料模型中的資料類型

資料表資料類型是 DAX 中新的資料類型,作為許多新函數的輸入或輸出。例如,FILTER 函數會採用資料表作為輸入,然後輸出只包含符合篩選條件之列的另一個資料表。藉由結合資料表函數和彙總函數,您可以針對動態定義的資料集來執行複雜的計算。如需詳細資訊,請參閱 中的彙總Power Pivot

公式及關聯模型

Power Pivot視窗是您可以在其中使用多個資料表的資料並連線關聯式模型中的資料表的區域。在此資料模型,表格會連線到彼此關聯,可讓您與其他資料表中的資料行建立關聯性,並建立變得更有趣的計算。例如,您可以建立公式的加總的值相關資料表,並將該值儲存成單一儲存格。或者,若要控制相關資料表中的資料列,您可以套用篩選資料表和資料行。如需詳細資訊,請參閱資料模型中資料表之間的關聯

您可以使用關聯來連結資料表,因此樞紐分析表也可以包含來自不同資料表的多欄中的資料。

不過,由於公式可以處理整個資料表和欄,因此您必須以不同於 Excel 中的做法來設計計算。

  • 一般而言,欄中的 DAX 公式一定會套用到欄中的整組值 (絕不會只套用到幾列或幾個儲存格)。

  • Power Pivot 中資料表的每一列必須永遠具有相同的欄數,而且欄中所有列都必須包含相同的資料類型。

  • 當資料表以關聯性相互連接時,您應確定作為索引鍵使用的兩欄多半具有相對應的值。Power Pivot 未執行強迫參考完整性,因此索引鍵欄中的值可能不對應,但仍能建立關聯。然而,空白或不對應的值可能會影響公式的結果和樞紐分析表的外觀。如需詳細資訊,請參閱 Power Pivot 公式中的查閱

  • 當您使用關聯來連結資料表時,您可以放大的範圍或context公式會進行評估。例如,在樞紐分析表中的公式可以受任何篩選] 或 [樞紐分析表中的欄和列標題。您可以撰寫公式以便操作的內容,但內容也可能會導致您要變更的方式,您可能會預期的結果。如需詳細資訊,請參閱DAX 公式中的內容

更新公式的結果

資料 r efresh及重算是設計包含複雜的公式,大量的資料或從外部資料來源取得資料的資料模型時,您應該瞭解的兩個不同但相關作業。

重新整理資料是使用外部資料來源的新資料更新活頁簿中資料的程序。您可以於您所指定的時間間隔來手動重新整理資料。或者,如果您已將活頁簿發佈至 SharePoint 網站,便可排程來自外部來源的自動重新整理。

重新計算是更新公式結果的程序,以便反映公式本身的任何變更及基礎資料中的這些變更。重新計算可能會以下列方式影響效能:

  • 若是計算結果欄,每當您變更公式時,應該一律針對整欄重新計算公式的結果。

  • 量值,直到量值會放置在樞紐分析表或樞紐分析圖的內容,不會計算公式的結果。當您變更任何列或欄標題會影響篩選資料,或是您手動重新整理樞紐分析表時,就也會重新計算公式。

疑難排解公式

撰寫公式時的錯誤

如果定義公式時發生錯誤公式便可能含有「語法錯誤」「語意錯誤」或「計算錯誤」

語法錯誤最容易解決。這類錯誤通常和缺少括弧或逗點有關。如需個別函數之語法的說明,請參閱「DAX 函數參考」。

當語法正確、但在公式內容中參照不具意義的值或欄時,便會發生另一種錯誤。這類語意及計算錯誤可能是由下列任一問題所致:

  • 公式參照不存在的欄、資料表或函數。

  • 公式看起來正確,但是當資料引擎擷取它發現有不相符類型的資料,而提出錯誤。

  • 公式將數量或類型不正確的參數傳遞給函數。

  • 公式參照到內含錯誤的不同欄,因此其值無效。

  • 公式參照未經處理的欄,表示該欄有中繼資料,但缺少用於計算的實際資料。

在前述四種情況下,DAX 會將含無效公式的整個欄都標記起來。在最後一種情況下,DAX 會將欄變成灰色,指出該欄為未處理狀態。

排名或排序欄值時發生不正確或異常的結果

排名或排序包含 NaN (Not a Number,不是數字) 值的欄 時,您可能會收到錯誤或未預期的結果。例如,計算 0 除以 0 時,會傳回 NaN 結果。

這是因為公式引擎是藉由比較數值來執行排序及排名;不過,NaN 無法和欄中其他數字進行比較。

若要確保正確的結果,您可以用 IF 函數來使用條件陳述式測試 NaN 值,並傳回一個數字 0 的值。

與 Analysis Services 表格式模型和 DirectQuery 模式的相容性

一般而言,在 Power Pivot 中建立的 DAX 公式與 Analysis Services 表格式模型完全相容。不過,如果您將 Power Pivot 模型移轉為 Analysis Services 執行個體,然後在 DirectQuery 模式中部署模型,則有一些限制。

  • 如果您在 DirectQuery 模式中部署模型,某些 DAX 公式可能會傳回不同的結果。

  • 當您部署模型至 DirectQuery 模式時,部分公式可能會導致驗證錯誤,因為公式包含對相關資料來源不支援的 DAX 函數。

如需相關資訊,請參閱 SQL Server 2012 BooksOnlin 中的 Analysis Services 表格式模型文件。

附註: 機器翻譯免責聲明︰本文係以電腦系統翻譯而成,未經人為介入。Microsoft 提供此等機器翻譯旨在協助非英語系使用者輕鬆閱讀 Microsoft 產品、服務及技術相關內容。基於本文乃由機器翻譯而成,因此文中可能出現詞辭、語法、文法上之錯誤。

擴展您的技能
探索訓練
優先取得新功能
加入 Office 測試人員

這項資訊有幫助嗎?

感謝您的意見反應!

感謝您的意見反應! 我們將協助您與其中一位 Office 支援專員連絡以深入了解您的意見。

×