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