當前位置:
首頁 > 文史 > PowerBI 表格總計錯誤的終極解決方案

PowerBI 表格總計錯誤的終極解決方案

我在知識星球收到的問題中,關於表格和矩陣(以下統稱表格)總計行錯誤算是常見的問題之一了,不少初學者甚為不解,在Excel透視表中很常見的總計,為什麼到了更強大的 PowerBI 中,反而會出現這麼低級的錯誤呢?

並且碰到這個錯誤,很多人都束手無策,不知道該怎麼辦,或者乾脆設置為不顯示總計行了,其實沒有必要,本文就來介紹一下為什麼會出現錯誤,以及解決的辦法。

總計的計算邏輯

在PowerBI的表格中,每一個數據都是根據當前的上下文計算出來的,包括總計,也就是說,總計是按照總計行的上下文獨立計算的,而不是根據上面的明細相加得來的

為了理解上面這段話的含義,請看下面的例子。

假設要計算每個產品的訂單數量,根據訂單表中的數據,新建個度量值,

系統訂單數量 = COUNTROWS("訂單")

在矩陣中顯示如下:

計算邏輯比較簡單時,默認情況下總計行的數據是沒問題的。

假設每種產品的訂單中,都有兩個是測試訂單,也就是真實訂單比系統中的訂單數要少兩個,那麼真實訂單的度量值如下:

實際訂單數量 = COUNTROWS("訂單")-2

把這個度量值放進來,看看是什麼結果,

可以看到每一個產品的實際訂單數量都少了兩個,計算是正確的,但總計行竟然也只少了兩個,明顯與明細數據之和不符!

這就是總計的計算邏輯,它不管上面的明細數據是多少,它只是在匯總的訂單數量的基礎上減去2,於是得到了4624。

理解了這個計算邏輯,下面就來看看如何解決。

總計錯誤的解決方案

既然我們想讓總計等於上面明細之和,那麼我們就按照這個邏輯構建一個度量值,

------------------

實際訂單數量1=

IF(

HASONEVALUE("產品"[產品名稱]),

[實際訂單數量],

SUMX(

VALUES("產品"[產品名稱]),

[實際訂單數量]

)

)

-----------------

這個度量值的先利用IF函數做個判斷,如果當前上下文是產品名稱,就計算 [實際訂單數量],否則,就利用SUMX對所有的產品名稱的 [實際訂單數量]求和。

看一下計算結果,

總計行得到了正確的結果。

實際上這個度量值的寫法還可以繼續簡化,連IF判斷都省略掉,直接用SUMX.

---------------

實際訂單數量2=

SUMX(

VALUES("產品"[產品名稱]),

[實際訂單數量]

)

---------------

同樣得到了正確的結果。

這就是SUMX的強大之處,在明細行,利用VALUES函數獲取當前的上下文,計算當前上下文的訂單數量,在總計行,自動對篩選出的所有的產品名稱的數據進行匯總。

[實際訂單數量2]的寫法,就是終極解決方案。

總結

為了使總計行計算出正確的結果,終極解決方案只需兩步:

1、先正常寫一個度量值,保證明細行正確;

2、在第1步度量值的基礎上,套一層SUMX函數,即可保證明細行和總結行均正確。

然後使用第二步的度量值作為表格的值就可以了。

(如果熟練,你也可以一步寫出最終的度量值)

記住這個終極方案DAX:

SUMX(

VALUES(明細行欄位),

[明細行正確的度量值]

)

下次再遇到類似問題,你可以直接套用。


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 PowerBI星球 的精彩文章:

關於VAR,我犯了一個錯誤

TAG:PowerBI星球 |