1. 程式人生 > >資料倉庫(四)之ETL開發

資料倉庫(四)之ETL開發

  • 概述

ETL是資料倉庫的後臺,主要包含抽取、清洗、規範化、提交四個步驟,傳統資料倉庫一般分為四層模型。 

                         

分層的作用 

                                                                      

  • STG層

 在維度建模階段已經確定了源系統,而且對源系統進行了資料評估。STG層是根據CDC策略把各個源系統的資料抽取到資料倉庫中。STG層主要是面向批處理的形式,如果是根據日誌資訊實時同步,可以跳過STG層直接進入ODS層。

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.糾正資料

                                                                  

規範化

由於資料倉庫的資料來源各個業務系統,每個業務系統相對都是封閉的,他們在命名、取值上都有自己的特點。規範化就是經過標準化、去重、合併、拆分、整合等過程把各個業務系統的資料統一命名,統一取值,建立企業標準版本資料。 

主要步驟 

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.事實表歸檔

隨著時間的推移,事實表中會存放大量的歷史資料,如果這些資料很少再出現在統計分析中,需要把這些資料遷移到其他表中或以檔案格式儲存。

 維度和事實資料修正

1. 糾正事實

消除事實,新增一條和原紀錄的度量乘以-1的值,這樣就能消除原紀錄的彙總帶來的影響。

更新事實,直接在原紀錄上更新。

刪除事實,刪除事實包含物理刪除和邏輯刪除,一般採用邏輯刪除。

2.優化和更正事實表主要有

在事實表中新增事實,歷史資料設定為預設值。

在事實表中新增維度,歷史資料設定為-1。

維度表中新增屬性,歷史資料為預設值。

修改維表和事實表的粒度大小。

3.處理延遲的事實

如果業務系統出現補錄的事務資料,這時候就要根據維度表中的開始日期和結束日期選擇合適的代理鍵。

4.維度重建

如果需要維度表重新載入,就要重新生成查詢維表和更新事實表的代理鍵,因為事實表已經儲存了維表的業務主鍵,可以根據查詢維表生成代理鍵。

  • DM層

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

1.建立聚合事實表 

前臺展現的資料一般都是聚合後的資料,聚合後的資料量比最細粒度的事實表小很多,查詢性也有很大的提升。

建立聚合表的方法 

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

2.聚合導航,使用者通過報表分析工具,根據使用者請求把基礎事實表自動生成聚合資料。

 3.物化檢視,建立物化檢視定時重新整理聚合表。

 2.建立縮小維度表

由於聚合事實表的粒度和基礎事實表粒度不同,需要建立和聚合表相同粒度的維度表,這些維度表只是基礎維度表的縮小版。

  • ETL優化

 1.減少磁碟I/O

 關聯查詢的時候,儘可能把無效的資料過濾掉

只查出需要的列

大資料量儘量不要有排序

在載入資料時關閉日誌

 2.分割槽和並行

大資料量可以進行分割槽

查詢和任務排程都可以進行並行處理

 3.增量載入

 4.增加索引

5.大而化小,複雜的查詢可以分成多個子任務來執行。

6.重用結果集,把多個查詢任務的共用資料可以單獨建臨時表。

相關推薦

資料倉庫()ETL開發

概述 ETL是資料倉庫的後臺,主要包含抽取、清洗、規範化、提交四個步驟,傳統資料倉庫一般分為四層模型。                            分層的作用                                               

資料倉庫】6. ETL 的設計

0x00 前言 資料倉庫體系裡面的主要內容也寫的差不多了,現在補一點之前遺漏的點。這一篇就來聊一下 ETL。 文章結構 先聊一下什麼是 ETL。 聊一下大致的概念和一般意義上的理解。 聊一聊資料流是什麼樣子。因為 ETL 的工作主要會體現在一條條的資料處理流上,因此這裡做一個

資料倉庫研究二--mondrian入門

原文:http://blog.csdn.net/infowain/archive/2006/06/24/829074.aspx 以前一直是用MS Anylize Service的,最近要做的專案是java的,小專案預算有限,所以想找一個開源的java的資料倉庫解決方案來用用。  

深入探討資料倉庫建模與ETL的實踐技巧

這篇論壇文章深入探討了搭建資料倉庫過程中應當遵循的方法和原則,更多內容請參考下文:   一、資料倉庫的架構   資料倉庫(Data Warehouse DW)是為了便於多維分析和多角度展現而將資料按特定的模式進行儲存所建立起來的關係型資料庫,它的資料基於OLTP源系統。資料倉庫中的資料是細

資料倉庫(三)架構篇

概述 架構是資料倉庫建設的總體規劃,從整體視角描述瞭解決方案的高層模型,描述了各個子系統的功能以及關係,描述了資料從源系統到決策系統的資料流程。業務需求回答了要做什麼,架構就是回答怎麼做的問題。 架構的價值                          

基於【CentOS-7+ Ambari 2.7.0 + HDP 3.0】HAWQ資料倉庫 使用 gpfdist協議

一、HAWQ基本安裝自帶gpfdist協議 gpfdist是HAWQ支援的外部表訪問協議之一,這是hawq自帶的一個簡單的整合http服務命令。 在我的前述安裝hawq之後,gpfdist命令位於hawq的bin目錄之中。/opt/gpadmin/apache-hawq/bin/gpfdist gpfdist

