PowerBI 計(jì)算疫情影響的業(yè)務(wù)天數(shù)
小伙伴問(wèn)如何通過(guò)記錄疫情對(duì)業(yè)務(wù)的影響用來(lái)更進(jìn)一步評(píng)估業(yè)務(wù)。
記錄
首先,要記錄疫情導(dǎo)致對(duì)業(yè)務(wù)的影響。疫情的影響表現(xiàn)在:某些日期無(wú)法正常工作。我們將這樣的情況進(jìn)行記錄如下:

這里模擬了對(duì)關(guān)店日期的記錄??赡軐?dǎo)致某些數(shù)據(jù)的邏輯不合理,但不影響計(jì)算??罩当硎娟P(guān)店后沒(méi)有開(kāi)店。
數(shù)據(jù)處理
首先在 Power Query 中進(jìn)行預(yù)處理。首先用今日進(jìn)行彌補(bǔ)。如下:

用今日來(lái)替換沒(méi)有截止日期的情況,如下:

注意
每次重新計(jì)算時(shí),需要刷新模型來(lái)獲取新的計(jì)算結(jié)果。
然后,為了通過(guò)建模的方式實(shí)現(xiàn)日期篩選,這里將日期的起始點(diǎn)擴(kuò)展為序列后再展開(kāi)。
先生成序列,如下:

注意
這是在 Power Query 中為數(shù)不多的需要記住的寫(xiě) M 函數(shù)的場(chǎng)景:構(gòu)建序列。
再將構(gòu)建的序列按多行展開(kāi),如下:

這個(gè)步驟是整個(gè)模型計(jì)算的精華。
將日期范圍全部平鋪,后續(xù)可以與日期表構(gòu)建模型,進(jìn)而利用各種日期智能函數(shù)以及數(shù)據(jù)模型的優(yōu)勢(shì)來(lái)實(shí)現(xiàn)各種潛在的計(jì)算,而不是將計(jì)算保留在每行對(duì)應(yīng)的日期范圍細(xì)節(jié)中。
注意
其實(shí)也可以直接用日期起點(diǎn)終點(diǎn)來(lái)實(shí)現(xiàn)計(jì)算,只是無(wú)法利用到日期表的特點(diǎn),這是兩套不同的計(jì)算方案。
調(diào)整數(shù)據(jù)類型后,得到:

將這個(gè)主要內(nèi)容加載到數(shù)據(jù)模型。
數(shù)據(jù)模型
如果有作為維度的表,可以充分利用。這里使用日期表與之相連。得到:

注意
若模型中存在表示業(yè)務(wù)的門(mén)店維度,應(yīng)該繼續(xù)構(gòu)建連接。
這里處于演示目的,不再提出這個(gè)維度。
注意
作為一個(gè)準(zhǔn)則:當(dāng)有可以作為維度可用的表時(shí),應(yīng)該總是使用該維度。
也就是說(shuō):同樣可以使用 “所在區(qū)域” 字段,如果有維度表與事實(shí)表相連,那永遠(yuǎn)應(yīng)該使用來(lái)自維度表的字段。
這是一個(gè)良好的習(xí)慣,對(duì)于初學(xué)者尤其重要。
故事素材
由于疫情對(duì)業(yè)務(wù)的影響是多方面的,在分析時(shí)應(yīng)該注意:要事第一(來(lái)自《高效能人士的七個(gè)習(xí)慣》)。
例如:
在沒(méi)有疫情的時(shí)候,某店應(yīng)該一個(gè)月每天都開(kāi),共 30 日。
在受到疫情的影響,某店導(dǎo)致一個(gè)月只開(kāi)部分,如 20 日。
那么,該店的銷售業(yè)績(jī)從預(yù)算的角度,只能完成到 2/3,這樣就為業(yè)務(wù)帶來(lái)了一個(gè)故事:
如果實(shí)際業(yè)務(wù)超過(guò)了預(yù)算的 2/3,但沒(méi)有達(dá)標(biāo),從理論上也是具有合理性的。
如果實(shí)際業(yè)務(wù)大成了超過(guò)了 2/3,甚至完成目標(biāo),從理論上來(lái)說(shuō)業(yè)務(wù)就突破了疫情的影響,維持了公司的業(yè)務(wù)。
不論實(shí)際情況是怎樣的,在職場(chǎng)的角度,我們都需要為業(yè)務(wù)領(lǐng)導(dǎo)者提供講故事的素材。
復(fù)雜度分析
如果某【店 A-1】應(yīng)開(kāi) 30 天,實(shí)際開(kāi)了 20 天,則有效率:66.6%;
如果某【店 A-2】應(yīng)開(kāi) 20 天,實(shí)際開(kāi)了 15 天,則有效率:75%。
以此類推。
但復(fù)雜度在于:
【店 A-1】和【店 A-1】都屬于【地區(qū) A】,如果要考察整個(gè)地區(qū)的天數(shù)有效率則需要:
( 20 + 15 ) / ( 30 + 20 )
當(dāng)然,不僅僅可能從地區(qū)的角度,還可能從其他分類的角度,如:品牌角度;精品店 / 門(mén)店角度等。
如果是常規(guī)計(jì)算將導(dǎo)致復(fù)雜性。
計(jì)算的自適應(yīng)性
由于建立了拉平日期的關(guān)店日期數(shù)據(jù),并與日期表關(guān)聯(lián),這就可以彌補(bǔ)兩個(gè)重要難題:
在計(jì)算日期天數(shù)的時(shí)候,其計(jì)算邏輯是統(tǒng)一的,且簡(jiǎn)單的計(jì)數(shù)。
在用不同維度做篩選時(shí),計(jì)算邏輯保持不變,公式不變。
以下給出相關(guān)度量值計(jì)算。
// 計(jì)算理論天數(shù)的度量值
Days.Normal =
// 這里假設(shè)全日期工作,則有:COUNTROWS( 'Calendar' ) * COUNTROWS( VALUES( DImStore[門(mén)店ID] ) )
// 計(jì)算關(guān)店天數(shù)的度量值
Days.Closed =
// 關(guān)店天數(shù),由于該表的每行表示一天關(guān)閉,只需要計(jì)數(shù)即可。
// COUNTROWS( FactData )
// 為了兼容重復(fù)記錄的問(wèn)題,可以優(yōu)化為:
COUNTROWS( VALUES( FactData[Date] ) )
// 計(jì)算可用天數(shù)的度量值
Days.Runing =
[Days.Normal] - [Days.Closed]
// 計(jì)算可用率的度量值
Days.Runing.Ratio =
[Days.Runing] / [Days.Normal]值得注意的是:
這里假設(shè)理論上每個(gè)店每天都營(yíng)業(yè)。
實(shí)際上,可能不是這樣
則可以根據(jù)不同店的理論營(yíng)業(yè)日期區(qū)間數(shù)據(jù)做同樣變換計(jì)算
這里考慮到用戶可能多選不同的店鋪
則應(yīng)該將每個(gè)店鋪的理論營(yíng)業(yè)天數(shù)乘以所選范圍的店數(shù)
實(shí)際情況若每個(gè)店的理論營(yíng)業(yè)日期天數(shù)不同,則應(yīng)該用 SUMX 單獨(dú)考慮
特別需要注意的是:
根據(jù)這里的模型啟發(fā),為了適配更廣泛的通用性,需要考慮的是:
可比店
店鋪的每個(gè)店的理論不可用日期(如:裝修導(dǎo)致,而非疫情)
店鋪的每個(gè)店受到疫情影響的不可用日期
為此,應(yīng)該參考這個(gè)架構(gòu),構(gòu)建更多的表以涵蓋這些變化。這個(gè)問(wèn)題留待后續(xù)演示。
可視化分析
根據(jù)這些計(jì)算,分別構(gòu)建三個(gè)結(jié)構(gòu)來(lái)展示這個(gè)結(jié)果:
按門(mén)店的計(jì)算
按區(qū)域的計(jì)算
可視化顯示

