數(shù)倉(cāng)工作中的常見(jiàn)問(wèn)題及解決方案
數(shù)據(jù)倉(cāng)庫(kù)系列文章
- 數(shù)倉(cāng)架構(gòu)發(fā)展史
- 數(shù)倉(cāng)建模方法論
- 數(shù)倉(cāng)建模分層理論
- 數(shù)倉(cāng)建模—寬表的設(shè)計(jì)
- 數(shù)倉(cāng)建模—指標(biāo)體系
- 數(shù)據(jù)倉(cāng)庫(kù)之拉鏈表
- 數(shù)倉(cāng)—數(shù)據(jù)集成
- 數(shù)倉(cāng)—數(shù)據(jù)集市
- 數(shù)倉(cāng)—商業(yè)智能系統(tǒng)
- 數(shù)倉(cāng)—埋點(diǎn)設(shè)計(jì)與管理
- 數(shù)倉(cāng)—ID Mapping
- 數(shù)倉(cāng)—OneID
來(lái)源數(shù)據(jù)社
今天給大家分享一篇數(shù)倉(cāng)工作思考的文章。? ? ? ? ? ? ? ? ? ? ? ? ?
小 A 糊里糊涂進(jìn)入一家網(wǎng)約車出現(xiàn)服務(wù)公司,負(fù)責(zé)公司數(shù)倉(cāng)建設(shè),試用期主要一項(xiàng) KPI 是制定數(shù)據(jù)倉(cāng)庫(kù)建設(shè)規(guī)劃;因此小 A 本著從問(wèn)題出發(fā)為原點(diǎn),先對(duì)公司數(shù)倉(cāng)現(xiàn)狀進(jìn)行一輪深入了解,理清存在問(wèn)題,然后在以不忘初心原則提出解決問(wèn)題方案。相信很多數(shù)據(jù)建設(shè)者在公司發(fā)展某個(gè)階段時(shí)都會(huì)遇到類似小 A 公司問(wèn)題,也在思考或已經(jīng)在執(zhí)行落地解決這些問(wèn)題方案,希望通過(guò)小 A 案例可以給大家一些啟發(fā)。下面先看看小 A 公司數(shù)倉(cāng)現(xiàn)狀與問(wèn)題
01 數(shù)據(jù)倉(cāng)庫(kù)現(xiàn)狀
小 A 公司創(chuàng)建時(shí)間比較短,才剛過(guò)完兩周歲生日沒(méi)多久;業(yè)務(wù)增長(zhǎng)速度快,數(shù)據(jù)迅速增加,同時(shí)取數(shù)需求激增與數(shù)據(jù)應(yīng)用場(chǎng)景對(duì)數(shù)據(jù)質(zhì)量、響應(yīng)速度、數(shù)據(jù)時(shí)效性與穩(wěn)定要求越來(lái)越高;但技術(shù)能力滯后業(yè)務(wù)增長(zhǎng),如實(shí)時(shí)數(shù)倉(cāng)技術(shù)能力、高可用穩(wěn)定保障能力、流程規(guī)范缺少等,這些能力嚴(yán)重滯后業(yè)務(wù)發(fā)展,甚至有些還是停留在公司創(chuàng)建初期 case by case 階段。小 A 根據(jù)數(shù)據(jù)在數(shù)倉(cāng)流向(以下圖),從上游的業(yè)務(wù)系統(tǒng)測(cè)到數(shù)倉(cāng)內(nèi)部最后到下游數(shù)據(jù)應(yīng)用梳理數(shù)據(jù)倉(cāng)庫(kù)建設(shè)存在問(wèn)題。

