第24天知识点:EARLIER函数
今天我们接着来讲一讲年轻小伙拜别百姓,启程出发之后的故事。
小伙连夜赶路,次日清晨,正要往前走时,突然看到前方有一什么东西挡住了去路。
走近几步,从身形上看感觉是一小孩,再走近细看,这小孩却长了一张耄耋老人的脸。
但其实,这只是一块长得像人的石头罢了。
虽然小伙对此物有一些好奇,但只当作是一块形状奇特的普通石头,一边在心里想:这石头长得有点早熟啊,像个“小老人”,一边正准备从石头左边绕过去,这时,石头却跟着往左边移动,年轻小伙又试着往右走,石头同样也跟着往右移动。
这愈发引起年轻小伙的好奇。以他多年行走江湖的经验,此物必有蹊跷。
难道是百姓们遗落在外的宝物吗?
为了一探究竟,年轻小伙带上“小老人”回去寻找百姓。恰逢百姓们正拿出DEF钟罩在对抗老维家族的恶势力。
年轻小伙刚踏进百姓们布下的DEF保护圈,“小老人”突然幻化成真人,并且还帮助DEF过滤了一部分恶势力,让DEF更高效的发挥自己的作用。
这让小伙大为震惊,原来“小老人“在等DEF啊,没遇到DEF之前只是一块奇形怪状的石头,遇到了DEF便生龙活虎,颇有双剑合璧天下无敌的架势啊。
BI星球真是卧虎藏龙之地,没想到一块石头竟让DEF发挥如此功效。感觉叫“小老人“有点不太尊重,也不好听,不如改叫EARLIER好了。
从此,EARLIER牵手DEF家族担起了保护百姓们的重任。
故事讲完了,小伙伴们知道今天的主人公是谁了吗?
没错,就是EARLIER函数。
我们仍然先通过一张函数卡片了解一下EARLIER函数的具体用法。
下面我们通过一个案例来看看EARLIER函数在实际场景中的应用。
A公司有一张2023年四季度经营情况表,里面记录了各省份每月的销售额及目标,涉及字段如下图所示:
数据分析员小张利用该表制作了一张各省份的销售情况表,如下图所示:
业务部门需要在上表的基础上增加与前一名省份的销售额差距,便于督促差距少的省份赶超前一名,为年末冲刺收官营造竞争氛围,也就是想要达到下表这样的效果。
请问小张该怎么做呢?
可以看到小张需要增加的字段:【与前一名的差距】
分析一下:
【与前一名的差距】=【前一名省份的销售额】-【当前省份的销售额】
【当前省份的销售额】是已知字段,所以我们只需要计算出【前一名省份的销售额】。
【前一名省份的销售额】怎么计算呢?
首先得知道各省份的销售额排名,才能知道对应的前一名是谁,对吧?
看着很简单,因为我们已经作过降序处理了,所以一眼就能知道排名以及对应的前一名是谁。
但是,在BI中如何计算排名呢?
组件样式>>格式>>显示序号?
有的小伙伴是不是已经想到这种解决方法了,甚至在暗自窃喜。
不、不、不,千万不要把格式里的序号当作排名哦~
格式格式,只是展示的一种样式,并不能参与字段间的计算。
所以这无法满足我们获取到排名之后,通过排名去找到对应的销售额。
那正确的做法是什么呢?
添加计算字段—输入公式:
DEF(COUNTD_AGG(省份)+1,[省份],[当前省份的销售额>EARLIER(当前省份的销售额))])
上图含金量极高,各位小伙伴一定要耐心仔细看完。
得到排名之后,接着我们只需要取到排名前一名的省份的销售额就可以了,也就是跨行取数。
依然借助DEF和EARLIER函数。
首先,我们计算的仍然是销售额,所以第一参数仍然是SUM_AGG(销售额)
其次,我们还是按照省份会汇总的,所以第二参数仍然是[省份]
那难就难在第三参数了,小伙伴们可以想一想:
如何让值等于上一行的值呢?也就是实现EXCEL中的A3=A2的效果呢?
获取到前一名也就是上一条的数据,可以设置过滤条件为:
上一条数据的排名+1=当前的排名
当前的排名是:EARLIER(当前省份销售额排名)
上一条数据的排名:其实对应的是【当前省份销售额排名】字段
所以通过[当前省份销售额排名+1=EARLIER(当前省份销售额排名)]判断过滤出来的就是我们想要获得的上一条销售额数据了。
有点难理解,对吗?
没关系,我们通过大家熟悉的EXCEL演示一遍这个公式所代表的作用是什么?
这个大家应该都很能理解吧,先计算出前一省份排名,再根据对应的排名去锁定对应的销售额。
综上呢,对应的函数公式应该是:
DEF(SUM_AGG(销售额),[省份],[当前省份销售额排名+1=EARLIER(当前省份销售额排名)])
最后,我们通过【前一名省份的销售额】-【当前省份的销售额】就可以得到【与前一名的差距】了。
最终结果如下图:
今天的函数及公式有点复杂,小伙伴们可以动手练习一下加深理解。
顺便再提醒几点:
今天的学习内容就到这里,感兴趣的小伙伴可以自己动手试一试~
|