欢迎光临散文网 会员登陆 & 注册

Power BI之DAX神功:答网友问09 计算周期之间的差异

2021-10-24 11:02 作者:孙兴华zz  | 我要投稿

一、网友提问

二、指鹿为马

我看到你矩阵的行标题,就知道,这是「指鹿为马」造成的错误

下面这两个度量值是你提供的:

总金额 = SUM(销售表[金额])

同期 = CALCULATE([总金额],SAMEPERIODLASTYEAR('日期表'[Date])) 

我从你的度量值中看到了两张表,一张销售表,一张日期表

从你提供的表格上可以看出销售表是多端,那日期表必然是一端。

你在日期表上找同期时间,在矩阵上用销售表筛选,必然不对呀!

我将矩阵上的行标题改成了日期表中的Date列就正确了:

如果,不建立日期表也是可以的。(日期表只是为了拥有更多颗粒度,如年月,星期等)

总金额 = SUM(销售表[金额])

同期 = CALCULATE([总金额],SAMEPERIODLASTYEAR('销售表'[日期])) 

差异度量值保持不变

三、你说对就对呗

我一直说,权威书籍上举例只是说明一个特殊情况,并没有让你一定要那么做,你这样做的结果,总金额总计显示的是销售表中全部日期对应的金额,本期是396吗?不是!如果单算差异或增长率,可以!

你看看你的差异度量值:

差异 =

        VAR x=[总金额]

        VAR y=[同期]

return

        IF(NOT ISBLANK(X) && NOT ISBLANK(Y),X-Y)

你要先判断,总金额和同期这两个度量值都不是空的时间才能相减,这不无端增加工作量吗?

除非你是外部筛选器使用切片器才有意义,意义在于动态。

难到我们同比看的不是今年与去年吗?领导会关心去年和前年对比吗,前年和大前年对比吗?

做分析,玩的不是技术,看的是业务,如无必要,不要炫技!

四、目的及我的做法

这种情况大多用于我们求同比、环比差异值与增长率

其实核心点就是两个度量值做减法

我做了一个和你一样的表格,表名Sheet1

表名:Sheet1

第1步:动态日期表

日期表 = 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必学课程

https://www.bilibili.com/video/BV1qa4y1H7wp

《DAX神功》文字版合集:

https://www.bilibili.com/read/readlist/rl442274

《DAX神功》视频版合集:

https://www.bilibili.com/video/BV1YE411E7p3

PowerBI(DAX函数)、PowerQuery(M函数)、Python办公自动化、Python爬虫、Python数据分析、ExcelVBA、WordVBA、AccessVBA、MySQL等等

https://www.bilibili.com/read/cv10222110 


Power BI之DAX神功:答网友问09 计算周期之间的差异的评论 (共 条)

分享到微博请遵守国家法律