業(yè)務(wù)系統(tǒng)側(cè)【上游】
數(shù)據(jù)倉(cāng)庫(kù)首先需要對(duì)業(yè)務(wù)系統(tǒng)結(jié)構(gòu)化業(yè)務(wù)數(shù)據(jù)、日志數(shù)據(jù)與埋點(diǎn)數(shù)據(jù)進(jìn)行歸集;數(shù)倉(cāng)與上游業(yè)務(wù)系統(tǒng)對(duì)接主要存在以下問(wèn)題:
-
缺失業(yè)務(wù)系統(tǒng)數(shù)據(jù)模型清單與變更同步:沒(méi)有對(duì)已歸集到數(shù)倉(cāng)業(yè)務(wù)系統(tǒng)數(shù)據(jù)模型記錄,業(yè)務(wù)系統(tǒng)數(shù)據(jù)模型發(fā)送變更也沒(méi)有對(duì)數(shù)倉(cāng)知會(huì),更多是出現(xiàn)問(wèn)題后或者是數(shù)據(jù)使用者事后告知數(shù)倉(cāng)。
-
缺少統(tǒng)一枚舉值編碼與變更同步:業(yè)務(wù)系統(tǒng)沒(méi)有統(tǒng)一枚舉值編碼,如訂單狀態(tài)有:下單、接單、成單,沒(méi)有統(tǒng)一對(duì)這些枚舉值進(jìn)行管理;如果后面對(duì)訂單狀態(tài)再增加一個(gè):取消單狀態(tài),這種變更也沒(méi)有對(duì)數(shù)倉(cāng)進(jìn)行知會(huì)。
-
業(yè)務(wù)部門搭建各自小數(shù)倉(cāng):有些部門繞過(guò)數(shù)倉(cāng)直接接入上游數(shù)據(jù)源,搭建各自的小數(shù)倉(cāng),從而導(dǎo)致數(shù)據(jù)孤島、重復(fù)計(jì)算、口徑不一致。
-
存在業(yè)務(wù)盲區(qū):有些業(yè)務(wù)需要專業(yè)知識(shí)背景如:財(cái)務(wù);有些業(yè)務(wù)規(guī)則保密級(jí)別高,無(wú)法對(duì)非業(yè)務(wù)相關(guān)員公開(kāi)業(yè)務(wù)邏輯,如風(fēng)控;因此無(wú)法系統(tǒng)梳理這些業(yè)務(wù)實(shí)體與實(shí)體之間關(guān)系,提煉指標(biāo),共享數(shù)據(jù)。
數(shù)倉(cāng)內(nèi)部
公司創(chuàng)建初期,數(shù)據(jù)量比較小、數(shù)據(jù)需求也不多、數(shù)據(jù)應(yīng)用場(chǎng)景也比較單一更多是為了滿足一下簡(jiǎn)單報(bào)表,因此數(shù)倉(cāng)主要是以接單方式驅(qū)動(dòng)工作,來(lái)一個(gè)需求做一個(gè),case by case,主要是為了快速響應(yīng)需求。但隨著業(yè)務(wù)迅速增加,數(shù)據(jù)量暴漲,數(shù)據(jù)應(yīng)用場(chǎng)景多樣化,慢慢暴露出以下問(wèn)題:
-
流程規(guī)范缺少:沒(méi)有流程與規(guī)范指引數(shù)據(jù)開(kāi)發(fā)者根據(jù)流程對(duì)數(shù)據(jù)進(jìn)行規(guī)范化建設(shè),導(dǎo)致數(shù)據(jù)分層分類不清晰,數(shù)據(jù)混亂;命名不規(guī)范,同義不同名,同名不同義;數(shù)據(jù)重復(fù)建設(shè),冗余數(shù)據(jù)多。
-
沒(méi)有體系化技術(shù)設(shè)計(jì):無(wú)論是離線或?qū)崟r(shí)數(shù)據(jù)采集、處理與分發(fā)都缺少體系化設(shè)計(jì)與搭建,更多是在前期 case by case 上面修修補(bǔ)補(bǔ);例如在離線與實(shí)時(shí)對(duì)同一數(shù)據(jù)源進(jìn)行采集;無(wú)差別對(duì)所有數(shù)據(jù)源每次全量抽取與 DWD 到 DWS 層無(wú)差別全量計(jì)算;T+1 與每小時(shí)批處理煙囪開(kāi)發(fā),同一寬表離線與實(shí)時(shí)煙囪開(kāi)發(fā)、重復(fù)計(jì)算與存儲(chǔ);對(duì)不同應(yīng)用場(chǎng)景無(wú)差別使用相同存儲(chǔ)與計(jì)算等等;
-
影響無(wú)互相隔離:數(shù)倉(cāng)數(shù)據(jù)存儲(chǔ)與計(jì)算,沒(méi)有與數(shù)據(jù)應(yīng)用服務(wù)存儲(chǔ)與技術(shù)隔離,存在互相之間資源搶占與問(wèn)題被放大情況;同時(shí)也存在數(shù)倉(cāng)底層模型設(shè)計(jì)很難兼容數(shù)據(jù)應(yīng)用層模型設(shè)計(jì)需求
數(shù)據(jù)應(yīng)用測(cè)【下游】
數(shù)倉(cāng)需要為不同數(shù)據(jù)應(yīng)用場(chǎng)景(風(fēng)控、C 端、業(yè)務(wù)運(yùn)營(yíng)等)提供數(shù)據(jù),不同數(shù)據(jù)應(yīng)用需求是不一致的,存在很多差異;同時(shí)數(shù)據(jù)在不同應(yīng)用場(chǎng)景價(jià)值也是不一樣的。因此需要清楚了解下游數(shù)據(jù)應(yīng)用場(chǎng)景與存在問(wèn)題才可以更好服務(wù)數(shù)據(jù)應(yīng)用方,下游主要存在以下問(wèn)題:
-
對(duì)數(shù)據(jù)應(yīng)用場(chǎng)景不了解:對(duì)下游數(shù)據(jù)需求應(yīng)用場(chǎng)景不了解或者沒(méi)有深入了解,沒(méi)有針對(duì)不同場(chǎng)景評(píng)估技術(shù)選型,簡(jiǎn)單粗暴使用一招打天下,對(duì)不同場(chǎng)景使用一套計(jì)算與存儲(chǔ)。
-
不知道數(shù)據(jù)被哪些應(yīng)用訪問(wèn):沒(méi)有對(duì)下游應(yīng)用對(duì)數(shù)據(jù)使用監(jiān)控與記錄,無(wú)法對(duì)數(shù)據(jù)使用情況與價(jià)值進(jìn)行量化
-
沒(méi)有量化數(shù)據(jù)需求優(yōu)先級(jí):對(duì)下游數(shù)據(jù)需求沒(méi)有優(yōu)先級(jí)評(píng)估機(jī)制,沒(méi)有量化數(shù)據(jù)需求優(yōu)先級(jí)
-
沒(méi)有自助取數(shù)工具:下游沒(méi)有取數(shù)能力,導(dǎo)致大部分的取數(shù)工作還是依賴數(shù)據(jù)開(kāi)發(fā)來(lái)完成。數(shù)據(jù)開(kāi)發(fā)大部分的時(shí)間都被臨時(shí)取數(shù)的需求占據(jù),根本無(wú)法專注在數(shù)倉(cāng)模型的構(gòu)建和集市層數(shù)據(jù)的建設(shè),最終形成了一個(gè)惡性循環(huán),一方面是數(shù)據(jù)不完善,另一方面是數(shù)據(jù)開(kāi)發(fā)忙于各種臨時(shí)取數(shù)需求。
-
數(shù)據(jù)接入方式多樣,接入效率低:每個(gè)數(shù)據(jù)應(yīng)用都要根據(jù)不同的中間存儲(chǔ),開(kāi)發(fā)對(duì)應(yīng)的代碼,如果涉及多個(gè)中間存儲(chǔ),還需要開(kāi)發(fā)多套代碼,數(shù)據(jù)接入效率很低。
-
數(shù)據(jù)質(zhì)量問(wèn)題:數(shù)據(jù)經(jīng)常因?yàn)?BUG 導(dǎo)致計(jì)算結(jié)果錯(cuò)誤,最終導(dǎo)致錯(cuò)誤的商業(yè)決策。
02 如何解決問(wèn)題
業(yè)務(wù)系統(tǒng)側(cè)【上游】
與業(yè)務(wù)系統(tǒng)側(cè)協(xié)同需要跨部門溝通與合作,因此需要溝通流程與標(biāo)準(zhǔn),讓雙方聚焦在公共目標(biāo);同時(shí)也要維護(hù)好你好我好的共存關(guān)系。主要是針對(duì)事前、事中、事后提出解決方案。
-
事前:與上游建立知會(huì)機(jī)制與協(xié)同流程,及時(shí)同步業(yè)務(wù)與模型變更;接管 ODS 層,控制源頭,ODS 是業(yè)務(wù)數(shù)據(jù)進(jìn)入數(shù)倉(cāng)的第一站,是所有數(shù)據(jù)加工的源頭,控制住源頭,才能從根本上防止一個(gè)重復(fù)的數(shù)據(jù)體系的出現(xiàn)。
-
事中:通過(guò)技術(shù)手段捕捉上游元數(shù)據(jù)與字典值變更,從而方便以后問(wèn)題追蹤與影響分析
-
事后:通過(guò)事后復(fù)盤(pán)優(yōu)化流程與迭代技術(shù)
數(shù)倉(cāng)內(nèi)部
數(shù)倉(cāng)內(nèi)部主要是要從技術(shù)體系、流程規(guī)范與數(shù)據(jù)架構(gòu)等幾個(gè)維度去解決這些問(wèn)題。
制定流程與規(guī)范
數(shù)據(jù)開(kāi)發(fā)流程:

