无日期上下文如何计算同比环比?其实很简单

来自星友的一个问题,如何不借助切片器,在没有任何外部日期上下文的情况下,让报表自动显示本月、上月、上年同期数据,以及对应的同比和环比,这个问题不少人问过,还比较普遍,这篇就来看看如何在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)

相关推荐