销售需求丨固定日期汇报
白茶最近在群里和小伙伴们吹水的时候,发现有很多报表都是需要根据具体的实际需求来进行的。很多大佬喜欢称呼这类需求为中国式报表。举一个简单的例子。
BOSS:你给我做一个近期周汇总!
白茶:我不是做了一个[年周]格式汇总么?
BOSS:花里胡哨的,咱们公司每周二进行汇报,你知道不?赶紧整,我不要你觉得,我要我觉得!
白茶:…(@##¥%!?)好。
.
.
.
木有办法啊,哎,生活总归还是得继续啊,进入正题。
(示例文件会放到知识星球中,小伙伴们可以搜索“PowerBI丨需求圈”,文章结尾处会有二维码。)
首先,这是本期的示例文件,将其导入到PowerBI中如下:
先添加一个计算列,白茶在继续说,编写如下代码:
周几 =
"周" & WEEKDAY ( '示例'[日期] )
结果如下:
说一下什么意思,现在表中,最新的销售日期是12月17日。但是公司每周三,会进行财务工作周汇报,每次汇报都是截止至每周二的近七天销售汇总。明白了吧,小伙伴们?这就是典型的中国式报表,不按照现成的代码来,因为每个公司的限定日期不固定,这就要求我们在做报表的时候视情况而定。
(这一列不参加任何计算,白茶只是想和小伙伴们说一下什么意思。)
背景介绍完毕,开始编写DAX:
基本代码:
聚合 =
SUM ( '示例'[销售金额] )
有的小伙伴们说,好弄,利用CALCULATE+FILTER模式就行了!一开始白茶也是这么处理的,咱先来看看之前的错误代码:
汇总 =
CALCULATE (
[聚合],
FILTER (
ALL ( '示例'[日期] ),
'示例'[日期] <= MAX ( '示例'[日期] )
&& '示例'[日期]
> MAX ( '示例'[日期] ) - 7
)
)
结果如下:
这么做的结果看似合理,也不能算错,但是这属于一种滚动聚合的方式,很明显不符合BOSS的需求啊!
(BOSS:就是就是,花里胡哨的!)
换个角度思考一下,我要是BOSS,我肯定只是想看每个周期累计到周二的销售数据,不想看其他日期的,这怎么办呢?别急,修改代码:
周二汇总 =
VAR CQ =
WEEKDAY ( MAX ( '示例'[日期] ) )
VAR HQ =
MAX ( '示例'[日期] )
VAR RESULT =
CALCULATE (
[聚合],
FILTER ( ALL ( '示例'[日期] ), '示例'[日期] > HQ - 7 && '示例'[日期] <= HQ )
)
RETURN
IF ( CQ = 2, RESULT, BLANK () )
结果如下:
这次的结果没问题,只有符合汇报日期的数据显示,其他的不显示。
(膜拜@冬哥!)
这里解释一下代码含义:
CQ这里是为了判断截止日期是周几。
HQ是为了获取上下文的日期。
RESULT是利用CALCULATE+FILTER的累计求和模式,求出每个七日周期的累计。
最后,利用IF进行判定,周2显示累计求和,否则显示为空。
去掉[聚合]和[汇总]项,结果如下:
看起来是不是简洁多了?剩下的就比较简单了,编写代码:
上周二汇总 =
VAR CQ =
WEEKDAY ( MAX ( '示例'[日期] ) )
VAR HQ =
MAX ( '示例'[日期] )
VAR RESULT =
CALCULATE (
[聚合],
FILTER ( ALL ( '示例'[日期] ), '示例'[日期] > HQ - 14 && '示例'[日期] <= HQ - 7 )
)
RETURN
IF ( CQ = 2, RESULT, BLANK () )
环比代码:
比率 =
DIVIDE ( [周二汇总] - [上周二汇总], [上周二汇总] )
结果如下:
小伙伴们,GET了么?
(BOSS:给冬哥点个赞!)
这里是白茶,一个PowerBI的初学者。
下面这个知识星球是针对有实际需求的小伙伴,有需要的请加入下面的知识星球。
(这个星球里面有白茶之前所有的案例文件。)
ID:Storysming
数据分析进阶之路,带你深入了解可视化技巧。