小伙伴们,还记得之前白茶曾留下的小彩蛋么?
就是在《变量(二)》结尾的时候,白茶曾经说过,按照我们中国式报表的需求,BOSS关注的不仅仅是第一次,而是每一次的成交日,以及每一次的成交金额,那么该如何进行呢?
数据依然采用之前使用的数据。记得之前白茶是怎么判断成交日的么?通过判断是否当日有销售额,有就是成交日,没有就不是。编写如下代码:
代码语言:txt复制每一笔消费达成日期 =
VAR CQ = MAX ( 'Sheet1'[日期] ) RETURN IF ( [销售额0] <> 0, CQ )
将其放入表中查看:
会发现显示不全,什么鬼?
这个问题昨天困扰了白茶很久,白茶的初衷就是想通过度量值直接呈现出所有的日期,但是结果并不是特别的理想。甚至很多次怀疑自我到底是哪里出问题了。
后来@冬神点醒了我,就是这个可视化的表格中没有上下文。
现将日期这一列放入表格中:
会发现这次显示的没有问题,什么原因呢?
结合之前@嘿神说的,迭代器激活行上下文进行取值。
在上面的代码中,计算结果有四个,但是在表格中没有当前的日期上下文。这就导致度量值无法匹配相关的数据,而是只能呈现最大的数据。当日期作为上下文限制的时候,才能呈现我们想要的结果。
那么每笔日期显示了,每笔成交的花费该如何计算呢?
编写如下代码:
代码语言:txt复制每笔成交花费 =
VAR CQ = [每一笔消费达成日期]
VAR DQ =
IF (
SUM ( Sheet1[销售额] ) > 0,
CALCULATE (
[每一笔消费达成日期],
FILTER (
ALL ( Sheet1[日期] ),
'Sheet1'[日期] < CQ
&& CALCULATE ( SUM ( Sheet1[销售额] ) ) > 0
)
),
BLANK ()
)
VAR HQ =
FILTER ( ALL ( Sheet1[日期] ), 'Sheet1'[日期] <= CQ && 'Sheet1'[日期] > DQ )
RETURN
CALCULATE ( SUM ( Sheet1[花费] ), HQ )
结果如图:
总计栏显示错误,以后会说,在这里就不赘述这个了,咱来说说别的。
说一下每一部分的含义:
CQ是上面的代码,求得是每一组销售达成的日期。
DQ开头用IF是剔除没有销售额的日期,使其不显示;CALCULATE是为了重新定义当前环境;最后利用FILTER筛选出日期这一列中小于最后一笔成交日期,并且销售额不为空的日期,即上一笔成交日。
HQ筛选出每一笔成交的时间段,相当于一组日期被切断,隔断点就是成交这一信号。
之后输出的结果就是每一次成交时,花费的汇总。
最终,就达到了中国式报表的需求,每一笔成交日,每一笔成交花费,再利用IF判断添加一个销售金额,妥妥滴达到我们期望的效果。
小伙伴们❤GET了么?
白茶会不定期的分享一些函数卡片
(文件在知识星球PowerBI丨需求圈)
这里是白茶,一个PowerBI的初学者。