Power BI之DAX神功:答網(wǎng)友問09 計算周期之間的差異
一、網(wǎng)友提問


二、指鹿為馬

我看到你矩陣的行標(biāo)題,就知道,這是「指鹿為馬」造成的錯誤
下面這兩個度量值是你提供的:
總金額?= SUM(銷售表[金額])
同期?= CALCULATE([總金額],SAMEPERIODLASTYEAR('日期表'[Date]))?
我從你的度量值中看到了兩張表,一張銷售表,一張日期表
從你提供的表格上可以看出銷售表是多端,那日期表必然是一端。
你在日期表上找同期時間,在矩陣上用銷售表篩選,必然不對呀!
我將矩陣上的行標(biāo)題改成了日期表中的Date列就正確了:

如果,不建立日期表也是可以的。(日期表只是為了擁有更多顆粒度,如年月,星期等)
總金額?= SUM(銷售表[金額])
同期?= CALCULATE([總金額],SAMEPERIODLASTYEAR('銷售表'[日期]))?
差異度量值保持不變

三、你說對就對唄
我一直說,權(quán)威書籍上舉例只是說明一個特殊情況,并沒有讓你一定要那么做,你這樣做的結(jié)果,總金額總計顯示的是銷售表中全部日期對應(yīng)的金額,本期是396嗎?不是!如果單算差異或增長率,可以!
你看看你的差異度量值:
差異 =
? ? ? ? VAR x=[總金額]
? ? ? ? VAR y=[同期]
return
? ? ? ? IF(NOT ISBLANK(X) && NOT ISBLANK(Y),X-Y)
你要先判斷,總金額和同期這兩個度量值都不是空的時間才能相減,這不無端增加工作量嗎?
除非你是外部篩選器使用切片器才有意義,意義在于動態(tài)。
難到我們同比看的不是今年與去年嗎?領(lǐng)導(dǎo)會關(guān)心去年和前年對比嗎,前年和大前年對比嗎?
做分析,玩的不是技術(shù),看的是業(yè)務(wù),如無必要,不要炫技!
四、目的及我的做法
這種情況大多用于我們求同比、環(huán)比差異值與增長率
其實核心點就是兩個度量值做減法
我做了一個和你一樣的表格,表名Sheet1

第1步:動態(tài)日期表
日期表 = ADDCOLUMNS(?
CALENDAR(FIRSTDATE('Sheet1'[日期]),LASTDATE('Sheet1'[日期])),
"年", YEAR ( [Date] ),
"季度", ROUNDUP(MONTH([Date])/3,0),
"月", MONTH([Date]),
"周", weeknum([Date]),
"年季度", year([date]) & "Q" & ROUNDUP(MONTH([Date])/3,0),
"年月", year([Date]) * 100 + MONTH([Date]),
"年周", year([Date]) * 100 + weeknum([Date]),
"星期幾", WEEKDAY([Date])?
)
第2步:兩表連線

第3步:建立度量值
總金額 = sum(Sheet1[金額])
本期 = CALCULATE([總金額],DATEADD('日期表'[Date], 0, YEAR ), '日期表'[年]=2021)
同期=CALCULATE([總銷售],DATEADD('日期'[Date], -1, YEAR ))
差異=[本期]-[同期]
增長率 = DIVIDE([本期]-[同期],[同期])

《孫興華講PowerBI火力全開》PowerBI必學(xué)課程
https://www.bilibili.com/video/BV1qa4y1H7wp
《DAX神功》文字版合集:
https://www.bilibili.com/read/readlist/rl442274
《DAX神功》視頻版合集:
https://www.bilibili.com/video/BV1YE411E7p3
PowerBI(DAX函數(shù))、PowerQuery(M函數(shù))、Python辦公自動化、Python爬蟲、Python數(shù)據(jù)分析、ExcelVBA、WordVBA、AccessVBA、MySQL等等
https://www.bilibili.com/read/cv10222110?