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