PowerBI DAX 從日期角度分析業(yè)務(wù)指標(biāo)解決方案

從日期角度分析問(wèn)題,在Power BI中用DAX實(shí)現(xiàn)基本上會(huì)基于時(shí)間智能函數(shù)處理。

由于PowerBI DAX中時(shí)間智能函數(shù)眾多,有必要梳理形成一個(gè)統(tǒng)一的模式。它能幫助業(yè)務(wù)(尤其常常是財(cái)務(wù))解決的問(wèn)題包括但不限于:

  • 本期至今指標(biāo)(XTD):年度至今(YTD),季度至今(QTD),月度至今(MTD)等
  • 上期同期指標(biāo):上年同期,上季同期等
  • 上期全部
  • 基于時(shí)間區(qū)間的對(duì)比

訂單指標(biāo)集

以示例目的,選擇訂單作為業(yè)務(wù)對(duì)象,其常見(jiàn)指標(biāo)集包括:

  • 訂單 銷售額 合計(jì)
  • 訂單 利潤(rùn)率 合計(jì)
  • 訂單 數(shù)量

為了使用方便,設(shè)置一個(gè) 動(dòng)態(tài)的 訂單指標(biāo),包括以上所有指標(biāo),稱為 [訂單 指標(biāo)]。

日期表系列

首先介紹 日期表,初次接觸PowerBI DAX會(huì)認(rèn)為日期表是一個(gè)多列的表,其實(shí)日期表的最簡(jiǎn)單形式僅僅是一個(gè) 單列日期 構(gòu)成的表,如果用DAX來(lái)實(shí)現(xiàn),只需要寫(xiě):

日期表 = CALENDAR( 開(kāi)始年份 , 結(jié)束年份 )

即可。由于這種單列的日期表不能滿足復(fù)雜的實(shí)際業(yè)務(wù)需求,包括從不同的日期粒度(日,周,月,季,年等)來(lái)計(jì)算指標(biāo)以及一些動(dòng)態(tài)靈活的需要,這里總結(jié)常用的三種日期表,如下:

關(guān)于日期表的討論不再贅述。

日期表可以采用DAX公式或Power Query公式均可構(gòu)建,以上范例提供了詳細(xì)完整的Power Query公式構(gòu)建方法。

為了集中于本案例,這里只使用日期表,并使用[訂單 指標(biāo)]度量值作為示例。

本期至今 YTD,QTD,MTD,WTD

常用的本期至今指標(biāo)包括包括本年至今(Year To Date),本季至今(Quarter To Date),本月至今(Month To Date),本周至今(Week To Date),計(jì)算如下:

WTD并非有類似的函數(shù),因此需要自行構(gòu)建,如下:

?? 提示
TOTALYTD、TOTALQTD、TOTALMTD有等價(jià)的寫(xiě)法,可以僅使用上述方法。

上期同期 PY,PQ,PM

常用的上期同期指標(biāo)包括上年同期(Previous Year),上季同期(Previous Quarter),上月同期(Previous Month),上周同日(7日前),計(jì)算如下:

?? 提示
SAMEPERIODLASTYEAR 可產(chǎn)生與 DATEADD ( '日期'[Date], -1, YEAR ) 同樣的效果。
很少有上周同期的業(yè)務(wù)叫法,更適合稱為【7日前指標(biāo)】,就其本質(zhì)也是上周同期的概念,故放在這類指標(biāo)中。

上期全部 PYT,PQT,PMT,PWT

上期同期 不同,上期全部 將獲取到上期的全部日期,例如:2017年5月的上年同期是2016年5月,而2017年5月的上年全部是2016年全年。常用的指標(biāo)包括:上年全部(Previous Year Total),上季全部(Previous Year Total),上月全部(Previous Year Total),上周全部(Previous Week Total),計(jì)算如下:

可以看出,這里對(duì)有關(guān)周的計(jì)算已經(jīng)變得更加復(fù)雜。DAX時(shí)間智能函數(shù)一般實(shí)現(xiàn)到月的級(jí)別,因?yàn)閷?duì)于周的處理是并沒(méi)有統(tǒng)一的方案的,在國(guó)際上也存在一些標(biāo)準(zhǔn)方案,實(shí)際還是根據(jù)不同公司的業(yè)務(wù)周期或考核周期進(jìn)行,會(huì)有實(shí)際差別。

基于時(shí)間區(qū)間的對(duì)比

將當(dāng)前與過(guò)去的不同時(shí)間區(qū)間進(jìn)行對(duì)比可以得出一些重要的指標(biāo),包括:

  • 本年至今 對(duì)比 上年全部;
  • 當(dāng)期 對(duì)比 全年同期 形成同比;
  • 當(dāng)期 對(duì)比 上期 形成環(huán)比;
  • 差異的增長(zhǎng)率。

根據(jù)實(shí)際業(yè)務(wù)的需要還可能產(chǎn)生更多的排列組合,這里僅列舉上述常用指標(biāo)計(jì)算,如下:

總結(jié)

上述內(nèi)容的討論暫未涉及期初期末類,以及并為詳細(xì)展開(kāi)關(guān)于周有關(guān)的計(jì)算,它們都可以專門(mén)來(lái)進(jìn)行討論。對(duì)于偏向技術(shù)類的業(yè)務(wù)人員,關(guān)于時(shí)間智能可以注意以下幾點(diǎn)重要內(nèi)容:

  • 時(shí)間智能函數(shù)通常作為 CALCULATE 的篩選器參數(shù)
  • CALCULATE 的篩選器參數(shù)都是表(ALL及設(shè)置關(guān)系類除外,此處不需了解)
  • 因此所有時(shí)間智能類函數(shù)都返回表

這其實(shí)在說(shuō),例如: LASTDATE( 日期[日期] ) 是時(shí)間智能函數(shù);而時(shí)間智能函數(shù)其實(shí)返回的是表(雖然LASTDATE從字面意思上是一個(gè)值,由于它是一行一列的表,因此也可以作為值,但本質(zhì)是表)。

時(shí)間智能函數(shù)還有一些需要注意的問(wèn)題:

  • 時(shí)間智能函數(shù) 不一定必須 配合日期表,但最好有獨(dú)立的日期表,而不使用系統(tǒng)自帶的
  • 日期表應(yīng)該盡量用日期類型的列作為關(guān)系列

案例下載:

鏈接:https://pan.baidu.com/s/1Q-qjFk3CXG-spTnUhe5aNQ
密碼:biw7
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容