同比计算方法及应用 同比是指与去年同期相比的增长率,计算公式为:(本期数值-同期数值)/同期数值×100%。
来自星友的一个问题,如何不借助切片器,在没有任何外部日期上下文的情况下,让报表自动显示本月、上月、上年同期数据,以及对应的同比和环比,这个问题不少人问过,还比较普遍,这篇就来看看如何在PowerBI中实现吧。
解决该问题有很多种方法,这里介绍一个相对简单并且容易理解的做法。
为了能方便的定位到不同的月份,在日期表中添加一列连续的年月序号,可以这样写:
年月序号 = ( YEAR( [日期] ) - 2018 ) * 12 + MONTH( [日期] )

因为该日期表是从2018年1月1日开始的,所以先减去2018,这样做的结果就是如果是2019,自动在月份上加上12,也就是2019年1月的年月编号是13,往后依次类推。
有了这个年月序号,本月数据的度量值可以这样写:
本月 =
VAR
cur_yearmonth=
CALCULATE(
SELECTEDVALUE('日期表'[年月序号]),
'日期表'[日期]=TODAY())
RETURN
CALCULATE([收入],'日期表'[年月序号]=cur_yearmonth)
因为没有外部日期上下文,所以在这个度量值内部利用TODAY函数来找出今日所对应的年月编号,然后计算出本月数据。
同理计算上月和上年同期很简单了,逻辑完全一样,只需要调整对应的年月编号就可以了:
上月 =
VAR
cur_yearmonth=
CALCULATE(
SELECTEDVALUE('日期表'[年月序号]),
'日期表'[日期]=TODAY())
RETURN
CALCULATE([收入],'日期表'[年月序号]=cur_yearmonth-1)
上年同期 =
VAR
cur_yearmonth=
CALCULATE(
SELECTEDVALUE('日期表'[年月序号]),
'日期表'[日期]=TODAY())
RETURN
CALCULATE([收入],'日期表'[年月序号]=cur_yearmonth-12)
利用上述数据计算同比和环比:
环比 = DIVIDE([本月]-[上月],[上月])
同比 = DIVIDE([本月]-[上年同期],[上年同期])
矩阵中显示如下:
这样就轻松实现了无外部日期上下文的计算,如果你想计算上上月,前年同期等,都很方便,只需要在度量值中更改一个数字。
更多推荐:
我的新书《PowerBI商业数据分析》上市了
学会这个秘籍,PPT也能动态演示PowerBI图表
使用PowerBI/Excel批量抓取网页数据
采悟,「PowerBI星球」创始人,《Power BI商业数据分析》作者。
声明:本文由"麦兜"发布,不代表"破站"立场,转载联系作者并注明出处:https://www.848586.cn/107816.html
