[原創]-數據倉庫ETL開發


ETL開發

概述

ETL是數據倉庫的後臺,主要包含抽取、清洗、規範化、提交四個步驟,傳統數據倉庫通常分爲四層模型。web

分層的做用:數據庫

1.劃分ETL階段工做重心,便於管理微信

2.下降開發和維護成本app

3.減小需求變化帶來的衝擊編輯器

4.便於數據問題跟蹤工具

名詞解釋:大數據

  • ODS——操做性數據
  • DW——數據倉庫
  • DM——數據集市

STG層

在維度建模階段已經肯定了源系統,並且對源系統進行了數據評估。STG層是根據CDC策略把各個源系統的數據抽取到數據倉庫中。STG層主要是面向批處理的形式,若是是根據日誌信息實時同步,能夠跳過STG層直接進入ODS層。flex

STG做用: 減輕源系統壓力;數據備份,支持重跑;便於問題跟蹤;數據質量檢查,主要起到緩衝的做用。優化

開發步驟:編碼

  1. 肯定CDC策略,根據源系統的數據情況選擇一個合適的CDC策略。
  2. 設計Mapping文檔。
  3. 設計物理模型,STG的物理模型通常包括源系統的全部字段和審計字段,例如:源系統名稱,源表名稱,加載時間,加載方式。能夠去掉其餘約束條件,好比主鍵、索引,默認值。若是源表和目標表的數據庫類型不一樣,最好字段長度要進行擴充,通常目標表的數據類型就選擇幾種經常使用,長度就選擇幾個固定的長度。
  4. 抽取數據,STG層面向異構數據源,最好選擇用ETL工具,通常ETL工具都支持多種數據源。STG層不作數據轉換。
  5. 加載數據,STG層通常保留7天或一月的數據

ODS層

ODS層是把STG層數據進行歷史存檔,保留源系統的全部歷史數據,若是是流式的,能夠跳過STG層,實時同步到ODS層。

ODS做用: 全量存儲源系統的數據;支持下游系統實時查詢業務;數據質量檢查

開發步驟:

  1. 設計Mapping文檔。
  2. 設計物理模型,ODS的物理模型通常包括源系統的全部字段和審計字段,可是和源系統最主要的區別是ODS層加了邏輯刪除標記和增量時間戳。由於不少源系統均可能進行物理刪除數據,即便有邏輯刪除標記,可是也能夠在後臺人工刪除數據。
  3. 抽取數據,ODS層從STG層抽取數據,在同一個數據平臺上,能夠採用ETL工具,也能夠手工編碼。
  4. 加載數據,進行數據比較,判斷是否有物理刪除狀況,若是有打上刪除標記。ODS層保留全量數據。

DW層

DW層是清洗、規範化,提交一致化維度和事實的工做區,創建反規範化的維度模型。

數據清洗:數據清洗是發現數據質量問題並糾正數據的過程,通用的方法是戴明質量環

主要步驟:

  1. 定義數據質量需求,根據業務需求和數據剖析結果肯定數據質量需求的優先級。
  2. 制定數據質量測量類型
  3. 提交數據質量測量結果表,一般異常數據處理策略有:中斷處理;把拒絕記錄放在錯誤時間表裏;只作標記,數據繼續處理
  4. 糾正數據分爲四個優先級:必須在ETL處理;最好在ETL處理;最好在源頭處理;必須在源頭處理

數據規範化

因爲數據倉庫的數據來源各個業務系統,每一個業務系統相對都是封閉的,他們在命名、取值上都有本身的特色。規範化就是通過標準化、去重、合併、拆分、整合等過程把各個業務系統的數據統一命名,統一取值,創建企業標準版本數據。

主要步驟:

1.數據標準化

從數據的內容、格式、命名、計算規則等輸出爲惟一的版本數據,把各個源系統的相同描述對象可是不一樣取值進行統一,好比:性別字段,有的源系統用0和1或Man和Wonen。經過映射表統一命名爲M和F。

2.刪除重複數據

