天天看點

資料倉庫企業最佳實踐系列之數倉規範建設

作者:程式員果汁兒

目錄:

1、為什麼要建立數倉規範

2、具體規範的設定

1、為什麼要建立數倉規範

無規矩不成方圓,建立規範的目的也是為了提升開發效率,可以很快的追蹤資料鍊路,最終保障傳遞品質。

我們在開發過程中遇到的問題:

1、接到需求,不知道資料該從那張表出,隻能從頭再來一遍;

2、數倉幾千張表,不清楚有什麼作用,能否能用上,也不知道是否可以删除;

3、同僚給了一堆表名,看半天,不知道這些表是做什麼的;

4、資料結果有錯誤,找問題找一天都不知道是啥。

資料規範是數倉體系建設的"語言",是資料使用的說明書和翻譯官,同時也是資料品質的保駕護航者。為了資料體系能夠長久健康的發展,數倉管理,應該從人治逐漸轉變到制度化、規範化、工具化的道路上了來。

2、具體規範的設定

1、表命名規範

1.1 正式表

命名規則

STG層、ODS層:[層次]_[源系統資料庫名]_[業務系統表名]_[分表規則]

資料倉庫企業最佳實踐系列之數倉規範建設
資料倉庫企業最佳實踐系列之數倉規範建設

1、由字母、下劃線、數字組成,不能以下劃線和數字開頭

2、盡量用英文簡寫,其次是英文

3、部分可以漢語拼音首字母标準縮寫,如中國制造zgzz

4、命名不宜過長

分表規則

DA : 日明細,表示運作周期是每日(dialy),并且每個分區都存儲的是全量資料

DI :日明細,表示運作周期是每日(dialy),并且每個分區都存儲的是增量資料

(備注A :all 表示全量的意思 I :increment 表示增量的意思)

DS : 日彙總, 主要用在dws 層

WS : 周彙總,主要用在dws 層

MS : 月彙總,主要用在dws 層

YS : 年彙總,主要用在dws 層

層次:遵循倉庫模型架構定義的層次結構命名

如STG、ODS、DWD、DWA、ADS、APP

STG(資料緩存層):通過每日批處理全量或增量方式加載上遊源業務系統提供的資料,資料保留時間根據業務具體确定,一般為7到14天。

ODS(資料标準層):ODS層是資料倉庫準備區,為DWD層提供基礎原始資料。

DWD(明細資料層):根據 ODS 層資料按主題性以及領域進行歸類模組化。存放最細粒度的事實表資料。

DWA(服務資料層):資料彙總層,在 DWD 層基礎上進行彙總。

ADS層(資料集市層):特定的部門或者使用者的需求,按照多元的方式進行存儲。

APP 層(資料應用層):服務于終端使用者,高度彙總。(資料分析師專用)

1.2 臨時表

mid表 : 是一個完整的腳本執行過程中使用的臨時存儲表,每個腳本中都可以根據需要可以設定若幹個mid表,mid表的名字具有唯一性。

mid表的使用具有獨占性,即一個mid表隻能被一個腳本使用,生命周期在本腳本内。腳本執行前,需要先清空mid表(分區) ,mid表命名規則:[mid]_[腳本名稱]_[序号]

資料倉庫企業最佳實踐系列之數倉規範建設

1.3 視圖命名

[層次]_[主題]_[有意義的縮寫]_v_[分表規則]

資料倉庫企業最佳實踐系列之數倉規範建設

1.4 日志表命名

以下為目前接入日志資料存儲表:

資料直接入到ODS層;

日志表命名規則:

ods_log_[日志類型]_[分表規則]

di:表示日志表每天分區為增量資料

資料倉庫企業最佳實踐系列之數倉規範建設

1.5 程式命名

python程式命名

結構為:[目标表名].py

程式名稱一律小寫

備注 : 所有程式名一律小寫,并且最終輸出的表名要和python腳本名一緻,一個python腳本隻能有一個輸出結果表。所有的程式的程式名和最終生成的表名、排程系統中的任務名一緻,不要一個程式生成多個結果表。

資料倉庫企業最佳實踐系列之數倉規範建設

1.6 建表規範

建表時使用以下四種字段類型

string(字元串)

int (短整型)

bigint(長整型,用于金額等字段類型,如金額機關為元,則建議轉換成分)

double(僅用于服務費率等含小數字段類型)

如果采用分區表,分區字段定義為dt;如需要建立二級分區,請使用dp或根據業務邏輯建立。除維表(dim)和臨時表(mid),其餘表建成分區external表(使用時需要避免全表掃描)

external建表模式下,表分區删除後,資料檔案任保留。

1) 字段間用逗号(\t)分割,行間隔用換行符(\n)分割

2) 日期分區字段統一采用dt命名,格式如下“yyyy-mm-dd”,partitioned by(dt string)。

3) dim表一律用非分區表

4) mid表一律用分區表(為了查問題時能夠追溯到某一時間點某個運作過程的結果)

6) stg、ods、dwd、dwa、dws、app表一律采用分區表,以da或di結尾

7) 建表語句中必須指定分區鍵、行、列分隔符

2、分層規範

一個好的分層架構,有以下好處:

1、清晰資料結構:每一個資料分層都有對應的作用域,在使用資料的時候能更友善的定位和了解。

2、資料血緣追蹤:若出現目标資料異常時,清晰的血緣關系可以快速定位問題所在。而且,血緣管理也是中繼資料管理重要的一部分。

3、減少重複開發:資料的逐層加工原則,下層包含了上層資料加工所需要的全量資料,避免了每個資料開發人員都重新從源系統抽取資料進行加工。

4、資料關系條理化:源系統間存在複雜的資料關系,資料倉庫會對相同主題的資料進行統一模組化,把複雜的資料關系梳理成條理清晰的資料模型,使用時就可避免上述問題了。

5、屏蔽原始資料的影響:原始資料位于數倉的最底層,離應用層資料還有多層的資料加工,能保持應用層的穩定性。

ODS:貼源層,原始資料不做變化或者僅做最簡單的補全後存入。

DWD:對資料源做清洗、轉換、補全、編碼轉換後加載到明細資料層。

DWS:彙總資料層+主題寬表。

APP:應用層,面向最終應用。

注意:

1、禁止反向調用

2、ODS 隻能被 DWD 調用。

3、DWD 可以被 DWS 和 ADS 調用。

4、DWS 隻能被 ADS 調用。

繼續閱讀