數(shù)據(jù)開(kāi)發(fā)規(guī)范:

數(shù)倉(cāng)規(guī)范主要包括以下內(nèi)容:
1. 基礎(chǔ)字典【詞根】詞根是企業(yè)最細(xì)粒度業(yè)務(wù)術(shù)語(yǔ),是維度和指標(biāo)管理的基礎(chǔ),通過(guò)詞根可以用來(lái)統(tǒng)一表名、字段名、主題域名;建立和維護(hù)可收斂的詞根庫(kù),業(yè)務(wù)域、主題域我們都可以用詞根的方式枚舉清楚,不斷完善,粒度也是同樣的,主要的是時(shí)間粒度、日、月、年、周等,使用詞根定義好簡(jiǎn)稱,數(shù)倉(cāng)開(kāi)發(fā)的字段命名也可以使用詞根進(jìn)行組合;劃分為普通詞根與專有詞根
-
普通詞根:描述事物的最小單元體,如:交易-trade。
-
專有詞根:具備約定成俗或行業(yè)專屬的描述體,如:美元-USD。
詞根示例如下:

2. 基礎(chǔ)規(guī)范
數(shù)據(jù)域:數(shù)據(jù)縱向分域,如下圖

數(shù)據(jù)層級(jí):數(shù)據(jù)橫向分層,如下圖

