销售需求丨固定日期汇报

白茶最近在群里和小伙伴们吹水的时候,发现有很多报表都是需要根据具体的实际需求来进行的。很多大佬喜欢称呼这类需求为中国式报表。举一个简单的例子。

BOSS:你给我做一个近期周汇总!

白茶:我不是做了一个[年周]格式汇总么?

BOSS:花里胡哨的,咱们公司每周二进行汇报,你知道不?赶紧整,我不要你觉得,我要我觉得!

白茶:......(@##¥%!?)好。

.

.

.

木有办法啊,哎,生活总归还是得继续啊,进入正题。

(示例文件会放到知识星球中,小伙伴们可以搜索“PowerBI丨需求圈”,文章结尾处会有二维码。)

首先,这是本期的示例文件,将其导入到PowerBI中如下:

image

先添加一个计算列,白茶在继续说,编写如下代码:

周几 = 
"周" & 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 ( [周二汇总] - [上周二汇总], [上周二汇总] )

结果如下:

(BOSS:给冬哥点个赞!)

小伙伴们❤GET了么?

白茶会不定期的分享一些函数卡片

(文件在知识星球[PowerBI丨需求圈])

这里是白茶,一个PowerBI的初学者。

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

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