數據可視化之DAX篇(二十八)Power BI時間序列分析用到的度量值,一次全給你


https://zhuanlan.zhihu.com/p/88528732

在各種經營分析報告中,我們常常會看到YTD,YOY這樣的統計指標,這樣的數據計算並不難,尤其是在PowerBI中,因為有時間智能函數的幫助,大大簡化了這些計算,從而快速滿足定期的報告需求。

下面就給你列出這些常用統計數據的度量值,幫你快速掌握各種期間數據的算法。

 

如果對時間智能函數不熟悉,可以先看看這篇文章:

一文幫你掌握時間智能函數

 

假設數據模型為一張訂單表和一張對應的日期表,並已經建立了基礎度量值:

收入 = SUM('訂單'[銷售額])

下面的所有度量值都是以此為基礎。


 

本期至今

XTD Month/Quarter/Year To Date

 

從本期的第一天到當前日期的累計,比如收入的YTD就是從本年1月1日到當前上下文日期的累計收入,MTD就是當前上下文月份的第一天到當前日期的累計收入。

月初至今

MTD Month To Date

MTD = CALCULATE([收入],DATESMTD('日期表'[日期]))

 

當然並非只有這一種寫法,比如還可以直接用TOTALMTD:

MTD1= TOTALMTD([收入],'日期表'[日期])

 

下面其他各種計算同理,帶數字的度量值是等值的替代寫法,熟練掌握其中一種寫法就可以了。

季初至今

QTD Quarter To Date

QTD =

CALCULATE([收入],DATESQTD('日期表'[日期]))

QTD1=

TOTALQTD([收入],'日期表'[日期])

 

年初至今YTD Year To Date

YTD = CALCULATE([收入],DATESYTD('日期表'[日期]))

YTD1= TOTALYTD([收入],'日期表'[日期])

 


上期的本期至今PXTD Previous Month/Quarter/Year to Date

上期的MTD,簡稱為PMTD,就是上個月MTD,有了這個數據,計算環比時十分方便;而PYTD,上年的本年至今,計算年累計的同比也需要該數據。

並且在寫PXTD時,上面已經建好的XTD度量值也可以直接復用。

上月的月初至今

PMTD Previous Month to Date

 

PMTD =

CALCULATE([MTD],DATEADD('日期表'[日期],-1,MONTH))

PMTD1=

TOTALMTD([收入],DATEADD('日期表'[日期],-1,MONTH))

 

上季的季初至今

PQTD Previous Quarter to Date

PQTD =

CALCULATE([QTD],DATEADD('日期表'[日期],-1,QUARTER))

 

PQTD1=

TOTALQTD([收入],DATEADD('日期表'[日期],-1,QUARTER))

上年的年初至今

PYTD Previous Year to Date

PYTD =

CALCULATE([YTD],DATEADD('日期表'[日期],-1,YEAR))

 

PYTD1= 

TOTALYTD([收入],DATEADD('日期表'[日期],-1,YEAR))

 

靈活使用時間智能函數,上年的年初至今還有很多種寫法,比如:

 

PYTD2= 

CALCULATE([YTD],SAMEPERIODLASTYEAR('日期表'[日期]))

PYTD3= 

TOTALYTD([收入],SAMEPERIODLASTYEAR('日期表'[日期]))

PYTD4=

CALCULATE([收入],DATESYTD(SAMEPERIODLASTYEAR('日期表'[日期])))PYTD5= CALCULATE([收入],SAMEPERIODLASTYEAR(DATESYTD('日期表'[日期])))

(從上面的這些度量值也可以看出,SAMEPERIODLASTYEAR的功能都可以用DATEADD來代替;DATESYTD與SAMEPERIODLASTYEAR完全可以互換位置)

 

上面只是寫出了常用的PXTD,可能有些個性的計算不止於此,比如要求計算上個月的QTD,掌握的上面的思路以后,你應該可以很輕松的寫出來。

 

上年的本期至今PY XTD Previous Year Month/Quarter/Year to Date

上年的本年至今,其實通過PXTD的思路也能計算出來,只是因為上年的本期至今太常用了,就單獨再介紹一下,只列出一種寫法,其他寫法也很簡單,自己琢磨一下吧。

 

上年的月初至今

PY MTD Previous Year Month to Date

PY MTD =

CALCULATE([MTD],SAMEPERIODLASTYEAR('日期表'[日期]))

 

上年的季初至今

PY QTD Previous Quarter Month to Date

PY QTD =

CALCULATE([QTD],SAMEPERIODLASTYEAR('日期表'[日期]))

 

上年的年初至今

PY YTD Previous Year Month to Date

PY YTD =

CALCULATE([YTD],SAMEPERIODLASTYEAR('日期表'[日期])

PY YTD其實和上面寫的PYTD等價。

 

 


差異比較

有了上面的這些本期、上期、上年的度量值,再計算與上期的差異,以及同比和環比就非常簡單了。

與上個月的差異

MOM Month Over Month

MOM = IF([PMTD]<>BLANK(),[MTD]-[PMTD])

 

月環比

MOM % Month Over Month Percentage

MOM % =

DIVIDE([MOM],[PMTD])

與上個季度的差異

QOQ Quarter Over Querter

QOQ =

IF([PQTD]<>BLANK(),[QTD]-[PQTD])

季度環比

QOQ % Quarter Over Querter Percentage

QOQ % =

DIVIDE([QOQ],[PQTD])

與上年的差異

YOY Year Over Year

本年累計、本季累計以及本月累計與上年的同期比較,都比較常用,這里都列出來。

 

本月累計與上年同期的差異YOY MTD = IF([PY MTD]<>BLANK(),[MTD]-[PY MTD])

本季累計與上年同期的差異YOY QTD = IF([PY QTD]<>BLANK(),[QTD]-[PY QTD])

 

本年累計與上年的差異

YOY YTD = 
IF([PY YTD]<>BLANK(),[YTD]-[PY YTD])

同比增長
YOY % Year Over Year Percentage

 

本月累計的同比
YOY MTD% = DIVIDE([YOY MTD],[PY MTD])

本季累計的同比
YOY QTD % = DIVIDE([YOY QTD],[PY QTD])

本年累計的同比
YOY YTD % = DIVIDE([YOY YTD],[PY YTD])

 


上面這些關於時間計算的度量值,以及上一篇MAT的計算(Power BI 度量值 | 滾動聚合),記住這些度量值的寫法,基本可以滿足大部分的正常需求,

 

上述度量值的示例文件已分享在知識星球,需要的請自行下載練習。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM