无日期上下文如何计算同比环比?其实很简单
来自星友的一个问题,如何不借助切片器,在没有任何外部日期上下文的情况下,让报表自动显示本月、上月、上年同期数据,以及对应的同比和环比,这个问题不少人问过,还比较普遍,这篇就来看看如何在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([本月]-[上年同期],[上年同期])
矩阵中显示如下:
这样就轻松实现了无外部日期上下文的计算,如果你想计算上上月,前年同期等,都很方便,只需要在度量值中更改一个数字。
赞 (0)