python實現資料倉儲ETL

2021-09-08 03:07:50 字數 1273 閱讀 9691

通常講的資料倉儲etl, 可以分為etl和elt兩種實現方式.  elt是在載入到倉庫後, 再做資料轉換.  etl 是在載入之前完成轉換, 落地的資料就是轉換後的樣子了.

elt多使用在mpp架構的資料倉儲平台上, 比如teradata, greenplum, 主要考慮點是, mpp資料倉儲資料處理能力強, 在載入後再做轉換, 可以充分利用這一優勢.  另外, extract和load過程很簡單, 且資料倉儲廠商提供unloading/loading的命令列工具一般具有並行處理能力, 所以直接用這些命令列工具滿足. 至於轉換部分過程, 多為通過sql查詢出stage區新加的記錄, 然後做一些運算, 最後再拼sql將計算後的資料放在另乙個區.

如果資料倉儲是建在oracle/sql server這類架構資料庫上, 多採用etl方式, 將轉換放在資料倉儲外執行, 以減輕資料倉儲的壓力. etl過程也多選購商業軟體, 比如datastage, ssis.

在elt方案中, python也可大有作為. 即使是使用資料倉儲廠商提供的命令列工具做extracting和loading, python仍可以作為膠水. 拼sql, python的三引號字串以及字串操作都超強, 很適合. 

在etl方案中, 使用python完成流程控制自然是很輕鬆的, 所以關鍵點是,  提供乙個高效的基於記錄行的pipeline執行機制,  以及如何提供較高的執行效率.  下面有幾個開源專案還不錯, 值得在專案中一試.  其實甚至不用什麼額外的開源專案, 用標準庫也很容易做transform的, 因為python內建支援sqlite, 接下來無需多講了.  

基於pipeline的開源專案:

(推薦度*****) petl,

x特點是: 專案活躍度較高; 文件很不錯; 支援多種資料來源; 支援iterator(具有lazy載入機制); 很容易學習.

(推薦度****) pygrametl,    ,

特點是: 文件全, 有使用者例項. 我看了寫**, **質量很高; 作者實現了基於維度建模思想的幾個轉換元件, 支援cpython/jpython, 很容易學習.

(推薦度***) pyf, 

特點是: 具有web 頁面, 功能很眩. 大量使用python generator機制, 其本身也是基於flow based programming. 學習難度較大.

etl往往也要關注執行效率, 關於python並行處理, 單機上, cpython當然要選擇multiprocessing方式, 一來可充分利用多核, 同時程式設計難度也不大.  要是將多個任務分配在幾個機器執行, 我認為選用久經考驗的gearman最合適, 不僅能提供負載均衡, 而且可以改善可用性.

資料倉儲 ETL

etl這個過程可以說下整套資料流程下來最枯燥也是最耗時間的流程,但是也是最重要的。很多時候我們不缺資料,缺的是好資料,而etl的結果則導致下游成員的資料質量。etl是貫穿數倉的整個環節,不是說只是在某乙個地方才使用的。etl工作的實質就是從各個資料來源提取資料,對資料進行轉換,並最終載入填充資料到資...

ETL(資料倉儲技術)

etl,是英文 extract transform load 的縮寫,用來描述將資料從 端經過抽取 extract 轉換 transform 載入 load 至目的端的過程。etl一詞較常用在 資料倉儲,但其物件並不限於資料倉儲。etl是構建資料倉儲的重要一環,使用者從 資料來源抽取出所需的資料,經...

etl構建資料倉儲五步法 資料倉儲 ETL

資料倉儲是由外部多個資料來源彙總整合的,整合 這個詞代表並不是簡單的堆積,而是需要進行一些邏輯處理,數倉的整合就是這樣,因為外部資料來源都是異構的,所以需要做很多任務作才可以進行整合,這些工作包括但不限於 欄位的意義統一,輕度統計等。抽取資料 有如下策略 時間戳判斷 掃瞄增量檔案 日誌檔案,審計檔案...