在時間序列運算中我們經常聽到同比、環比這樣的說法,計算公式:
用語言來描述就是:
在Power Pivot或Power BI數據模型中要計算同比環比是個很容易的事情,因為有時間智能函數和日期表,不需要太多的知識儲備:
其中最重要的一個時間智能函數DATEADD函數,需要認真了解一下,DATEADD函數一共有三個參數:
學會這個DATEADD函數,就相當于學會了一下幾個函數:
這幾個函數,NEXT開頭的和PREVIOUS開頭的函數都是隻有一個參數的函數,他們實現的功能隻是DATEADD函數功能的一部分,還有SAMEPERIODLASTYEAR函數也是一樣的,都很簡單,唯一複雜的函數是PARALLELPERIOD,三個參數,和DATEADD函數用法一樣,就是返回的值有些不同,大家有興趣的可以去仔細研究一下。
我們來看例子:模拟了兩年的數據,建立了對應的日期表,标記日期表并建立關系。
聚合建立第一個度量值[銷售金額],最簡單的聚合,可以通過不同的篩選得到不同的結果,這個聚合,可以是月銷、季度銷、年度銷。
銷售金額 = sum('銷售記錄'[金額])
DATEADD上月銷售:
上月 = CALCULATE([銷售金額],DATEADD('日曆'[Date],-1,MONTH))
上季度銷售:
上季度 = CALCULATE([銷售金額],DATEADD('日曆'[Date],-1,QUARTER))
上年銷售:
上年 = CALCULATE([銷售金額],DATEADD('日曆'[Date],-1,YEAR))
這三個度量值有着相同的結構:CALAULATE DATEADD
而且DATEADD函數的參數,隻有最後一個參數在變化,前兩個參數是相同的。
環比:月度環比,IF函數與BLANK函數是為了清除沒有上月數據的情況,DIVIDE函數就是除法函數:
月環比 = if([上月]=BLANK(),BLANK(),DIVIDE([銷售金額],[上月])-1)
季度環比與月度環比基本相同:
季環比 = IF([上季度]=BLANK(),BLANK(),DIVIDE([銷售金額],[上季度])-1)
同比:
同比與環比的寫法一緻,就是時間範圍是年與年的比較:
同比 = if([上年]=BLANK(),BLANK(),DIVIDE([銷售金額],[上年])-1)
以上的例子是在Power BI中做的演示,所以度量值沒有冒号。
更多DAX函數知識請訂閱DAX函數專欄:
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!