若是源系統中存在重複數據或者多個源系統維護了相同對象的數據,這時候就要根據保留規則,刪除重複數據,只保留惟一的一條數據。

3.數據共存

把各個業務系統的數據通過拆分、合併、整合。例如相同的客戶號,二個源系統都維護了這個客戶的聯繫方式,這時候就要根據業務規則來選擇保留哪那個源系統的值。

維度表的提交

  • 1.確認粒度

維度表的粒度就是表的業務主鍵,根據業務主鍵來判斷記錄的惟一性。

  • 2.選擇代理鍵生成器

ETL工具和數據庫都有設置字段自增加的功能。

  • 3.選擇維度表類型

根據業務系統的實際狀況選擇合適的維度表類型,通常採用緩慢變化維類型1和類型2。

  • 4.增量加載維度數據

維度表的每一個字段都要設置默認值,不能爲空。首次加載的時候要有一條代理鍵爲-1的默認記錄,爲了防止事實表查找不到代理鍵。

  • 5.生成代理鍵管道

爲了生成事實表的維度代理鍵,通常會建一個查找維表,查找維表包含業務主鍵和代理鍵的映射關係。

事實表的提交

  • 1.選擇事實表類型

根據業務需求選擇合適的事實表類型,通常會先建最細粒度的事務事實表,根據事務事實表建週期快照或累積事實表。

  • 2.用代理鍵替換主鍵

根據事實表中維表的業務主鍵關聯查找維表替換成代理鍵,若是關聯不上設置爲-1。

  • 3.增量加載事實數據

事實表的每一個字段不能爲空,事實表主要包含事實粒度的業務主鍵、維表業務主鍵、維表代理鍵、源表的主鍵、邏輯刪除標識和事實。便於從新加載事實表和問題跟蹤。因爲事實表的數據量大,通常採用分區的方式進行存儲。

  • 4.提交錯誤事實表

把加載事實表的拒絕記錄存儲在錯誤事實表中,以便進行數據質量跟蹤。

  • 5.事實表合併

一級事實表都是根據單個業務過程創建的,爲了便於分析和重用,須要把多個業務過程的事實表進行合併,造成二級事實表。

  • 6.事實表歸檔

隨着時間的推移,事實表中會存放大量的歷史數據,若是這些數據不多再出如今統計分析中,須要把這些數據遷移到其餘表中或以文件格式存儲。

DM層

DM層根據業務需求把DW層數據進行聚合或生成寬表。

建立聚合事實表

前臺展示的數據通常都是聚合後的數據,聚合後的數據量比最細粒度的事實表小不少,查詢性也有很大的提高。

建立聚合表的方法

  • 1.增量加載,建立聚合表,增量加載聚合表。

  • 2.聚合導航,用戶經過報表分析工具,根據用戶請求把基礎事實表自動生成聚合數據。

  • 3.物化視圖,建立物化視圖定時刷新聚合表。

建立縮小維度表

因爲聚合事實表的粒度和基礎事實表粒度不一樣,須要建立和聚合表相同粒度的維度表,這些維度表只是基礎維度表的縮小版。

ETL優化

1.減小磁盤I/O

  • 關聯查詢的時候,儘量把無效的數據過濾掉
  • 只查出須要的列
  • 大數據量儘可能不要有排序
  • 在加載數據時關閉日誌

2.分區和並行

  • 大數據量能夠進行分區
  • 查詢和任務調度均可以進行並行處理

3.增量加載

4.增長索引

5.大而化小,複雜的查詢能夠分紅多個子任務來執行。

6.重用結果集,把多個查詢任務的共用數據能夠單獨建臨時表。



掃描下方二維碼

加入優質社羣一塊兒交流吧!


如若二維碼過時

請添加小編微信,回覆關鍵詞:[進羣/加羣],


-今日互動-



ETL規範你知道了嗎?歡迎文章下方留言互動




若是對你有幫助的話

           
❤️來個「轉發朋友圈「在看」,是最大的支持❤️


本文分享自微信公衆號 - DataScience(DataScienceTeam)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。

相關文章
相關標籤/搜索