3. 命名規(guī)范對(duì)模型命名標(biāo)準(zhǔn)化,規(guī)范各層(ODS、DWD、DWS、DM)命名,后期可以考慮借助類似以下命名規(guī)范工具提供效率與把控能力。

4. 規(guī)范性評(píng)估從以下幾個(gè)角度去衡量規(guī)范度

03 體系化架構(gòu)設(shè)計(jì)
從橫向采集、處理、增值、分發(fā)與縱向離線、實(shí)時(shí)體系化進(jìn)行技術(shù)架構(gòu)設(shè)計(jì)

一致性維度
一致性維度的意思是兩個(gè)維度如果有關(guān)系,要么就是完全一樣的,要么就是一個(gè)維度在數(shù)學(xué)意義上是另一個(gè)維度的子集。例如,如果建立月維度話,月維度的各種描述必須與日期維度中的完全一致,最常用的做法就是在日期維度上建立視圖生成月維度。這樣月維度就可以是日期維度的子集,在后續(xù)鉆取等操作時(shí)可以保持一致。如果維度表中的數(shù)據(jù)量較大,出于效率的考慮,應(yīng)該建立物化視圖或者實(shí)際的物理表。這樣,維度保持一致后,事實(shí)就可以保存在各個(gè)數(shù)據(jù)集市中。雖然在物理上是獨(dú)立的,但在邏輯上由一致性維度使所有的數(shù)據(jù)集市是聯(lián)系在一起,隨時(shí)可以進(jìn)行交叉探察等操作,也就組成了數(shù)據(jù)倉(cāng)庫(kù)。
一致性事實(shí)
在建立多個(gè)數(shù)據(jù)集市時(shí),完成一致性維度的工作就已經(jīng)完成了一致性的 80%-90%的工作量。余下的工作就是建立一致性事實(shí)。一致性事實(shí)和一致性維度有些不同,一致性維度是由專人維護(hù)在后臺(tái)(Back Room),發(fā)生修改時(shí)同步復(fù)制到每個(gè)數(shù)據(jù)集市,而事實(shí)表一般不會(huì)在多個(gè)數(shù)據(jù)集市間復(fù)制。需要查詢多個(gè)數(shù)據(jù)集市中的事實(shí)時(shí),一般通過(guò)交叉探查(drill across)來(lái)實(shí)現(xiàn)。為了能在多個(gè)數(shù)據(jù)集市間進(jìn)行交叉探查,一致性事實(shí)主要需要保證兩點(diǎn)。第一個(gè)是 KPI 的定義及計(jì)算方法要一致,第二個(gè)是事實(shí)的單位要一致性。如果業(yè)務(wù)要求或事實(shí)上就不能保持一致的話,建議不同單位的事實(shí)分開(kāi)建立字段保存。這樣,一致性維度將多個(gè)數(shù)據(jù)集市結(jié)合在一起,一致性事實(shí)保證不同數(shù)據(jù)集市間的事實(shí)數(shù)據(jù)可以交叉探查。
數(shù)據(jù)應(yīng)用側(cè)【下游】
針對(duì)數(shù)據(jù)應(yīng)用側(cè)解決思路主要是提高取數(shù)效率,減少數(shù)據(jù)質(zhì)量問(wèn)題,數(shù)據(jù)和接口復(fù)用,具體如下。
提高數(shù)據(jù)質(zhì)量
要想提升數(shù)據(jù)質(zhì)量,最重要的就是“早發(fā)現(xiàn),早恢復(fù)”:
-
早發(fā)現(xiàn),是要能夠先于數(shù)據(jù)使用方發(fā)現(xiàn)數(shù)據(jù)的問(wèn)題,盡可能在出現(xiàn)問(wèn)題的源頭發(fā)現(xiàn)問(wèn)題,這樣就為“早恢復(fù)”爭(zhēng)取到了大量的時(shí)間。主要方法是在數(shù)據(jù)產(chǎn)出任務(wù)運(yùn)行結(jié)束后,啟動(dòng)稽核校驗(yàn)任務(wù)對(duì)數(shù)據(jù)結(jié)果進(jìn)行掃描計(jì)算,判斷是否符合規(guī)則(完整性規(guī)則、一致性規(guī)則、準(zhǔn)確性規(guī)則)預(yù)期。
-
早恢復(fù),就是要縮短故障恢復(fù)的時(shí)間,降低故障對(duì)數(shù)據(jù)產(chǎn)出的影響。主要方法是基于數(shù)據(jù)血緣關(guān)系,建立全鏈路數(shù)據(jù)質(zhì)量監(jiān)控。對(duì)鏈路中每個(gè)表增加稽核校驗(yàn)規(guī)則之后,當(dāng)其中任何一個(gè)節(jié)點(diǎn)產(chǎn)出的數(shù)據(jù)出現(xiàn)異常時(shí),你能夠第一時(shí)間發(fā)現(xiàn),并立即修復(fù),做到早發(fā)現(xiàn)、早修復(fù)。
建設(shè)可視化的取數(shù)平臺(tái)
靠別人取數(shù),會(huì)存在大量的溝通和協(xié)作的成本,同時(shí)因?yàn)楣布袑訑?shù)據(jù)不完善,導(dǎo)致無(wú)法基于現(xiàn)有的數(shù)據(jù),直接完成取數(shù),需要數(shù)據(jù)開(kāi)發(fā)加工新的數(shù)據(jù),所以耗時(shí)會(huì)非常的長(zhǎng),一般需要一周時(shí)間。高昂的取數(shù)成本,壓制了取數(shù)的需求,也導(dǎo)致探索式的數(shù)據(jù)分析,根本不可能大規(guī)模的使用。通過(guò)自助取數(shù)平臺(tái),釋放取數(shù)效能,將大部分取數(shù)由非技術(shù)人員的需求方完成。通過(guò)以下幾點(diǎn)建設(shè)自助取數(shù)平臺(tái):
-
用圖形化的方式,替代了寫(xiě) SQL 的方式;
-
提供了對(duì)業(yè)務(wù)人員比較友好的業(yè)務(wù)過(guò)程、指標(biāo)、維度的概念,替換了表、字段;
-
每個(gè)指標(biāo)的業(yè)務(wù)口徑都能夠直接顯示;
-
用戶通過(guò)選取一些指標(biāo)和維度,添加一些篩選值,就可以完成取數(shù)過(guò)程;
-
界面非常簡(jiǎn)潔,使用門檻非常低。
end
