在 Power BI 中計算環比純增純減
“先總覽,再縮放並篩選,然後按需尋找細節。” - 本·施奈德曼,《They Eyes Have It》
PowerBI最佳實踐:解析DAX語言邏輯和最佳實踐;Power BI資料視覺化技巧;分享傳播知識
今天分享不僅是一個DAX計算方法還是一種資料分析方法,可能你已經不止一次聽到過這麼一句話“大資料最重要的是特徵分析而非明細分析”。
但是什麼是”特徵“?什麼是”明細“呢?簡而言之:
當你用維度切分資料時,你正在進行”明細“分析
當你試圖計算銷售大於1000的客戶或者不同版本間的變化時, 你正在進行”特徵“分析
顯而易見,明細分析只能提供現象,而特徵分析幫助挖掘更多的洞察。本篇文章介紹的正是特徵分析的一種,讀完本文,你一定會有大有收穫。
業務情景
Salesplan 表分為不同的Version,儲存訂單預計出貨計劃
你已經展示了Sales Plan按月的每日變化 , 老闆要求按照訂單級別單獨展示變化中的純增&純減
計算步驟
確定計算顆粒度 - 訂單級別
用變數儲存每個訂單的Sales Plan變化
利用SUMX+IF函式判斷,僅當正或負值時進行聚合
DAX實現
編寫基礎度量值[Changes],詳細介紹,請閱讀 如何在Power BI中使用DAX編寫不同版本間的變化?
Changes =
—— 獲取正在篩選的version number
VAR CurrentVersion =
MAX ( ‘Version Table’[Version Number] )
—— 計算前一個version number
VAR LastVersion = CurrentVersion - 1
VAR MinVerion =
CALCULATE (
MIN ( ‘Version Table’[Version Number] ),
ALL ()
)
—— 總是返回最小的version number
VAR CVDueQty =
CALCULATE (
[Due Qty],
‘Version Table’[Version Number] = CurrentVersion
)
—— 當前version的預計出貨數量
VAR LVDueQty =
CALCULATE (
[Due Qty],
‘Version Table’[Version Number] = LastVersion
)
VAR Result = CVDueQty - LVDueQty
RETURN
IF (
CurrentVersion = MinVerion,
BLANK (),
Result
)
純減實現方式,使用變數儲存每個訂單號碼在不同版本間的變化,DAX最佳化器可以察覺到:在不同的篩選上下文中只需要計算一次ChangeTable變數,從而提高效能。
Net Decrease =
—— 每個訂單號在不同版本間的變化
VAR ChangeTable =
ADDCOLUMNS (
ALL ( ‘Sales Plan’[Order number] ),
“@Change”, [Changes]
)
—— 只有負值進行聚合運算
VAR Result =
SUMX ( ChangeTable, IF( [@Change] <0, [@Change] ) )
RETURN
Result
純增實現方式:
Net Increase =
VAR ChangeTable =
ADDCOLUMNS(
ALL( ‘Sales Plan’[Order number] ),
“Change”, [Changes]
)
VAR Result =
SUMX( ChangeTable, IF( [Change] > 0, [Change] )
)
RETURN Result
至此,DAX 編寫完成,新增weixin gongzhonghao: PowerBI最佳實踐, 回覆”純增,純減“獲取示例的檔案,進行練習吧
喜歡本文, 請幫忙點個贊哦,謝謝 :)