一篇文章搞懂数据仓库:数据仓库规范设计
目錄
一、為什么要進行規(guī)范設計?
二、設計規(guī)范 - 指標
三、命名規(guī)范 - 表命名
3.1 常規(guī)表
3.2 中間表
3.3 臨時表
3.4 維度表
四、開發(fā)規(guī)范
五、流程規(guī)范
一、為什么要進行規(guī)范設計?
無規(guī)矩、不方圓。規(guī)范設計是在具體開發(fā)工作之前制定的,過程中不斷進行完善。目的在于約束N個人對齊認知,按照一個標準或流程進行開發(fā),以保證數(shù)據(jù)一致性,流程清晰且穩(wěn)定。
一個良好的規(guī)范設計,應當起到以下作用:提高開發(fā)效率,提升質量,降低溝通對齊成本,降低運維成本等。
下面小編將帶領大家盤一盤數(shù)據(jù)倉庫有哪些規(guī)范,從中挑選幾個重點細說:
- 設計規(guī)范
? ? ? ? ? ? 邏輯架構、技術架構、分層設計、主題劃分、方法論
- ?命名規(guī)范
? ? ? ? ? ? 各層級命名、任務命名、表命名、字段命名、指標命名等?
- 模型規(guī)范
? ? ? ? ? ? 建模方法、建模工具、血緣關系、維度退化、一致性維度、元數(shù)據(jù)管理
- 開發(fā)規(guī)范
? ? ? ? ? ? 腳本注釋、字段別名、編碼規(guī)范、腳本格式、數(shù)據(jù)類型、縮寫規(guī)范?
- 流程規(guī)范
? ? ? ? ? ? 需求流程、工程流程、上線流程、調度流、調度和表生命周期管理
?
二、設計規(guī)范 - 指標
- Step1:面向主題域管理
為了提高指標管理的效率,你需要按照業(yè)務線、主題域和業(yè)務過程三級目錄方式管理指標。
- Step2:劃分原子指標和派生指標
原子指標 +?原子指標? =?派生指標
- Step3:進行指標命名規(guī)范
需要遵循兩個原則:易懂與統(tǒng)一
- 易懂,就是看到指標的名稱,就可以基本判斷這個指標歸屬于哪個業(yè)務過程;
- 統(tǒng)一,就是要確保派生指標和它繼承的原子指標命名是一致的。
對于原子指標,標名稱適合用“動作 + 度量”的命名方式(比如注冊用戶數(shù)、購買用戶數(shù))
對于派生指標,應該嚴格遵循“時間周期 + 統(tǒng)計粒度 + 修飾詞 + 原子指標”的命名方式。(比如30天內黑卡會員購買用戶數(shù))
- Step4:分級管理
指標確實是多,如果一視同仁去管理其實很難,所以可以按照下面的原則進行等級劃分:
- 一級指標:數(shù)據(jù)中臺直接產出,核心指標(提供給公司高層看的)、原子指標以及跨部門的派生指標。
- 二級指標:基于中臺提供的原子指標,業(yè)務部門創(chuàng)建的派生指標。
三、命名規(guī)范 - 表命名
3.1 常規(guī)表
常規(guī)表是我們需要固化的表,是正式使用的表,是目前一段時間內需要去維護去完善的表。
規(guī)范:分層前綴[dwd|dws|ads|bi]_業(yè)務域_主題域_XXX_更新評率|全量/增量。?
業(yè)務域、主題域我們都可以用詞根的方式枚舉清楚,不斷完善,粒度也是同樣的,主要的是時間粒度、日、月、年、周等,使用詞根定義好簡稱。
例如:? dwd_xxx_xxx_da
-
di :每日增量
-
da:每日全量
-
mi:每月增量
-
ma:每月全量
3.2 中間表
中間表一般出現(xiàn)在Job中,是Job中臨時存儲的中間數(shù)據(jù)的表,中間表的作用域只限于當前Job執(zhí)行過程中,Job一旦執(zhí)行完成,該中間表的使命就完成了,是可以刪除的(按照自己公司的場景自由選擇,以前公司會保留幾天的中間表數(shù)據(jù),用來排查問題)。
規(guī)范:mid_table_name_[0~9|dim]
table_name是我們任務中目標表的名字,通常來說一個任務只有一個目標表。這里加上表名,是為了防止自由發(fā)揮的時候表名沖突,而末尾大家可以選擇自由發(fā)揮,起一些有意義的名字,或者簡單粗暴,使用數(shù)字代替,各有優(yōu)劣吧,謹慎選擇。通常會遇到需要補全維度的表,這里我喜歡使用dim結尾。中間表在創(chuàng)建時,請加上 ,如果要保留歷史的中間表,可以加上日期或者時間戳
3.3 臨時表
臨時表是臨時測試的表,是臨時使用一次的表,就是暫時保存下數(shù)據(jù)看看,后續(xù)一般不再使用的表,是可以隨時刪除的表。
規(guī)范:tmp_xxx
只要加上tmp開頭即可,其他名字隨意,注意tmp開頭的表不要用來實際使用,只是測試驗證而已。
3.4 維度表
維度表是基于底層數(shù)據(jù),抽象出來的描述類的表。維度表可以自動從底層表抽象出來,也可以手工來維護。
規(guī)范:dim_xxx
維度表,統(tǒng)一以dim開頭,后面加上,對該指標的描述,可以自由發(fā)揮。
四、開發(fā)規(guī)范
| 1 | 表和列的注釋釋是否有缺失,復雜計算邏輯是否有注釋釋 |
| 2 | 任務是否支持多次重跑而輸出不變,不能有insert into語句 |
| 3 | 分區(qū)表是否使用分區(qū)鍵過濾并且有有效裁剪 |
| 4 | 外連接的過逑條件是否使用正確,例如在左連接的where語句存在右表的過濾條件 |
| 5 | 關聯(lián)小表,是否使用/*+ map join * / hint |
| 6 | 不允許引用別的計算任務臨時表 |
| 7 | 原則上不允許存在一個任務更新多個目標表 |
| 8 | 是否存在笞、迪卡爾積 |
| 9 | 禁止在代碼里面使用drop 111ble、creat它111ble、renaiue 111ble、chan零column等ddl語句 |
| 10 | 使用動態(tài)分區(qū)時,有沒有檢查分區(qū)鍵值為NULL的情況 |
| 11 | DQC質量監(jiān)控規(guī)則是否配置,嚴禁棵奔 |
| 12 | 代碼中有沒有進行適當?shù)囊?guī)避數(shù)據(jù)傾斜語句 |
| 13 | Where條件中is null語句有沒有進行空字符串處理 |
五、流程規(guī)范
根據(jù)阿里流程規(guī)范,本文將數(shù)據(jù)倉庫研發(fā)流程抽象為如下幾點:
?
數(shù)倉系列傳送門:https://blog.csdn.net/weixin_39032019/category_8871528.html
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎總結
以上是生活随笔為你收集整理的一篇文章搞懂数据仓库:数据仓库规范设计的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 感知哈希算法原理与实现
- 下一篇: python刷题+leetcode(第一