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 度量值 | 滾動聚合),記住這些度量值的寫法,基本可以滿足大部分的正常需求,

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