通过前面两节对时间智能函数的讲解,想必大家都这个能称之为PBI任督二脉的时间智能函数已经了解得差不多了吧!那本节还有最后几个函数给大家收个尾!看完本节,从此大家就可以修练自己的盖世神功了。
1、SAMEPERIODLASTYEAR 返回当前筛选上下文中前一年的一组日期
语法:
SAMEPERIODLASTYEAR ( <日期列> )
兄弟们,别看这个函数的语法简单,但是它的使用率可不低哦,至少在我的工作中是这样的。简单理解它就是一个计算去年同比的函数。
老规矩,我们还是通过一个实际案例来说明吧。
大家看到有这样的一个数据,只有上海的7月1日-7月3日有20年的数据,其余都是21年数据。那我们试试SAMEPERIODLASTYEAR的用法吧
SAMEPERIODLASTYEAR = CALCULATE(sum('业务表'[件量]),SAMEPERIODLASTYEAR('业务表'[日期]))
大家看到只有20年有的日期才会返回结果,否则一律返回空。不知道大家有没有学废这个函数。那有了年同比,是不是应该有季同比、月同比、周同比啥的呢?在这里很遗憾的告诉大家,没有!!!它就是个独子,为什么呢。我个人猜想会不会是由于已经有了DATEADD、FIRSTNONBLANK等等好多函数都能满足这些同比功能,所以就没有开发了。不过如果仅仅只是计算年同比的话,我还是觉得SAMEPERIODLASTYEAR更加简单方便。
2、TOTALMTD 在当月至今的所有日期中计值表达式。
语法:
TOTALMTD ( <表达式>, <日期列>, [<筛选器>] )
那通过注释和长相,这个函数是不是有点似曾相识呢?没错,就是前面讲过的DATESMTD / DATESQTD / DATEYTD。那今天的这个TOTALMTD可比他们的功能强大多了,当然也会复杂那么一点点,不过 只要掌握了那这些都不是事。那么它到底强大在哪里呢?我们直接上案例吧!
TOTALMTD = TOTALMTD(sum('业务表'[件量]),'业务表'[日期])
可以看出它能通过行上下文对件量做一个累加,这里确实和DATESMTD效果一样。但是同样是累加函数,TOTALMTD是不是就不用CALCULATE的协助了,完全能够自给自足。
如上图所示,我把第三参数的筛选器带上后,那么结果只反馈被筛选了的结果。
如果没有其它筛选上下文,则默认展示最后一个月份的所有件量相加。
怎么样这个函数是不是又为你解决了不少麻烦呢,既然这么好用,怎么可能会没有兄弟呢,同样与它类似的还是TOTALQTD、TOTALYTD,不用解释大家就会知道一个是季累加一个是年累加。在用法上和TOTALMTD是一样的,我就不讲了。
3、PARALLELPERIOD 根据当前上下文中的日期和给定的时间间隔,返回一组并行的完整日期周期。
语法:
PARALLELPERIOD ( <日期列>, <偏移量>,Month/ Quarter/Year)
讲到这个函数,我一惊,是不是很前面有个函数用法一模一样的啊!可能就是前面的第三参数多了一个DAY的选择。
DATESINPERIOD ( <日期列>, <起始日期>, <偏移量>,Day/Month/ Quarter/Year)
既然这样那我就不再废话,给大家罗里吧嗦的了啊。
总结:讲到这里,所有的时间智能函数就都给大家过了一遍。恭喜你们已打开任督二脉。接下来什么降龙十八掌、凌波微步等等等等,就看我们想不想练了。不吹牛逼了!最后还是给大家做个总结吧!
1、建议一定要搞透的函数:DATEADD、DATESBETWEEN、TOTALMTD(以及它的兄弟)、SAMEPERIODLASTYEAR
2、基本所有时间智能函数都能返回一个表,除了TOTALMTD(以及它的兄弟)
3、CLOSINGBANLANCE、FIRSTNONBLANK、LASTNONBLANK可以返回任意数据类型,比如数字、日期、文本等。
4、FIRSTDATE、LASTDATE返回的只是一个日期。
大家一定要记住:所有的这些函数一定要多看,多练,多比,找出它们的相同点和不同点,最后咱们用起来的时候才会游刃有余,不至于走火入魔。时间智能函数到这里就彻底结束了,感谢大家的阅读。