PowerBI DAX 从日期角度分析业务指标解决方案

从日期角度分析问题,在Power BI中用DAX实现基本上会基于时间智能函数处理。

PowerBI DAX 从日期角度分析业务指标解决方案_第1张图片

由于PowerBI DAX中时间智能函数众多,有必要梳理形成一个统一的模式。它能帮助业务(尤其常常是财务)解决的问题包括但不限于:

  • 本期至今指标(XTD):年度至今(YTD),季度至今(QTD),月度至今(MTD)等
  • 上期同期指标:上年同期,上季同期等
  • 上期全部
  • 基于时间区间的对比

订单指标集

以示例目的,选择订单作为业务对象,其常见指标集包括:

  • 订单 销售额 合计
  • 订单 利润率 合计
  • 订单 数量

为了使用方便,设置一个 动态的 订单指标,包括以上所有指标,称为 [订单 指标]

日期表系列

首先介绍 日期表,初次接触PowerBI DAX会认为日期表是一个多列的表,其实日期表的最简单形式仅仅是一个 单列日期 构成的表,如果用DAX来实现,只需要写:

日期表 = CALENDAR( 开始年份 , 结束年份 )

即可。由于这种单列的日期表不能满足复杂的实际业务需求,包括从不同的日期粒度(日,周,月,季,年等)来计算指标以及一些动态灵活的需要,这里总结常用的三种日期表,如下:

  • 日期表 【了解详情】
  • 日期区间表 【了解详情】
  • 相对日期表 【了解详情】

关于日期表的讨论不再赘述。

日期表可以采用DAX公式或Power Query公式均可构建,以上范例提供了详细完整的Power Query公式构建方法。

为了集中于本案例,这里只使用日期表,并使用[订单 指标]度量值作为示例。

本期至今 YTD,QTD,MTD,WTD

常用的本期至今指标包括包括本年至今(Year To Date),本季至今(Quarter To Date),本月至今(Month To Date),本周至今(Week To Date),计算如下:

PowerBI DAX 从日期角度分析业务指标解决方案_第2张图片

WTD并非有类似的函数,因此需要自行构建,如下:

PowerBI DAX 从日期角度分析业务指标解决方案_第3张图片
 提示
TOTALYTD、TOTALQTD、TOTALMTD有等价的写法,可以仅使用上述方法。

上期同期 PY,PQ,PM

常用的上期同期指标包括上年同期(Previous Year),上季同期(Previous Quarter),上月同期(Previous Month),上周同日(7日前),计算如下:

PowerBI DAX 从日期角度分析业务指标解决方案_第4张图片
 提示
SAMEPERIODLASTYEAR 可产生与 DATEADD ( '日期'[Date], -1, YEAR ) 同样的效果。
很少有上周同期的业务叫法,更适合称为【7日前指标】,就其本质也是上周同期的概念,故放在这类指标中。

上期全部 PYT,PQT,PMT,PWT

上期同期 不同,上期全部 将获取到上期的全部日期,例如:2017年5月的上年同期是2016年5月,而2017年5月的上年全部是2016年全年。常用的指标包括:上年全部(Previous Year Total),上季全部(Previous Year Total),上月全部(Previous Year Total),上周全部(Previous Week Total),计算如下:

PowerBI DAX 从日期角度分析业务指标解决方案_第5张图片

可以看出,这里对有关周的计算已经变得更加复杂。DAX时间智能函数一般实现到月的级别,因为对于周的处理是并没有统一的方案的,在国际上也存在一些标准方案,实际还是根据不同公司的业务周期或考核周期进行,会有实际差别。

基于时间区间的对比

将当前与过去的不同时间区间进行对比可以得出一些重要的指标,包括:

  • 本年至今 对比 上年全部;
  • 当期 对比 全年同期 形成同比;
  • 当期 对比 上期 形成环比;
  • 差异的增长率。

根据实际业务的需要还可能产生更多的排列组合,这里仅列举上述常用指标计算,如下:

PowerBI DAX 从日期角度分析业务指标解决方案_第6张图片

总结

上述内容的讨论暂未涉及期初期末类,以及并为详细展开关于周有关的计算,它们都可以专门来进行讨论。对于偏向技术类的业务人员,关于时间智能可以注意以下几点重要内容:

  • 时间智能函数通常作为 CALCULATE 的筛选器参数
  • CALCULATE 的筛选器参数都是表(ALL及设置关系类除外,此处不需了解)
  • 因此所有时间智能类函数都返回表

这其实在说,例如: LASTDATE( 日期[日期] ) 是时间智能函数;而时间智能函数其实返回的是表(虽然LASTDATE从字面意思上是一个值,由于它是一行一列的表,因此也可以作为值,但本质是表)。

时间智能函数还有一些需要注意的问题:

  • 时间智能函数 不一定必须 配合日期表,但最好有独立的日期表,而不使用系统自带的
  • 日期表应该尽量用日期类型的列作为关系列

案例下载:

链接:https://pan.baidu.com/s/1Q-qjFk3CXG-spTnUhe5aNQ
密码:biw7

你可能感兴趣的:(PowerBI DAX 从日期角度分析业务指标解决方案)