簡介

已完成

請觀看下列影片以了解迭代器函式。

Data Analysis Expressions (DAX) 包括一系列稱為「迭代器函式」的函式。 迭代器函式會列舉指定資料表的所有資料列,並評估每個資料列的指定運算式。 這些函式能為您提供彈性,讓您可以控制模型計算對資料進行摘要的方式。

現在您應該已經相當熟悉單一資料行的摘要函式,包括 SUMCOUNTMINMAX 等。 這些函式中各有對應的迭代器函式,並可由 "X" 尾碼加以識別,例如 SUMXCOUNTXMINXMAXX 等。 此外,也有專門的迭代器函式可供執行篩選、排名、一段時間的局部加總計算等。

所有迭代器函式都具有一個特性,即是您必須傳入資料表和運算式。 資料表可以是模型資料表參考,或是傳回資料表物件的運算式。 運算式必須得出純量值。

單一資料行摘要函式 (例如 SUM) 是速記函式。 Microsoft Power BI 會在內部將 SUM 函式轉換成 SUMX。 因此,下列兩個量值定義會產生具有相同效能的相同結果。

Revenue = SUM(Sales[Sales Amount])
Revenue =
SUMX(
    Sales,
    Sales[Sales Amount]
)

請務必了解內容與迭代器函式搭配運作的方式。 因為迭代器函式會列舉資料表中的資料列,所以會評估資料列內容中每個資料列運的算式,類似於計算資料行公式。 會在篩選內容中對資料表進行評估,因此如果目前是使用先前的 Revenue 量值定義範例,如果報表視覺效果已按 FY2020 會計年度進行篩選,則 Sales 資料表會包含「該年份中」排序的銷售量資料列。 篩選內容會在篩選內容的課程模組中加以說明。

重要

當您使用迭代器函式時,請務必避免使用其中運算式會搭配大量 DAX 函式使用的大型資料表 (由資料列所組成)。 某些函式 (例如 SEARCH DAX 函式) 會掃描用於搜尋特定字元或文字的文字值,因此導致效能變慢。 此外,LOOKUPVALUE DAX 函式可能會導致速度緩慢的逐列值擷取作業。 在第二個案例中,請盡可能使用 RELATED DAX 函式。