數(shù)據(jù)倉(cāng)庫(kù)有坑怎么辦,如何從0到1來(lái)填坑
本文轉(zhuǎn)載自微信公眾號(hào)「曉陽(yáng)的數(shù)據(jù)小站」,作者曉陽(yáng)的數(shù)據(jù)小站。轉(zhuǎn)載本文請(qǐng)聯(lián)系曉陽(yáng)的數(shù)據(jù)小站公眾號(hào)。
0x00 什么是數(shù)據(jù)倉(cāng)庫(kù)的坑
“填坑”是一個(gè)新人剛加入團(tuán)隊(duì),或者是接手一個(gè)新業(yè)務(wù),所以經(jīng)常需要面對(duì)的事情。
“坑”的出現(xiàn),與歷史業(yè)務(wù)的發(fā)展,密切相關(guān)。通常體現(xiàn)在:業(yè)務(wù)快速變動(dòng)、人員快速流動(dòng)、系統(tǒng)化建設(shè)能力弱、強(qiáng)行上馬面子工程等情況。雖然數(shù)據(jù)開(kāi)發(fā)人員能夠意識(shí)到數(shù)據(jù)倉(cāng)庫(kù)規(guī)范性的重要,但迫于日常的數(shù)據(jù)開(kāi)發(fā)壓力,往往只能匆忙的制訂一份規(guī)范,在實(shí)際開(kāi)發(fā)過(guò)過(guò)程中,往往又無(wú)法完全照搬落實(shí),因此形成了一個(gè)“不成熟”的數(shù)據(jù)倉(cāng)庫(kù)體系。
這種數(shù)據(jù)倉(cāng)庫(kù)體系,最典型的特征,是找數(shù)據(jù)只能給表,無(wú)法通過(guò)規(guī)范自主查找;看邏輯只能問(wèn)人,無(wú)法通過(guò)模型設(shè)計(jì)快速了解;問(wèn)業(yè)務(wù)只能靠求,別人管不過(guò)來(lái)自己的事情了,哪有時(shí)間來(lái)管你?
但是!我們不能坐以待斃,面對(duì)“理想”與“現(xiàn)實(shí)”的差距,我們必須有一套成熟的應(yīng)對(duì)方法,才能在紛亂的業(yè)務(wù)中,找到不變的哪條主線。
“對(duì)標(biāo)!對(duì)標(biāo)!再對(duì)標(biāo)!”只有標(biāo)桿有了,做事才能有章法,數(shù)據(jù)才能不錯(cuò)誤。
0x01 理想的數(shù)據(jù)倉(cāng)庫(kù)是什么樣子
這個(gè)標(biāo)桿是什么?就是一個(gè)理想的數(shù)據(jù)倉(cāng)庫(kù)模板。
做過(guò)數(shù)據(jù)倉(cāng)庫(kù)的通過(guò),基本上都了解,一個(gè)數(shù)據(jù)倉(cāng)庫(kù)從0到1的過(guò)程中,會(huì)經(jīng)過(guò)三個(gè)階段:
- 第一個(gè)階段:簡(jiǎn)單報(bào)表 + 數(shù)據(jù)庫(kù)階段;
- 第二個(gè)階段:數(shù)據(jù)集市 + 產(chǎn)品功能階段;
- 第三個(gè)階段:數(shù)據(jù)倉(cāng)庫(kù) + 主題劃分階段。
而相對(duì)成熟的數(shù)據(jù)倉(cāng)庫(kù),則有如下幾個(gè)發(fā)展的方向:
- 數(shù)據(jù)產(chǎn)品,通過(guò)產(chǎn)品化方式來(lái)輔助決策,服務(wù)業(yè)務(wù)方;
- 數(shù)據(jù)運(yùn)營(yíng),革新公司的運(yùn)作方式,通過(guò)數(shù)據(jù)來(lái)運(yùn)營(yíng)業(yè)務(wù),常見(jiàn)于電商行業(yè);
- 實(shí)時(shí)數(shù)倉(cāng),通過(guò)前沿的數(shù)據(jù)技術(shù),來(lái)革新數(shù)據(jù)使用方式,帶來(lái)技術(shù)競(jìng)爭(zhēng)力;
- 數(shù)據(jù)分析,通過(guò)配合分析師,貼近業(yè)務(wù)并發(fā)現(xiàn)問(wèn)題,指導(dǎo)產(chǎn)品或業(yè)務(wù)迭代;
- 數(shù)據(jù)挖掘,通過(guò)算法的力量,來(lái)給業(yè)務(wù)帶來(lái)智能化的色彩。
具體每個(gè)階段就不展開(kāi)描述了,但我們可以比較清楚的看出來(lái),數(shù)據(jù)倉(cāng)庫(kù)是業(yè)務(wù)從混沌走向數(shù)字化的關(guān)鍵環(huán)節(jié),是承上啟下的樞紐,雖說(shuō)沒(méi)有數(shù)據(jù)倉(cāng)庫(kù)同樣能夠進(jìn)行啟下的工作,但是其投入與產(chǎn)出終會(huì)因投入產(chǎn)出不成正比而無(wú)法持續(xù)的進(jìn)行下去。
數(shù)據(jù)倉(cāng)庫(kù)的建設(shè),是一項(xiàng)系統(tǒng)化的工程,但核心點(diǎn)就在三處:
第一處,規(guī)范層,比如表命名規(guī)范、刷新策略規(guī)范、數(shù)據(jù)存儲(chǔ)生命周期、字段命名規(guī)范、指標(biāo)命名規(guī)范、時(shí)間維度規(guī)范、SQL編碼規(guī)范,等等,舊的業(yè)務(wù)可以不改造,但新的業(yè)務(wù)必須按照新的規(guī)范來(lái)。
第二處,主題域,也可以根據(jù)主題域,再細(xì)分為數(shù)據(jù)域,當(dāng)前很多大公司普遍開(kāi)展比較廣的業(yè)務(wù)范圍,僅電商就包括B2C、C2C、B2B、B2B2C等多種不同的業(yè)務(wù)模式,每種模式都具有自己的特點(diǎn)。同時(shí),ToB的企業(yè)服務(wù)市場(chǎng)也正在蓬勃發(fā)展,因此企業(yè)級(jí)市場(chǎng)又面臨人力、行政、法務(wù)、場(chǎng)地、財(cái)務(wù)等多種不同的主題組合,因此找公司業(yè)務(wù)負(fù)責(zé)人聊一聊,先把公司的業(yè)務(wù)范圍是什么、系統(tǒng)有哪些、數(shù)據(jù)庫(kù)有多少分類(lèi)、數(shù)據(jù)同步的方式如何,這些關(guān)鍵因素搞清楚,主題域才能夠做到合理劃分,避免后續(xù)大規(guī)模大范圍的調(diào)整。
第三處,數(shù)據(jù)分層規(guī)范,通常情況下,數(shù)據(jù)是分為ODS/DWD/DWS/ADS四層,一致性維度放在DIM中。這里再?gòu)?qiáng)調(diào)一下各層不同的地方。
ODS:源系統(tǒng)數(shù)據(jù)接入的地方,也是數(shù)據(jù)倉(cāng)庫(kù)沉淀數(shù)據(jù)的核心,通常只存儲(chǔ)、不改造;
DWD:數(shù)據(jù)明細(xì)層,可以遵循三范式關(guān)系模型,也可以按照維度建模針對(duì)事實(shí)表做設(shè)計(jì),對(duì)生產(chǎn)數(shù)據(jù)進(jìn)行各種經(jīng)營(yíng)分析口徑的加工轉(zhuǎn)換;
DWS:數(shù)據(jù)匯總層,主要是為了日常運(yùn)營(yíng)中快速反映各業(yè)務(wù)部門(mén)的數(shù)據(jù)需求,建立各種數(shù)據(jù)模型,對(duì)明細(xì)類(lèi)數(shù)據(jù)進(jìn)行分主題、分維度的聚合匯總;
ADS:數(shù)據(jù)出口層,面向需求做設(shè)計(jì),是支撐需求和應(yīng)用的數(shù)據(jù)重要出口,針對(duì)諸如行列轉(zhuǎn)換、數(shù)據(jù)剪裁、數(shù)據(jù)加密等實(shí)際的業(yè)務(wù)場(chǎng)景;
DIM:一致性維度,不再贅述。
以上是一個(gè)理想數(shù)據(jù)倉(cāng)庫(kù)的“雛形”。
0x02 我們有哪些方法來(lái)填坑
我們識(shí)別出了業(yè)務(wù)的問(wèn)題,也有了建設(shè)的目標(biāo),下一步就是找策略、講打法的階段了。
首先,針對(duì)數(shù)據(jù)倉(cāng)庫(kù)的改造,要有一套清晰的主線邏輯,大致包括如下幾個(gè)部分:
- 識(shí)別環(huán)境:包括外部環(huán)境和企業(yè)內(nèi)部資產(chǎn);
- 尋找問(wèn)題:發(fā)現(xiàn)并標(biāo)記當(dāng)前業(yè)務(wù)中存在的問(wèn)題;
- 整理業(yè)務(wù):找熟悉公司業(yè)務(wù)的人,整理業(yè)務(wù)大圖;
- 制定標(biāo)準(zhǔn):按照理想數(shù)據(jù)倉(cāng)庫(kù)的規(guī)范,整理團(tuán)隊(duì)自己的標(biāo)準(zhǔn);
- 建立流程:將日常的開(kāi)發(fā)行為,不斷的與規(guī)范進(jìn)行對(duì)焦;
- 執(zhí)行落地:通過(guò)監(jiān)控、CodeReview等方法,強(qiáng)力落地;
- 總結(jié)思考:階段性的總結(jié)問(wèn)題,并進(jìn)行改進(jìn)。
接下來(lái)分階段闡述:
識(shí)別環(huán)境:PMP中將項(xiàng)目的外部環(huán)境,定位了事業(yè)環(huán)境因素和組織過(guò)程資產(chǎn),兩大部分。針對(duì)事業(yè)環(huán)境因素,往往公司進(jìn)行數(shù)倉(cāng)建設(shè)時(shí),都是在業(yè)務(wù)高速發(fā)展的大背景下開(kāi)展的,數(shù)據(jù)開(kāi)發(fā)與分析師團(tuán)隊(duì),面對(duì)強(qiáng)大的業(yè)務(wù)需求壓力,會(huì)尋求進(jìn)行可靠的配合,識(shí)別團(tuán)隊(duì)中靠譜的人,進(jìn)行合作并推動(dòng)項(xiàng)目落地。針對(duì)組織過(guò)程資產(chǎn),企業(yè)往往會(huì)有各種各樣的業(yè)務(wù),以及各種不同的文檔,在數(shù)倉(cāng)團(tuán)隊(duì)進(jìn)行落地的過(guò)程中,是需要借鑒并參考大量的公司材料,整理團(tuán)隊(duì)自己的業(yè)務(wù)大圖,同時(shí)盡可能的復(fù)用公司已有的技術(shù)工具,將精力更加聚焦在數(shù)據(jù)倉(cāng)庫(kù)本身的業(yè)務(wù)上。
尋找問(wèn)題:數(shù)據(jù)倉(cāng)庫(kù)的建設(shè),本質(zhì)上“沒(méi)有對(duì)錯(cuò)”之分,只有相對(duì)合理與否的區(qū)別,一個(gè)好的數(shù)據(jù)倉(cāng)庫(kù)工程師,一定能夠發(fā)現(xiàn)很多問(wèn)題,從問(wèn)題中總結(jié)共性的問(wèn)題出來(lái)。這些問(wèn)題既不會(huì)因?yàn)楣緣汛蠖?,因此及時(shí)總結(jié)的問(wèn)題,制定合理的應(yīng)對(duì)方法,并將知識(shí)傳承給新加入團(tuán)隊(duì)的人員,共同做大做強(qiáng),是數(shù)據(jù)倉(cāng)庫(kù)走向成熟的標(biāo)志之一、
整理業(yè)務(wù):整理業(yè)務(wù)的“輸出”,應(yīng)該是部門(mén)業(yè)務(wù)大圖、數(shù)據(jù)流程大圖、數(shù)據(jù)倉(cāng)庫(kù)地圖、數(shù)據(jù)文檔集合等內(nèi)容。我們梳理一個(gè)復(fù)雜的知識(shí)體系,往往要從“點(diǎn)、線、面”三個(gè)角度,來(lái)串起整體業(yè)務(wù)。點(diǎn)是指每次做項(xiàng)目的文檔,詳細(xì)記錄的需求背景、需求詳情以及數(shù)倉(cāng)的設(shè)計(jì)思路;線是指我們的數(shù)據(jù)產(chǎn)品/分析專(zhuān)題/業(yè)務(wù)環(huán)節(jié),將針對(duì)某個(gè)問(wèn)題的分析或者剞劂思路展示出來(lái);面是指業(yè)務(wù)大圖、流程大圖、數(shù)倉(cāng)地圖等不同角度看數(shù)據(jù)的方式,根據(jù)內(nèi)容不同,提供給數(shù)據(jù)、業(yè)務(wù)、分析師等各方使用。“點(diǎn)、線、面”的方式,能夠很好的消除信息不對(duì)稱(chēng)、數(shù)據(jù)查找、歷史業(yè)務(wù)理解等問(wèn)題。
制定標(biāo)準(zhǔn):規(guī)范、主題域、數(shù)據(jù)分層,因?yàn)椴煌镜臉I(yè)務(wù)千差萬(wàn)別,成熟的業(yè)務(wù),如電商,已經(jīng)走向了全面算法化、分析化的地步,但也有很多創(chuàng)新型的業(yè)務(wù),能夠建設(shè)出基本的數(shù)據(jù)倉(cāng)庫(kù)體系,就算是業(yè)務(wù)上的一大突破了。因此,雖然面上的事情是大體相同的,但是細(xì)節(jié)的調(diào)整,還是需要開(kāi)發(fā)團(tuán)隊(duì)自己來(lái)斟酌衡量。
建立流程:數(shù)據(jù)開(kāi)發(fā)的流程,分為代碼提交時(shí)的CodeReview、數(shù)據(jù)上線前的自測(cè)、數(shù)據(jù)運(yùn)行時(shí)的監(jiān)控、項(xiàng)目交付前的測(cè)試、以及最終的業(yè)務(wù)驗(yàn)收。但很多時(shí)候,為了避免數(shù)據(jù)出問(wèn)題,我們會(huì)定下許許多多繁瑣的標(biāo)準(zhǔn),這些標(biāo)準(zhǔn)會(huì)多多少少的拖累數(shù)據(jù)開(kāi)發(fā)的進(jìn)度。注意,不要矯枉過(guò)正,過(guò)份的追求規(guī)范,會(huì)影響日常的數(shù)倉(cāng)建設(shè)進(jìn)度。
執(zhí)行落地:大多數(shù)情況下,團(tuán)隊(duì)都是按照項(xiàng)目制的方式,來(lái)組織相關(guān)的開(kāi)發(fā)工作,因此除了PRD評(píng)審?fù)?,?shù)據(jù)團(tuán)隊(duì)還應(yīng)該有自己的技術(shù)評(píng)審,詳細(xì)講解業(yè)務(wù)的背景、E-R關(guān)系、模型設(shè)計(jì)方法、模型開(kāi)發(fā)方式、數(shù)據(jù)規(guī)范與質(zhì)量保障、數(shù)據(jù)出口、數(shù)據(jù)自測(cè)方式等內(nèi)容,你可以不嚴(yán)格執(zhí)行這些過(guò)程,但也一定不能完全忽視這些過(guò)程。
總結(jié)思考:沒(méi)有什么規(guī)范是永恒的,同時(shí)也沒(méi)有什么問(wèn)題是不會(huì)新增的,定期 Review團(tuán)隊(duì)的工作過(guò)程,在周會(huì)、內(nèi)部分享、外部合作等場(chǎng)景下交流經(jīng)驗(yàn),是很有助益的。
0xFF 避免挖新坑的關(guān)鍵因素
避免“新坑”,核心在人,抓手在新人的招聘。
我一直認(rèn)為,每個(gè)人做的選擇,在當(dāng)時(shí)的情景看來(lái),都是最合理的選擇,無(wú)論旁人看起來(lái)如何的不靠譜。無(wú)他,趨利避害的人性使然。
每個(gè)人的職業(yè)生涯都有各種不同的選擇,或?yàn)榱艘环荽髲S的經(jīng)歷、或?yàn)榱艘环N輕松的生活、或?yàn)榱艘环葙嶅X(qián)的機(jī)會(huì)、或?yàn)榱俗约旱娜松硐?。但技術(shù)人,由于其職業(yè)的特殊性,往往其職業(yè)發(fā)展都是相似的:【技術(shù)達(dá)人】 - 【獨(dú)當(dāng)一面】 - 【領(lǐng)域?qū)<摇?- 【團(tuán)隊(duì)Leader】 - 【部門(mén)領(lǐng)導(dǎo)】。只要認(rèn)真工作5-7年,成為某個(gè)領(lǐng)域的專(zhuān)家,也就是P7的級(jí)別,并不難。但是再往后走,講道理,絕大多數(shù)團(tuán)隊(duì),不需要多個(gè)Leader,因此就非常講究時(shí)運(yùn)了。
因此,新人的加入,一定要看清楚加入的目的是什么、對(duì)于團(tuán)隊(duì)的訴求如何,畢竟我們不希望人員一直是流動(dòng)的,因?yàn)樵俸玫囊?guī)范和方法,也是需要人來(lái)傳承的,但團(tuán)隊(duì)流動(dòng)性很高時(shí),舊的坑即使填上了,新的坑也會(huì)不斷的被挖出來(lái)。
這也是HR一直在強(qiáng)調(diào):“我們?cè)谡衅缸约旱耐?rdquo;,發(fā)動(dòng)大家一同招聘的原因。
有道是:“謀事在人,成事在天”,我們年輕的時(shí)候,都有選擇的權(quán)利,只是不論是年歲增長(zhǎng)、還是職級(jí)晉升,往后的選擇,會(huì)越來(lái)越少。這種選擇,不僅僅是招聘一個(gè)新人的公司成本,也是職業(yè)發(fā)展的個(gè)人成本。