簡介
請觀看下列影片以了解迭代器函式。
Data Analysis Expressions (DAX) 包括一系列稱為「迭代器函式」的函式。 迭代器函式會列舉指定資料表的所有資料列,並評估每個資料列的指定運算式。 這些函式能為您提供彈性,讓您可以控制模型計算對資料進行摘要的方式。
現在您應該已經相當熟悉單一資料行的摘要函式,包括 SUM
、COUNT
、MIN
、MAX
等。 這些函式中各有對應的迭代器函式,並可由 "X" 尾碼加以識別,例如 SUMX
、COUNTX
、MINX
、MAXX
等。 此外,也有專門的迭代器函式可供執行篩選、排名、一段時間的局部加總計算等。
所有迭代器函式都具有一個特性,即是您必須傳入資料表和運算式。 資料表可以是模型資料表參考,或是傳回資料表物件的運算式。 運算式必須得出純量值。
單一資料行摘要函式 (例如 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 函式。