您當前的位置:首頁 > 書法

在 Power BI 中計算環比純增純減

作者:由 PowerBI最佳實踐 發表于 書法時間:2022-03-08

​“先總覽,再縮放並篩選,然後按需尋找細節。” - 本·施奈德曼,《They Eyes Have It》

在 Power BI 中計算環比純增純減

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最佳實踐, 回覆”純增,純減“獲取示例的檔案,進行練習吧

喜歡本文, 請幫忙點個贊哦,謝謝 :)

標簽: version  DAX  var  change  Result