資料探勘------ETL

       ETL是將業務系統的資料經過抽取、清洗轉換之後載入到資料倉庫的過程,目的是將企業中的分散、零亂、標準不統一的資料整合到一起,為企業的決策提供分析依據。 ETL是BI專案重要的一個環節。 通常情況下,在BI專案中ETL會花掉整個專案至少1/3的時間,ETL設計的

資料倉庫建模與ETL的實踐技巧

 一、資料倉庫的架構   資料倉庫 (Data Warehouse / DW)是為了便於多維分析和多角度展現而將資料按特定的模式進行儲存所建立起來的關係型資料庫 ,它的資料基於OLTP源系統。資料倉庫中的資料是細節的、整合的、面向主題的,以OLAP系統的分析需求為目

資料倉庫分層

資料倉庫的分層可以算是資料倉庫架構的子話題。在前段時間參與的一次討論中,筆者發現其中爭論的焦點集中在每一層的作用、特點、是否有必要存在等問題。其中,大家雖然一致提到某些相關概念,但各方的理解卻並非完全一致。例如對於ODS是什麼、維度建模是什麼等問題的解讀,都是如此。 不妨

資料倉庫(一)需求篇

概述  業務需求定義了企業的業務人員為了完成其工作,進而實現企業目標,一定要具備的東西。包括功能性需求和提供的服務。它是資料倉庫的核心,從廣度和深度上做好需求調研為資料倉庫建設建立良好的開端。                                    

資料倉庫系列維度建模

      上一篇文章我已經簡單介紹了資料分析中為啥要建立資料倉庫,從本週開始我們開始一起學習資料倉庫。學習資料倉庫,你一定會了解到兩個人:資料倉庫之父比爾·恩門(Bill Inmon)和資料倉庫權威專家Ralph Kimball。Inmon和Kimball兩種DW

資料倉庫系列維度建模二

      在上一篇文章中我們簡單介紹了什麼是維度建模以及維度建模的基本要素,這篇文章中我們依然學習瞭解維度建模中的基本要素事實表和維度表的型別以及維度設計方法。首先裡瞭解維度建模中的事實表型別,在依次介紹維度型別,一致性維度和一致性事實,維度設計方法。接下來進入正題。 &nb

資料倉庫系列匯流排架構

      匯流排架構是資料倉庫建設的總體規劃,從整體視角描述瞭解決方案的維度模型,描述了各個子系統的功能以及關係,描述資料從源系統到決策系統的資料流程,提供建立企業資料倉庫系統的增量式方法。業務需求回答了要做什麼,匯流排架構就是回答怎麼做的問題。 一、整體解決方案架構: &

資料倉庫系列資料質量管理

  資料質量一直是資料倉庫領域一個比較令人頭疼的問題,因為資料倉庫上層對接很多業務系統,業務系統的髒資料,業務系統變更,都會直接影響資料倉庫的資料質量。因此資料倉庫的資料質量建設是一些公司的重點工作。   一、資料質量   資料質量的高低代表了該資料滿足資料消費者期望的程度,這種程度基於他們對資料的使用預

資料倉庫系列關於資料倉庫自動化技術

  目前市面上的BI工具都在提及敏捷BI解決方案。敏捷BI解決方案所提供的自動化技術支援主要是從資料來源取數到BI前端工具展現。這樣的敏捷BI解決方案在企業資料量不是很龐大的情況下,還是很好的支撐執行。PowerBI可以支援大量的資料處理,但是對於硬體裝置的要求也是非常高的。但是資料量變得越來越龐大就會導致B

ETL技術入門ETL初認識,資料倉庫

ETL ,是英文 Extract-Transform-Load 的縮寫,用來描述將資料從來源端經過抽取(extract)、轉換(transform)、載入(load)至目的端的過程。 ETL 一詞較常用在 資料倉庫 ,但其物件並不限於資料倉庫。 ETL是什麼 ET

資料系列資料倉庫Hive知識整理()Hive的嚴格模式,動態分割槽,排序,事務,調優

1.Hive的嚴格模式Hive提供了一個嚴格模式,可以防止使用者執行那些產生意想不到的不好的影響的查詢。想想看在那麼大的資料量的前提下,如果我們在分割槽上表上使用查詢所有,或是使用了笛卡爾積查詢資料等等不良情況,那得花費我們多少時間和資源成本,Hive在預設情況下會開啟一種模

資料倉庫部"聖經"

先介紹兩位權威的資料倉庫之父:Inmon和Kimball,但是各自主張卻存在分歧 William H.Inmon (暱稱: 比爾·恩門Bill Inmon) 最早的資料倉庫概念提出者, 在Building the Data Warehouse主張建立資料倉庫

《SpringBoot從入門到放棄》第()篇——開發Web應用模板Thymeleaf、FreeMarker

  SpringBoot提供了預設配置的模板引擎主要有以下幾種:Thymeleaf、FreeMarker、Velocity、Groovy、Mustache 預設的建立SpringBoot專案時,開發工具就幫我們建立好了src/main/resources/static目錄,該位

瀏覽器外掛ActiveX開發)----web頁面呼叫ActiveX

轉自:http://www.cnblogs.com/qguohog/archive/2013/01/25/2876828.html https://blog.csdn.net/zengraoli/article/details/12078757?utm_source=blogxgwz3 &n