1. 营销策划师首页

环比自然日期维度的业务数据(图)日期计算需要有个日期表

环比自然日期维度的业务数据(图)日期计算需要有个日期表上面的数据连个日期维度都没有,如何计算每一期的同比和环比呢?同样的逻辑,计算上年同期的数据,就是期间序号减去6的期间,度量值如下:有了上期和上年同期的数据,计算同比和环比就很简单了:这样就完成了同比和环比的指标计算。这篇文章介绍的是一个普遍意义上的时间指标计算思路,无论是可以利用时间智能函数的月度、季度同比环比,还是没有时间智能函数的周、旬等维度的同比环比,都可以按这个思路轻松实现。

对于自然日期维度的业务数据环比,在PowerBI中可以轻松的使用时间智能函数来进行各种时间指标的计算(各种时间指标的度量值,让你一次看个够),但如果不是按标准的日历,甚至都没有日期维度,该怎么计算呢?

比如下面这个业务数据,每个订单时间并不是按日期来区分的,而是按期间来划分,一年划分为6个期间,分别为P1、P2……

上面的数据连个日期维度都没有,如何计算每一期的同比和环比呢?

其实计算逻辑与日期维度并没有什么不同,日期计算需要有个日期表,非日期的期间计算,同样也需要制作一个期间维度表。

期间维度表与订单表建立关系:

然后根据计算的需要建立几个度量值就可以了。

本期收入 = SUM( '订单表'[销售额] )

上期收入,就是年度相同,期间编号减1的期间的数据,按照这个逻辑写度量值如下:

上期收入 =

VAR year_ = SELECTEDVALUE( '期间表'[年度] )

VAR period_ =SELECTEDVALUE( '期间表'[期间编号] )

RETURN

CALCULATE(

[本期收入] ,

FILTER(

ALL( '期间表' ) ,

'期间表'[年度] = year_ && '期间表'[期间编号] = period_-1

)

)

结果如下:

上图中的结果中,大部分的上期收入没有问题,但是2018年第1期的收入为空,这是因为按照上面的逻辑,第1期的编号减1的期间是不存在的,所以导致这样的结果。

解决这个问题,可以判断是否为第一期来修正计算的逻辑,不过更简单的办法是,在期间表添加一个连续的期间序号维度,

有了这个序号,不用考虑年度,每一期的上期,就是期间序号减1的期间,修正度量值如下:

上期收入=

VAR period_ =SELECTEDVALUE( '期间表'[期间序号] )

RETURN

CALCULATE(

[本期收入] ,

FILTER( ALL( '期间表' ) , '期间表'[期间序号] = period_-1 )

)

这个度量值看起来简单多了,并且计算结果也是我们需要的:

同样的逻辑,计算上年同期的数据,就是期间序号减去6的期间,度量值如下:

上年同期收入 =

VAR period_ =SELECTEDVALUE( '期间表'[期间序号] )

RETURN

CALCULATE(

[本期收入] ,

FILTER( ALL( '期间表' ) , '期间表'[期间序号] = period_-6 )

)

结果如下:

有了上期和上年同期的数据,计算同比和环比就很简单了:

环比 = DIVIDE( [本期收入]-[上期收入] , [上期收入] )

同比 = DIVIDE( [本期收入]-[上年同期收入] , [上年同期收入] )

这样就完成了同比和环比的指标计算。

这篇文章介绍的是一个普遍意义上的时间指标计算思路,无论是可以利用时间智能函数的月度、季度同比环比,还是没有时间智能函数的周、旬等维度的同比环比,都可以按这个思路轻松实现。

如果彻底理解了这种算逻辑,并掌握了DAX表达思路,再碰到各种日历的指标计算环比,都可以迎刃而解。

之前写过的周分析以及非标准日历,也是同样的计算逻辑:

学会了这个思路,你也可以轻松进行周分析!

Power BI非标准日历的计算思路

发表评论

邮箱地址不会被公开。 必填项已用*标注

联系我们

400-800-8888

在线咨询:点击这里给我发消息

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息