#PowerBi 10分鐘學會,以X為結尾的聚合函數

2023-05-11 12:01:21

前言

Power BI中,我們經常需要對資料進行聚合計算,比如求和、求平均、求最大值等。

Power BI提供了一系列的聚合函數,可以用來對錶中列的值進行聚合然後返回一個值。這些函數通常只需要一個引數,就是要聚合的列名。如SUM(‘銷售表’[銷量]),就是求銷售表裡的銷量總和。

但是有時候,我們需要對更復雜的表示式進行聚合計算,而不是單純的一列。今天就來學一下迭代函數解決這類問題。

為了便於理解,本文結合excel分別做兩個例子,一個excel版本,一個BI版本,對比學習。

本文範例資料表及BI模型構成

銷售表如下:

產品表如下:

BI資料模型

一:聚合函數和迭代函數

1.1參照物件不同

聚合函數只接受單列參照(劃重點),而迭代函數可以支援多列計算而聚合

1.2語法範例

聚合函數: SUM(‘銷售表’[銷量])

迭代函數: SUMX(表,表示式)

X為結尾的聚合函數非常強大和靈活,它們可以讓我們對複雜的表示式進行聚合計算,而不受列或資料型別的限制。它們也可以和其他的表函數配合使用,比如FILTERRELATEDTABLE等,來實現更多的功能。

1.3  X函數羅列

SUMXCOUNTXMINXMAXXPRODUCTX等等

X為結尾的聚合函數有很多種,它們的區別在於最後的聚合方式不同。例如,SUMX是求和,MINX是求最小值,MAXX是求最大值,COUNTX是計數等等。它們的用法和語法都很類似,只要掌握了其中一個,就可以很容易地使用其他的。

1.4  為什麼要用SUMX這類的迭代函數

日常工作中如果我們要計算一個銷量,那麼SUM(銷售表[銷量])就是計算銷售表中銷量列的所有值的和。

但是有時候,我們需要對更復雜的表示式進行聚合計算,而不是單純的一列。比如,我們想要計算每個產品的總銷售額,但是銷售表中又沒有產品的售價時,這個表示式涉及到兩個表:銷售表和產品表,它們之間有一個關聯關係。如果我們直接用SUM函數來計算銷售總和,就會得到錯誤的結果,因為SUM函數不能處理這樣的表示式(因為涉及多列運算)。這時候,我們就需要用到以X為結尾的聚合函數。

二:案例分析

假設現在我們有兩張資料來源表。

目標是求得對應各個產品的總銷售額。

銷售表如下:

產品表如下:

2.1 Excel中的計算

如果是在excel中,我們可以根據產品名,用vlookup去匹配產品表中的產品售價,然後通過售價與銷量相乘得到總的銷售金額

然後透視表彙總結果

通過excel的實現中,最關鍵的其實就是新增列,然後通過新增列的值去求和在彙總。

2.2 POWERBI,DAX實現

產品銷售金額 = SUMX('銷售表','銷售表'[銷量]*RELATED('產品表'[售價]))

通過迭代函數只需要一行程式碼。第二引數可以是表示式,這裡的related函數相當於上面excel中的vlookup,使得匹配上的值和銷售進行了相乘(這裡大家可以理解為在bi中我們新增了一個虛擬行去替代excel中我們新增的兩列,而SUMX函數針對虛擬的行,

逐行進行表示式的計算,最後針對彙總的虛擬行,進行了SUM求和)

最後,在bi中新建一張表,拉到值內,和excel中是一樣的效果。

 其他,以X結尾的迭代函數,也和SUMX類似,大家可以舉一三反,多在自己的業務中應用,來提高對這類函數的認識和熟練度。