时间智能函数
时间智能是一个系列时间函数的打包来解决时间对比的问题。我们在业务的数据分析中经常有诸如此类的问题,与去年同期比较怎么样?与上个月比如何?截至到某一日我们今年完成了多少?...时间智能函数可以让你随心所欲地拨动时间轴,就好像时光机,选择了你想要的时间点,就可以调取那部分的数据。
1
日历表
使用时间智能函数的前提是要有一张日历表。日历表分为两种,标准的和定制的。标准的即我们常用的日历,一年12个月365天(闰年366天),时间智能函数默认会使用标准日历来计量。
那么为什么会有定制的日历表呢?很多时候数据计量的时间并不是按照标准日历,比如一些美企用445的周历(每个季度的第一、二月是4周,第三个月是5周),很多中国香港上市公司的财务年度是4月1日开始到3月31日结束,还有比如我们分析月之间数据时二月份的天数比其他月份少会影响公平性比较...
简而言之,有很多情况我们需要一个定制的时间定义来做比较。标准和定制两种类型的应用都很常见,我们都要学习,次序为先来学做标准的,再来学定制的方法。
假设我们已经有了一张标准日历表,它是每天一行,连续无间隔的,并且已经做好了像年份季度、年份月份的这样的类别列。这张日历表是使用时间智能函数的前提。
2
时间智能函数
时间智能函数是一个系列,如果在微软官网公式库里搜索你会看到共35个函数。对于这类函数的学习我们不必记住所有函数的细节,我们只需要知道它们的存在,随用随查就可以。
我先把这些函数按照类别做个划分时间区间、时间点、计算类。
1)顾名思义时间区间指的是一个有始有终时间段。(datesytd, dateadd, sameperiodlastyear, previousmonth, nextmonth, parallelperiod, datesbetween, datesinperiod)
2)时间点即某一特定日期,返回的是一个唯一值的表。(firstdate, lastdate, endofmonth, startofmonth)
时间区间和时间点可以配合使用来精准地定位你想要的时间段。因为时间区间和时间点的函数返回的都是表,所以它们经常作为Calculate中的筛选条件来使用。
3)计算类(可替代)这个类别的意思是这几个函数可以用Calculate加上的时间区间、时间点函数来替代,这类函数有totalytd, closingbalencemonth, openingbalencemonth。比如totalytd我们完全可以用dateytd做筛选条件+Calculate执行计算来达到同样的效果。所以他们跟前两类不同,是一个完整的计算式,返回的是值而不是表。它们可以使表达的公式变短,但在运算的意义上是没有差别的。
显然DAX赋予了我们非常完善的公式体系,想要定位一个时间的方法有很多。你想要2017年4月,你可以说2017年4月,2017年4月1日-2017年4月30日,2016年4月的下一年同期,2017年1月后数3个月,2017年5月的上个月...无论用哪种方法,只要定位到你想要的时间都是正确的。哈哈,就怕你有选择恐惧症...
最后,再次做一个嘱咐,我们没有必要把每个公式背下来,重要的是了解用法和意识到它们的存在。等到使用时,再把它们翻出来。
祝好, 微信公众号PowerBI大师