ETL資料抽取方案

2021-09-26 06:06:06 字數 3211 閱讀 7044

etl 過程中的主要環節就是資料抽取、資料轉換和加工、資料裝載。為了實現這些功能,etl 工具會進行一些功能上的擴充,例如工作流、排程引擎、規則引擎、指令碼支援、統計資訊等。

資料抽取是從資料來源中抽取資料的過程。實際應用中,資料來源較多採用的是關聯式資料庫。

從資料庫中抽取資料一般有以下幾種方式:

1.全量抽取

全量抽取類似於資料遷移或資料複製,它將資料來源中的表或檢視的資料原封不動的從數 據庫中抽取出來,並轉換成自己的etl 工具可以識別的格式。全量抽取比較簡單。

2.增量抽取

增量抽取只抽取自上次抽取以來資料庫中要抽取的表中新增或修改的資料。在etl 使用過程中,增量抽取較全量抽取應用更廣。如何捕獲變化的資料是增量抽取的關鍵。

對捕獲方法一般有兩點要求:

準確性:能夠將業務系統中的變化資料按一定的頻率準確地捕獲到;

效能:不能對業務系統造成太大的壓力,影響現有業務。目前增量資料抽取中常用的捕獲變化資料的方法有:

(1) 觸發器方式(又稱快照式)

在要抽取的表上建立需要的觸發器,一般要建立插入、修改、刪除三個觸發器,每當源表中的資料發生變化,就被相應的觸發器將變化的資料寫入乙個臨時表,抽取執行緒從臨時表中抽取資料,臨時表中抽取過的資料被標記或刪除。

優缺點

優點:資料抽取的效能高,etl 載入規則簡單,速度快,不需要修改業務系統表結構,可以實現資料的遞增載入。

缺點:要求業務表建立觸發器,對業務系統有一定的影響,容易對源資料庫構成威脅。

(2)時間戳方式

它是一種基於快照比較的變化資料捕獲方式,在源表上增加乙個時間戳字段,系統中更新修改表資料的時候,同時修改時間戳字段的值。當進行資料抽取時,通過比較上次抽取時間與時間戳字段的值來決定抽取哪些資料。

有的資料庫的時間戳支援自動更新,即表的其它欄位的資料發生改變時,自動更新時間戳字段的值。有的資料庫不支援時間戳的自動更新,這就要求業務系統在更新業務資料時,手工更新時間戳字段。

優缺點

優點:同觸發器方式一樣,時間戳方式的效能也比較好,etl 系統設計清晰,源資料抽取相對清楚簡單,可以實現資料的遞增載入。

缺點:時間戳維護需要由業務系統完成,對業務系統也有很大的傾入性(加入額外的時間戳字段),特別是對不支援時間戳的自動更新的資料庫,還要求業務系統進行額外的更新時間戳操作;另外,無法捕獲對時間戳以前資料的delete和update 操作,在資料準確性上受到了一定的限制。

(3)全表刪除插入方式

每次etl 操作均刪除目標表資料,由etl 全新載入資料。

優缺點

優點:etl 載入規則簡單,速度快。

缺點:對於維表加外來鍵不適應,當業務系統產生刪除資料操作時,綜合資料庫將不會記錄到所刪除的歷史資料,不可以實現資料的遞增載入;同時對於目標表所建立的關聯關係,需要重新進行建立。

(4) 全表比對方式

全表比對的方式是etl 工具事先為要抽取的表建立乙個結構類似的臨時表,該臨時表記錄源表主鍵以及根據所有欄位的資料計算出來,每次進行資料抽取時,對源表和臨時表進行的比對,如有不同,進行update 操作,如目標表沒有存在該主鍵值,表示該記錄還沒有,即進行insert 操作。

優缺點

優點:對已有系統表結構不產生影響,不需要修改業務操作程式,所有抽取規則由etl完成,管理維護統一,可以實現資料的遞增載入,沒有風險。。

缺點:etl 比對較複雜,設計較為複雜,速度較慢。與觸發器和時間戳方式中的主動通知不同,全表比對方式是被動的進行全表資料的比對,效能較差。當表中沒有主鍵或唯一列且含有重覆記錄時,全表比對方式的準確性較差。

