同比和环比的区别计算公式(本期较比上期环比怎么算)

之前分享了通过切换不同的粒度类型,来动态显示最近的N个粒度期间的数据(PowerBI动态显示最近N期的数据),在这个案例中,用了独立的日期表作为切片器,这个做法也可以进一步优化,改用建立关系的日期粒度表来作为切片器,以便与报表的其他图表交互。

原模型不变,这里将切片器中的字段都改为来自日期粒度表,并写一个度量值:

并用这个度量值作为柱形图的值,未建立的关系的独立日期粒度表作为坐标轴,同样可以实现上篇文章的效果:

此外,最近被星友问到,对于这种动态的粒度,如何选择不同粒度类型,来正确计算出上年同期以及上期的数据呢?

对于上年同期的数据,相对比较简单,只需要这样写一个度量值就可以了:

收入 上年同期=

CALCULATE(

[收入],

CALCULATETABLE(

SAMEPERIODLASTYEAR(日期表[日期]),

TREATAS(VALUES(日期粒度表[日期]),日期表[日期])

),

ALL(日期粒度表)

)

这个度量值的逻辑是将当前日期粒度表所筛选的日期范围,视同日期表的日期范围,并利用时间智能函数返回该范围的上年同期的时间段;当然,为了避免日期粒度表同时筛选,用ALL来忽略掉它。

这样,无论选择任何粒度,都可以轻松计算出上年同期的数据。

计算当前粒度的上期,同样可以使用上面度量值的思路,但是稍微麻烦的一点是,对于不同的粒度,计算上期用到的时间智能函数是不同的,所以还需要先判断当前所选择的粒度类型。

上期的度量值写法如下:

收入 上期 = SWITCH( SELECTEDVALUE(日期粒度表[类型]),"年",[收入 上年同期],"季",CALCULATE([收入],CALCULATETABLE(DATEADD(日期表[日期],-1,QUARTER),TREATAS(VALUES(日期粒度表[日期]),日期表[日期])),ALL(日期粒度表)),"月",CALCULATE([收入],CALCULATETABLE(DATEADD(日期表[日期],-1,MONTH),TREATAS(VALUES(日期粒度表[日期]),日期表[日期])),ALL(日期粒度表)),"日",CALCULATE([收入],CALCULATETABLE(DATEADD(日期表[日期],-1,DAY),TREATAS(VALUES(日期粒度表[日期]),日期表[日期])),ALL(日期粒度表)) )

当粒度类型为年时,上期就是上年同期,所以直接用上面建的上年同期度量值,当为其他粒度类型,则通过DATEADD函数来相应的计算该粒度的上期的时间段。

用本期、上期以及上年同期这三个度量值做个柱形图,来看看动态效果:

有上期和上年同期的数据以后,再计算任何粒度的同比和环比也就可以很轻松的实现了。

更多精彩内容

Power BI分析应用:盈亏平衡分析

Power BI可视化:矩阵中迷你图的妙用

推荐5个有趣的Power BI自定义控件

采悟 | PowerBI星球

网络讯息

窝阔台和忽必烈的关系(窝阔台为什么传位忽必烈)

2022-12-8 14:04:37

网络讯息

墙板499元(大自然木门“走心走肺”的创新之路)

2022-12-8 14:05:47

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索