全文共 3145 個字,建議閱讀 6 分鐘
導讀:資料倉儲的建設實施和落地需要團隊中不同成員的參與和配合,需要各種各樣的規範,規範的分層定義和表命名能讓使用者輕而易舉地明白該表的作用和含義。因此本文件重點介紹分層規範和可落地的表命名規範。
一、資料運營層:ODS(Operational Data Store)ODS層,是最接近資料來源中資料的一層,為了考慮後續可能需要追溯資料問題,因此對於這一層就不建議做過多的資料清洗工作,原封不動地接入原始資料即可,至於資料的去噪、去重、異常值處理等過程可以放在後面的DWD層來做。二、資料倉儲層:DW (Data Warehouse)資料倉儲層是我們在做資料倉儲時要核心設計的一層,在這裡,從 ODS 層中 獲得的資料按照主題建立各種資料模型 。DW 層又細分為DWD(Data Warehouse Detail )層、DWM(Data WareHouse Middle )層和DWS(Data WareHouse Servce )。1. 資料明細層:DWD (Data Warehouse Detail)該層一般保持和ODS層一樣的資料粒度 ,並且提供一定的資料質量保證 。DWD層要做的就是將資料清理、整合、規範化、髒資料、垃圾資料、規範不一致的、狀態定義不一致的、命名不規範的資料都會被處理。同時 ,為了提高資料明細層的易用性 ,該層會採用一些維度退化手法 ,將維度退化至事實表中, 減少事實表和維表的關聯。另外,在該層也會做一部分的資料聚合,將相同主題的資料彙集到一 張表中 ,提高資料的可用性 。2. 資料中間層:DWM (Data WareHouse Middle)該層會在 DWD 層的資料基礎上,對資料做輕度的聚合操作,生成一系列的中間表,提升公共指標的複用性, 減少重複加工。直觀來講 , 就是對通用的核心維度進行聚合操作, 算出相應的統計指標。在實際計算中 , 如果直接從 DWD 或者 ODS 計算出寬表的統計指標 , 會存在 計算量太大並且維度太少的問題,因此一般的做法是,在 DWM 層先計算出多個小的 中間表 ,然後再拼接成一 張 DWS 的寬表 。 由於寬和窄的界限不易界定,也可以去掉 DWM 這一層, 只留 DWS 層,將所有的資料再放在DWS 亦可。3.資料服務層:DWS (Data WareHouse Servce)DWS 層為公共彙總層, 會進行輕度彙總 , 粒度比明細資料稍粗,基於DWD層上的基礎資料, 整合彙總成分析某一個主題域的服務資料,一般是寬表。DWS層應覆蓋 80%的應用場景 。又稱資料集市或寬表。按照業務劃分,如主題域流量、訂單、使用者等 ,生成欄位比較多的寬表 , 用 於提供後續的業務查詢,OLAP分析,資料分發等。一般來講,該層的資料表會相對比較少,一張表會涵蓋比較多的業務內容,由於其欄位較多,因此一般也會稱該層的表為寬表。三、資料應用層:APP (Application)在這裡,主要是提供給資料產品和資料分析使用的資料 ,一般會存放在ES 、 PostgreSql、Redis 等系統中供線上系統使用 ,也可能會存在Hive或者Druid中供資料分析和資料探勘使用 。比如我們經常說的報表資料,一般就放在這裡。最後補充一個維表層,維表層主要包含兩部分資料:高基數維度資料:一般是使用者資料表、商品資料表類似的資料表。資料量可能是千萬級或者上億級別。低基數維度資料:一般是配置表,比如列舉值對應的中文含義,或者日期維表。詞根屬於數倉建設中的規範 ,屬於後設資料管理的範疇,現在把這個劃到資料治理的一部分。完整的數倉建設是包含資料治理的,只是現在談到數倉偏向於資料建模 , 而談到資料治理,更多的是關於資料規範、資料管理。表命名 ,其實在很大程度上是對後設資料描述的一種體現 ,表命名規範越完善 ,我們能從表名獲取到的資訊就越多。比如:一部分業務是關於貨架的,英文名是:rack , rack 就是一個詞根,那我們就在所有的表、欄位等用到的地方都叫 rack, 不要叫成 別的什麼 。 這就是詞根的作用, 用來統一命名,表達同一個含義。指標體系中有很多“率”的指標,都可以拆解成XXX+率 ,率可以叫 rate ,那我 們所有的指標都叫做 XXX+rate。舉例 :以流程圖的方式來展示,更加直觀和易懂,本圖側重 dwm 層表的命名 規範, 其餘命名是類似的道理 :第一個判斷條件是該表的用途,是中間表、原始日誌還是業務展示用的表如果該表被判斷為中間表, 就會走入下一個判斷條件:表是否有 group 操作 透過是否有 group 操作來判斷該表該劃分在 dwd 層還是 dwm 和 dws 層如果不是 dwd 層,則需要判斷該表是否是多個行為的彙總表(即寬表)。最後再分別填上事業群 、部門、業務線、自定義名稱和更新頻率等資訊即可。自定義 :一般會盡可能多描述該表的資訊,比如活躍表、留存表等常規表是我們需要固化的表,是正式使用的表,是目前一段時間內需要去維護去 完善的表。規範:分層字首[dwd|dws|ads]_部門_業務域_主題域_XXX_更新週期|資料範圍。業務域、主題域我們都可以用詞根的方式列舉清楚,不斷完善, 更新週期主要的是時間粒度、日、月、年、周等。中間表一般出現在 Job 中,是 Job 中臨時儲存的中間資料的表,中間表的作 用域只限於當前 Job 執行過程中,Job 一旦執行完成,該中間表的使命就完 成了,是可以刪除的 (按照自己公司的場景自由選擇,以前公司會保留幾天 的中間表資料,用來排查問題) 。規範:mid_table_name_[0~9|dim]table_name 是我們任務中目標表的名字,通常來說一個任務只有一個目標表。 這裡加上表名,是為了防止自由發揮的時候表名衝突,而末尾大家可以選擇自 由發揮,起一些有意義的名字,或者簡單粗暴,使用數字代替,各有優劣吧,謹慎選擇。通常會遇到需要補全維度的表,這裡使用dim 結尾。中間表在建立時,請加上 ,如果要保留歷史的中間表,可以加上日期或者時間戳。臨時表是臨時測試的表,是臨時使用一次的表,就是暫時儲存下資料看看,後續一般不再使用的表,是可以隨時刪除的表。只要加上 tmp 開頭即可,其他名字隨意,注意 tmp 開頭的表不要用來實際使用,只是測試驗證而已。維度表是基於底層資料,抽象出來的描述類的表。維度表可以自動從底層表抽象維度表,統一以 dim 開頭,後面加上,對該指標的描述,可以自由發揮。手工表是手工維護的表,手工初始化一次之後,一般不會自動改變,後面變更,一般來說,手工的資料粒度是偏細的,所以,暫時我們統一放在dwd層,後面 如果有目標值或者其他型別手工資料,再根據實際情況分層。手工表,增加特殊的主題域,manual ,表示手工維護表。可讀性優於長度(詞根,避免出現同一個指標,命名一致性)數量欄位字尾_cnt等標識...保證主題域內,指標口徑一致,無歧義。另外,還需要注意同一口徑的指標資料來源要一致。(2) 每次上報的資料都是所有的資料 (變化的 + 沒有變化的)(2) 每次上報的資料都是所有的資料(變化的+沒有變化的)(1) 記錄一個事物從開始,一直到當前狀態的所有變化的資訊;(2) 拉鍊表每次上報的都是歷史記錄的最終狀態,是記錄在當前時刻的歷史總量;(3) 當前記錄存的是當前時間之前的所有歷史記錄的最後變化量(總量);
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70027827/viewspace-2952093/,如需轉載,請註明出處,否則將追究法律責任。