可以看出:
所有門(mén)店的理論可用日期天數(shù)都是 30(對(duì)于更復(fù)雜場(chǎng)景,另外考慮,這里演示一種框架思維和主干邏輯);
從區(qū)域角度計(jì)算,也得到了正確的計(jì)算結(jié)果。
另外,根據(jù)以上內(nèi)容,還可以做出一些有創(chuàng)意的可視化分析。如:散點(diǎn)圖的二維分析,如下:

這里顯示不同門(mén)店受到疫情影響導(dǎo)致的不可用日期以及可用時(shí)間比例。
更復(fù)雜的問(wèn)題
從業(yè)務(wù)角度可能會(huì)在分析階段有更復(fù)雜的要求,例如:
如果某個(gè)店已經(jīng)由于疫情在 3 月關(guān)店了,且一直沒(méi)有恢復(fù),那么在 4 月的時(shí)候,它的理論可用時(shí)間到底是 0 天還是 30 天呢?
如果某個(gè)店不是由于疫情在 4 月關(guān)店了,且一直沒(méi)有恢復(fù),那么在 4 月的時(shí)候,它的理論可用時(shí)間到底是 0 天還是 30 天呢?
不同的業(yè)務(wù)的答案,都會(huì)導(dǎo)致上述的計(jì)算邏輯的微調(diào)。
測(cè)試比對(duì)
在實(shí)際中,要針對(duì)上述內(nèi)容對(duì)某些店抽樣觀察計(jì)算,看是否滿足實(shí)際計(jì)算結(jié)果。
總結(jié)
本文雖然題為 “疫情影響的業(yè)務(wù)天數(shù)”,但這里給出了一種通用的思維模式:
將每個(gè)店的天數(shù)計(jì)算,改為在模型層用日期表連鎖,以更高效統(tǒng)一地計(jì)算。
疫情,常規(guī),各種問(wèn)題都可以抽象為:不可用日期信息記錄表。
只要可以駕馭上述兩點(diǎn)思維,就可以建立完全通用的不可用日期分析模型。
希望大家可以舉一反三,構(gòu)建靈活的數(shù)據(jù)模型。
在訂閱了BI佐羅講授的《BI真經(jīng)》之《BI進(jìn)行時(shí)》課程區(qū),除了可以下載本文案例,還可以觀看視頻講解。

Power BI 終極系列課程《BI真經(jīng)》

BI真經(jīng) - 讓數(shù)據(jù)真正成為你的力量
掃碼與精英一起討論 Power BI,驗(yàn)證碼:data2022
點(diǎn)擊“閱讀原文”進(jìn)入學(xué)習(xí)中心
↙