(5)日誌表方式

在業務系統中新增系統日誌表,當業務資料發生變化時,更新維護日誌表內容,當作etl 載入時,通過讀日誌表資料決定載入那些資料及如何載入。

優缺點

優點:不需要修改業務系統表結構,源資料抽取清楚,速度較快。可以實現資料的遞增載入。

缺點:日誌表維護需要由業務系統完成,需要對業務系統業務操作程式作修改,記錄日誌資訊。日誌表維護較為麻煩,對原有系統有較大影響。工作量較大,改動較大,有一定風險。

從資料來源中抽取的資料不一定完全滿足目的庫的要求,例如資料格式的不一致、資料輸入錯誤、資料不完整等等,因此有必要對抽取出的資料進行資料轉換和加工。

資料的轉換和加工可以在 etl 引擎中進行,也可以在資料抽取過程中利用關聯式資料庫的特性同時進行。

a) etl引擎中的資料轉換和加工

etl 引擎中一般以元件化的方式實現資料轉換。常用的資料轉換元件有

字段對映、   資料過濾、   資料清洗、   資料替換、   資料計算、  

資料驗證、   資料加解密、   資料合併、   資料拆分等。

這些元件如同一條流水線上的一道道工序,它們是可插拔的,且可以任意組裝,各元件之間通過資料匯流排共享資料。同時etl 工具還提供了指令碼支援,使得使用者可以以一種程式設計的方式定製資料的轉換和加工行為。  相比在資料庫中加工,效能較高,但不容易進行修改和清晰辨認。

b) 在資料庫中進行資料加工

關聯式資料庫本身已經提供了強大的sql、函式來支援資料的加工,

如在sql 查詢語句中新增where 條件進行過濾,查詢中重新命名欄位名與目的表進行對映,substr 函式,case條件判斷等等。

相比在 etl 引擎中進行資料轉換和加工,直接在sql 語句中進行轉換和加工更加簡單清晰;但依賴sql語句,有些資料加工通過sql語句可能無法實現,對於sql 語句無法處理的可以交由etl 引擎處理。

將轉換和加工後的資料裝載到目的庫中通常是etl 過程的最後步驟。裝載資料的最佳方法取決於所執行操作的型別以及需要裝入多少資料。

當目的庫是關聯式資料庫時,一般來說有兩種裝載方式:

(1) 直接 sql 語句進行insert、update、delete 操作。 

(2) 採用批量裝載方法,sqlldr等。

大多數情況下使用第一種方法,因為它們進行了日誌記錄並且是可恢復的。但是,批量裝載操作易於使用,並且在裝入大量資料時效率較高。使用哪種資料裝載方法取決於業務系統的需要。

ETL增量抽取方案

一 etl體系結構 資料庫 抽取 轉換 載入 目的資料來源 二 etl抽取方案 1 全量抽取 全量抽取類似於資料遷移或資料複製,它將資料來源中的表或檢視的資料原封不動的從資料庫中抽取出來,並轉換成自己的etl工具可以識別的格式,全量抽取比較簡單。全量抽取一般只在系統初始化時使用,全量一次後,就要每天...

ETL資料抽取策略

etl 的抽取策略 本文所提到的資料載入策略為oltp系統作為源系統,並進行etl資料載入到olap系統中所採用的一般資料載入策略。依循資料倉儲的工作方式,原始資料由源資料庫被抽取出來後,將在中間過程被寫入到 operational data store ods ods是被設計用來儲存中間資料和核查...

ETL資料抽取 全量 增量

在根據使用者需求選擇需要抽取的字段之外,我們通常需要選擇採用全量或者增量的方法進行資料抽取。全量抽取指的是從源系統中將表內資料不加行的篩選,全部抽取 增量抽取指的是只抽取前次抽取之後發生變化或者新增的資料 增量抽取的資料難度較大,要保證資料不能多抽取,漏抽取 在源表資料量較大,大部分資料一經入庫改動...