Power BI数据分析:任意时间段对比
对于正常的有规律的时间段比较,像同比和环比,以前写的比较多,在PowerBI中也很容易计算。业务分析中还会遇到的一种场景是,选择任意区间的两组日期,展示其数据对比情况。
比如对两次促销活动的效果进行对比分析,两次促销活动期间,可以是任何时间段,没有对应关系,天数也可能不一样,那么如何快速的比较这两个时间段的数据呢?
以PowerBI星球常用的数据模型为例,已经有订单表以及对应的日期表、产品表,模型如下:
想要达到的效果是,通过两个日期切片器,来选择两个时间段,报告中分别展示这两个时间段的产品销售额。
下面来看看PowerBI如何实现这种分析需求。
1、建立'比较日期表'
因为需要两个互不影响的日期切片器,来选择不同的时间段,所以两个日期表是必须的,建立比较日期表很简单,直接复制原日期表就可以了,点击新建表,输入:
比较日期表 = '日期表'
2,'比较日期表'与原'日期表'建立非活动关系
如果两个日期表直接建立物理关系,依然会相互筛选,无法生成两个独立的时间段,所以这里的做法是建立非活动的虚线关系,关系图如下:
关于非激活关系请参考:认识Power BI中的非活动关系
3,建立度量值
有了上面的模型,就可以建立度量值了,当期收入很简单:
当期收入 = SUM( '订单表'[销售额] )
比较期间的收入,就需要利用USERELATIONSHIP函数来激活上面的非活动关系,度量值如下:
这个逻辑并不复杂,结合上一步建立的数据模型来理解:清除原日期表的筛选,并激活非活动关系,这样'比较日期表'的日期,就可以通过原日期表来筛选订单表,返回比较期间的收入。
该度量值用到的REMOVEFILTERS是今年新的DAX函数,相当于ALL函数,这里也可以直接用ALL函数来替代,不过它相对更容易理解,通过函数名称本身,就能猜测到它是什么功能。
4、展现结果
利用原日期表与比较日期表中的日期,生成两个切片器,将当期收入和比较期间收入度量值放入的矩阵中,就可以显示出某产品任意两个期间的收入对比:
当然也可以利用图表来更直观的展示:
这样就实现了比较不同期间数据的效果。
不同时间段的比较分析很有用,上面的做法不改变原模型关系,只是通过两个日期表的非活动关系来实现,简化了模型的处理,当然方法不止一种,大家遇到类似的需求时可以尝试。