美文网首页BI学习笔记
换个思路丨环比断点

换个思路丨环比断点

作者: Fabric丨白茶 | 来源:发表于2020-06-26 09:53 被阅读0次

2019年的年末,白茶曾经写过一期《TOPN函数丨环比断点》的文章,主要是利用TOPN函数来解决实际销售挂蛋(“当日无数据”)的情况。

然而,随着对DAX函数的深入了解,白茶发现还有其他的解决思路!

这是白茶之前使用的案例数据。

这是之前,白茶利用TOPN函数计算的结果图。

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

先来看看之前的代码:

TOPN日环比 =
IF (
    HASONEFILTER ( '示例'[时间] ),
    VAR BCMAX =
        MAX ( '示例'[时间] )
    VAR TP =
        TOPN ( 1, FILTER ( ALL ( '示例'[时间] ), '示例'[时间] < BCMAX ), '示例'[时间], DESC )
    VAR LS =
        CALCULATE ( '示例'[销售], '示例'[时间] = TP )
    RETURN
        IF ( LS <> BLANK (), DIVIDE ( '示例'[销售] - LS, LS ), BLANK () )
)

这段代码主要是利用TOPN函数,忽略事实表日期断档的问题,通过迭代整个表对数据进行逐行的筛选,从而达到断档环比的效果。

虽然解决了断档的问题,但是代码显得臃肿,不利于理解整体的代码结构。

那么换个思路如何进行呢?

LASTNONBLANK函数

LASTNONBLANKVALUE函数

关于这两个函数的基础参考,白茶已经写过文章了,这里就不赘述了。

主要谈谈思路:

首先是这两个函数是根据计算表达式,来获取有数据所对应的第一参数,仔细思考一下,这不和TOPN函数有异曲同工的地方么?

其次,这两个函数,相对于TOPN函数在编写代码的时候能够更优化一些。

代码1:

LASTNONBLANK日环比 =
VAR BCMAX =
    MAX ( '示例'[时间] )
VAR TI =
    LASTNONBLANK ( FILTER ( ALL ( '示例'[时间] ), '示例'[时间] < BCMAX ), '示例'[销售] )
VAR LS =
    CALCULATE ( '示例'[销售], TI )
RETURN
    DIVIDE ( '示例'[销售] - LS, LS )

代码2:

LASTNONBLANKVALUE日环比 =
VAR BCMAX =
    MAX ( '示例'[时间] )
VAR TI =
    LASTNONBLANKVALUE (
        FILTER ( ALL ( '示例'[时间] ), '示例'[时间] < BCMAX ),
        SUM ( '示例'[销售金额] )
    )
RETURN
    DIVIDE ( TI - '示例'[销售], TI )

结果:

从结果上看,三者的结果是没有任何区别的,但是后两者的优化度高一些。

解释一下代码含义:

BCMAX是为了将最大日期定义为常量,与当前上下文进行对比排序使用。

TI的话这里是有区别的:

LASTNONBLANK是为了获取小于最大日期的上一行“表”数据,求的是上一行销售数据的具体日期;后续需要利用CALCULATE函数进行对应数据的计算。

而LASTNONBLANKVALUE是直接获取小于最大日期的上一行日期的具体数据值,也就是省略了后续的CALCULATE函数计算这一部分。

输出结果都是通过DIVIDE函数进行计算的。

三个函数在这里可以达到同样的结果,但是各有各的用处。

TOPN可以返回具体的几行;

LASTNONBLANK可以求得最后的非空日期;

LASTNONBLANKVALUE函数可以直接求得最后非空的数据。

三个函数各有优劣,也是各有用途。

小伙伴们,GET了么?

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

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

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

相关文章

  • 换个思路丨环比断点

    2019年的年末,白茶曾经写过一期《TOPN函数丨环比断点》的文章,主要是利用TOPN函数来解决实际销售挂蛋(“当...

  • 娟娟新月(8)我要考研

    “亚娟,有些事情是可以换个思路来想的!”她放下刀叉。“换个思路,一切都会不一样的!” “换个思路,怎么换个思路呢?...

  • 换个思路

    每个周未,总免不了被老婆大人叨叨几句,说什么一到周未就知道玩,除了呆家里啥也不干,每个月就只知道守着那么几块钱的工...

  • 换个思路?

    今天又领悟了一个股谚的用法:涨时看领涨,跌时看领跌。 利用双均线系统,结合实时监控矩阵,能够很容易的将指数按照某个...

  • 换个思路

    下午,校长叫我修改一下“进入校门测温登记表”,说是之前的表一个班级一天就需要一张纸,太浪费了。 于是,按照...

  • 换个思路

    折磨了我将近2周的工作流,今天跟技术大拿讨论了一下觉得并不适配目前的工作,然后交由他去改造一下,然后再接着...

  • 换个思路。

  • 换个思路

    写了一段时间的文字,刚开始时真的是有感而发,写的也行云流水。写的多了以后,却不知道该写什么,似乎每天都是那些...

  • 换个思路

    今天在某音上发短视频,换个思路,前面半段是分享下午茶的模式,也是沉浸式,到了后半段把面包带上,原本以为今天的流量还...

  • 换个思路

    最近在看《别人怎么对你,都是你教的》,里面有提到强势与示弱的说法,这里面的说法是目前为止我最容易接受的。他说到,没...

网友评论

    本文标题:换个思路丨环比断点

    本文链接:https://www.haomeiwen.com/subject/prktvhtx.html