阅读圣经丨变量引起的上下文

小伙伴们,还记得之前白茶曾留下的小彩蛋么?

就是在《变量(二)》结尾的时候,白茶曾经说过,按照我们中国式报表的需求,BOSS关注的不仅仅是第一次,而是每一次的成交日,以及每一次的成交金额,那么该如何进行呢?


数据依然采用之前使用的数据。记得之前白茶是怎么判断成交日的么?通过判断是否当日有销售额,有就是成交日,没有就不是。编写如下代码:

每一笔消费达成日期 =
VAR CQ = MAX ( 'Sheet1'[日期] ) RETURN IF ( [销售额0] <> 0, CQ )

将其放入表中查看:

会发现显示不全,什么鬼?

这个问题昨天困扰了白茶很久,白茶的初衷就是想通过度量值直接呈现出所有的日期,但是结果并不是特别的理想。甚至很多次怀疑自我到底是哪里出问题了。

后来@冬神点醒了我,就是这个可视化的表格中没有上下文。

现将[日期]这一列放入表格中:

会发现这次显示的没有问题,什么原因呢?

结合之前@嘿神说的,迭代器激活行上下文进行取值。

在上面的代码中,计算结果有四个,但是在表格中没有当前的日期上下文。这就导致度量值无法匹配相关的数据,而是只能呈现最大的数据。当日期作为上下文限制的时候,才能呈现我们想要的结果。

那么每笔日期显示了,每笔成交的花费该如何计算呢?

编写如下代码:

每笔成交花费 =
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的初学者。

下面这个知识星球是针对有实际需求的小伙伴,有需要的请加入下面的知识星球。

请在PC端查看,有部分图片无法在移动端显示。
PowerBI丨白茶