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

資料分析運算式 (DAX) 一開始聽起來有點令人驚嚇,但不要讓這個名稱矇騙您。 DAX 基本功能相當容易理解。 首先,DAX 不是程式設計語言。 DAX 是公式語言。 您可以使用 DAX 定義計算資料行和量 值欄位的自訂 計算 (也稱為計算欄位) 。 DAX 包含一些用於公式Excel函數,以及設計用來處理關係資料並執行動態匯總的其他函數。

瞭解 DAX 公式

DAX 公式與公式Excel類似。 若要建立等號,您可以輸入等號,後面接著函數名稱或運算式,以及任何必要的值或引數。 如同 Excel,DAX 提供各種函數,您可以使用這些函數處理字串、使用日期和時間執行計算,或建立條件值。

不過,DAX 公式在下列重要方式上有所不同:

  • 如果您想要依列自訂計算,DAX 包含函數,讓您使用目前的列值或相關值來執行因上下文而異的計算。

  • DAX 包含一種函數類型,會以結果方式回報資料表,而不是單一值。 這些函數可用來提供其他函數的輸入。

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

在何處使用 DAX 公式

您可以在公式中建立公式 Power Pivot計算 columns計算 fields 中建立公式。

計算欄

計算結果欄是新增到現有資料表 Power Pivot 欄。 您可以建立定義欄值的 DAX 公式,而不是在資料行中粘貼或輸入值。 如果您將資料 Power Pivot 資料表 (或樞紐分析圖) ,則計算結果欄可以和任何其他資料欄一樣使用。

計算結果欄的公式與在計算結果中建立Excel。 不過,Excel不同,您無法為表格中的不同資料列建立不同的公式;DAX 公式會自動適用于整個資料行。

當資料行包含公式時,會針對每一列計算值。 一旦建立公式,就會針對資料行計算結果。 只有在重新更新基礎資料或使用手動重新計算時,才能重新計算欄值。

您可以建立以量值和其他計算資料行為基礎的計算資料行。 不過,請避免對計算結果欄和量值使用相同的名稱,因為這可能導致混淆的結果。 參照資料行時,最好使用完全限定的欄參照,以避免不小心引用量值。

有關詳細資訊,請參閱 Power Pivot 中的 計算資料行

措施

量值是專為使用樞紐分析表或 (樞紐分析圖) 資料 Power Pivot 公式。 度量可以依據標準匯總函數 ,例如 COUNT 或 SUM,或者您可以使用 DAX 定義您自己的公式。 量值會用於資料透視 表的 值區域。 如果您想要將計算結果放在樞紐分析表的不同區域,請改為使用計算結果欄。

當您為明確量值定義公式時,在您將量值新加到樞紐分析表中之前,沒有任何反應。 當您新增量值時,會針對樞紐分析表的值區域中的每個儲存格評估公式。 由於會針對列和欄標題的每個組合建立結果,因此每個儲存格中的量值結果可能會不同。

您建立之量值的定義會隨其來源資料表一起儲存。 它會顯示在樞紐分析表欄位清單中,而且可供該活頁簿的所有使用者使用。

有關詳細資訊,請參閱 Power Pivot 中的度量

使用資料編輯欄建立公式

Power Pivot,Excel提供資料編輯列,以便更輕鬆地建立和編輯公式,以及自動完成功能,以將輸入和語法錯誤降到最低。

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

輸入欄名   輸入方括弧,然後從目前表格中的欄清單中選擇欄。 針對另一個資料表的欄,開始輸入資料表名稱的第一個字母,然後從自動完成下拉式清單中選擇該欄。

若要進一步瞭解如何建立公式,請參閱在 Power Pivot中建立計算公式。

提示自動完成

您可以在包含巢式函數的現有公式中間使用公式自動完成。 插入點前的文字會用來顯示下拉式清單中的值,插入點之後的所有文字會維持不變。

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

Power Pivot 不會新增函數的右括弧,或自動與括弧相符。 您應該確認每個函數在語法上正確無誤,或者您無法儲存或使用公式。 

在公式中使用多個函數

您可以巢式函數,這表示您用一個函數的結果做為另一個函數的引數。 您可以在計算結果欄內巢式內巢式函數多達 64 個層級。 不過,巢式可能難以建立或疑難排解公式。

許多 DAX 函數都設計為只做為巢式函數使用。 這些函數會返回資料表,因此無法直接儲存;它應提供為數據表函數的輸入。 例如,SUMX、AVERAGEX 和 MINX 函數都需要資料表做為第一個引數。

附註: 量值記憶體在函數巢巢的一些限制,以確保不會因為資料行之間的相依性而需要許多計算而影響績效。

比較 DAX 函數Excel函數

DAX 函式程式庫是以 Excel函式程式庫為基礎,但文件庫有許多差異。 本節摘要說明函數與 DAX 函數Excel之間的差異和相似性。

  • 許多 DAX 函數的名稱和一般行為與 Excel 函數相同,但已修改為接受不同類型的輸入,在某些情況下,可能會返回不同的資料類型。 一般而言,您無法在公式中Excel DAX 函數,Excel公式 Power Pivot 修改。

  • DAX 函數不會以儲存格參照或範圍做為參照,而是以資料行或表格做為參照。

  • DAX 日期和時間函數會返回日期時間資料類型。 相反地,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 (不是數位) 欄時,您可能會收到錯誤或不預期的結果。 例如,當計算將 0 除以 0 時,會返回 NaN 結果。

這是因為公式引擎會比較數值,執行排序和排名;不過,NaN 無法與欄中的其他數位進行比較。

為了確保結果正確,您可以使用 IF 函數的條件陳述式來測試 NaN 值,並返回數值 0。

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

一般而言,您于 Power Pivot 中建建的 DAX 公式與 Analysis Services 表格式模型完全相容。 不過,如果您將 Power Pivot 模型遷移到 Analysis Services 實例,然後在 DirectQuery 模式中部署模型,則有一些限制。

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

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

詳細資訊請參閱 2012 年 2012 SQL Server的 Analysis Services 表格式模型檔。

需要更多協助?

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

這項資訊有幫助嗎?

您對翻譯品質的滿意度為何?
會影響您使用體驗的因素為何?

感謝您的意見反應!

×