A. etl有哪些關鍵技術,請進行簡要介紹
ETL,E代表抽取清洗,T 代表 轉換,L代表裝載
常用的ETL技術:數據全量抽取、增量抽取、全量更新、增量更新、Lookup 、merge等等
B. ETL的介紹
ETL,是英文Extract-Transform-Load的縮寫,用來描述將數據從來源端經過抽取(extract)、轉換(transform)、載入(load)至目的端的過程。ETL一詞較常用在數據倉庫,但其對象並不限於數據倉庫。
數據倉庫是為企業所有級別的決策制定過程,提供所有類型數據支持的戰略集合。它是單個數據存儲,出於分析性報告和決策支持目的而創建。 為需要業務智能的企業,提供指導業務流程改進、監視時間、成本、質量以及控制。
ETL是將業務系統的數據經過抽取、清洗轉換之後載入到數據倉庫的過程,目的是將企業中的分散、零亂、標准不統一的數據整合到一起,為企業的決策提供分析依據, ETL是BI(商業智能)項目重要的一個環節。
(2)etl用哪些技術實現擴展閱讀:
ETL與ELT:
ETL所描述的過程,一般常見的作法包含ETL或是ELT(Extract-Load-Transform),並且混合使用。通常愈大量的數據、復雜的轉換邏輯、目的端為較強運算能力的資料庫,愈偏向使用ELT,以便運用目的端資料庫的平行處理能力。
ETL(orELT)的流程可以用任何的編程語言去開發完成,由於ETL是極為復雜的過程,而手寫程序不易管理,有愈來愈多的企業採用工具協助ETL的開發,並運用其內置的metadata功能來存儲來源與目的的對應(mapping)以及轉換規則。
工具可以提供較強大的連接功能(connectivity)來連接來源端及目的端,開發人員不用去熟悉各種相異的平台及數據的結構,亦能進行開發。當然,為了這些好處,付出的代價便是金錢。
C. etl是與什麼技術緊密相關的
ETL是數據中心建設、BI分析項目中不可或缺的環節。
各個業務系統中分布的、異構的數據源,經過ETL過程的數據抽取、轉換,最終存儲到目標資料庫或者數據倉庫,為上層BI數據分析,或其他業務功能做數據支撐。
ETL,是英文Extract-Transform-Load的縮寫,用來描述將數據從來源端經過抽取(extract)、轉換(transform)、載入(load)至目的端的過程。ETL一詞較常用在數據倉庫,但其對象並不限於數據倉庫。
相關信息:
ETL(orELT)的流程可以用任何的編程語言去開發完成,由於ETL是極為復雜的過程,而手寫程序不易管理,有越來越多的企業採用工具協助ETL的開發,並運用其內置的metadata功能來存儲來源與目的的對應(mapping)以及轉換規則。
工具可以提供較強大的連接功能(connectivity)來連接來源端及目的端,開發人員不用去熟悉各種相異的平台及數據的結構,亦能進行開發。
當然,為了這些好處,付出的代價便是金錢。
D. etl是什麼
對於做過 BI 開發的朋友,ETL 並不陌生,只要涉及到數據源的數據抽取、數據的計算和處理過程的開發,都是 ETL,ETL 就這三個階段,Extraction 抽取,Transformation 轉換,Loading 載入。
從不同數據源抽取數據 EXTRACTION ,按照一定的數據處理規則對數據進行加工和格式轉換 TRASFORMATION,最後處理完成的輸出到目標數據表中也有可能是文件等等,這個就是 LOADING。
再通俗一點講,ETL 的過程就跟大家日常做菜一樣,需要到菜市場的各個攤位買好菜,把菜買回來要摘一下,洗一洗,切一切最後下鍋把菜炒好端到飯桌上。菜市場的各個攤位就是數據源,做好的菜就是最終的輸出結果,中間的所有過程像摘菜、洗菜、切菜、做菜就是轉換。
在開發的時候,大部分時候會通過 ETL 工具去實現,比如常用的像 KETTLE、PENTAHO、IBM DATASTAGE、INFORNAICA、微軟 SQL SERVER 裡面的 SSIS 等等,在結合基本的 SQL 來實現整個 ETL 過程。
也有的是自己通過程序開發,然後控制一些數據處理腳本跑批,基本上就是程序加 SQL 實現。
哪種方式更好,也是需要看使用場景和開發人員對那種方式使用的更加得心應手。我看大部分軟體程序開發人員出身的,碰到數據類項目會比較喜歡用程序控制跑批,這是程序思維的自然延續。純 BI 開發人員大部分自然就選擇成熟的 ETL 工具來開發,當然也有一上來就寫程序腳本的,這類 BI 開發人員的師傅基本上是程序人員轉過來的。
用程序的好處就是適配性強,可擴展性強,可以集成或拆解到到任何的程序處理過程中,有的時候使用程序開發效率更高。難就難在對維護人員有一定的技術要求,經驗轉移和可復制性不夠。
用 ETL 工具的好處,第一是整個 ETL 的開發過程可視化了,特別是在數據處理流程的分層設計中可以很清晰的管理。第二是鏈接到不同數據源的時候,各種數據源、資料庫的鏈接協議已經內置了,直接配置就可以,不需要再去寫程序去實現。第三是各種轉換控制項基本上拖拉拽就可以使用,起到簡化的代替一部分 SQL 的開發,不需要寫代碼去實現。第四是可以非常靈活的設計各種 ETL 調度規則,高度配置化,這個也不需要寫代碼實現。
所以在大多數通用的項目中,在項目上使用 ETL 標准組件開發會比較多一些。
ETL 從邏輯上一般可以分為兩層,控制流和數據流,這也是很多 ETL 工具設計的理念,不同的 ETL 工具可能叫法不同。
控制流就是控制每一個數據流與數據流處理的先後流程,一個控制流可以包含多個數據流。比如在數據倉庫開發過程中,第一層的處理是ODS層或者Staging 層的開發,第二層是 DIMENSION維度層的開發,後面幾層就是DW 事實層、DM數據集市層的開發。通過ETL的調度管理就可以讓這幾層串聯起來形成一個完整的數據處理流程。
數據流就是具體的從源數據到目標數據表的數據轉換過程,所以也有 ETL 工具把數據流叫做轉換。在數據流的開發設計過程中主要就是三個環節,目標數據表的鏈接,這兩個直接通過 ETL 控制項配置就可以了。中間轉換的環節,這個時候就可能有很多的選擇了,調 SQL 語句、存儲過程,或者還是使用 ETL 控制項來實現。
有的項目上習慣使用 ETL 控制項來實現數據流中的轉換,也有的項目要求不使用標準的轉換組件使用存儲過程來調用。也有的是因為數據倉庫本身這個資料庫不支持存儲過程就只能通過標準的SQL來實現。
我們通常講的BI數據架構師其實指的就是ETL的架構設計,這是整個BI項目中非常核心的一層技術實現,數據處理、數據清洗和建模都是在ETL中去實現。一個好的ETL架構設計可以同時支撐上百個包就是控制流,每一個控制流下可能又有上百個數據流的處理過程。之前寫過一篇技術文章,大家可以搜索下關鍵字 BIWORK ETL 應該在網上還能找到到這篇文章。這種框架設計不僅僅是ETL框架架構上的設計,還有很深的ETL項目管理和規范性控制器思想,包括後期的運維,基於BI的BI分析,ETL的性能調優都會在這些框架中得到體現。因為大的BI項目可能同時需要幾十人來開發ETL,框架的頂層設計就很重要。
E. 什麼是「ETL」
ETL,是英文Extract-Transform-Load的縮寫,用來描述將數據從來源端經過抽取(extract)、轉換(transform)、載入(load)至目的端的過程。ETL一詞較常用在數據倉庫,但其對象並不限於數據倉庫。
數據倉庫是為企業所有級別的決策制定過程,提供所有類型數據支持的戰略集合。它是單個數據存儲,出於分析性報告和決策支持目的而創建。 為需要業務智能的企業,提供指導業務流程改進、監視時間、成本、質量以及控制。
ETL是將業務系統的數據經過抽取、清洗轉換之後載入到數據倉庫的過程,目的是將企業中的分散、零亂、標准不統一的數據整合到一起,為企業的決策提供分析依據, ETL是BI(商業智能)項目重要的一個環節。
(5)etl用哪些技術實現擴展閱讀:
ETL與ELT:
ETL所描述的過程,一般常見的作法包含ETL或是ELT(Extract-Load-Transform),並且混合使用。通常愈大量的數據、復雜的轉換邏輯、目的端為較強運算能力的資料庫,愈偏向使用ELT,以便運用目的端資料庫的平行處理能力。
ETL(orELT)的流程可以用任何的編程語言去開發完成,由於ETL是極為復雜的過程,而手寫程序不易管理,有愈來愈多的企業採用工具協助ETL的開發,並運用其內置的metadata功能來存儲來源與目的的對應(mapping)以及轉換規則。
工具可以提供較強大的連接功能(connectivity)來連接來源端及目的端,開發人員不用去熟悉各種相異的平台及數據的結構,亦能進行開發。當然,為了這些好處,付出的代價便是金錢。
F. 五種主流ETL工具對比
1 、簡介
DataPipeline :隸屬於北京數見 科技 有限公司,是一家企業級批流一體數據融合服務商和解決方案提供商,國內實時數據管道技術的倡導者。
通過平台和技術為企業客戶解決數據准備過程中的各種痛點,幫助客戶更敏捷、更高效、更簡單地實現復雜異構數據源到目的地的實時數據融合和數據管理等綜合服務。
從而打破傳統 ETL 給客戶靈活數據應用帶來的束縛,讓數據准備過程不再成為數據消費的瓶頸。
Kettle:是一款國外開源的ETL工具,純java編寫,可以在Windows、Linux、Unix上運行,數據抽取高效穩定。Kettle 中文名稱叫水壺,該項目的主程序員MATT 希望把各種數據放到一個壺里,然後以一種指定的格式流出。
Informatica:是全球領先的數據管理軟體提供商。
在如下Gartner魔力象限位於領導者地位:數據集成工具魔力象限、數據質量工具魔力象限、元數據管理解決方案魔力象限、主數據管理解決方案魔力象限、企業級集成平台即服務(EiPaaS)魔力象限。
Talend :是數據集成解決方案領域的領袖企業,為公共雲和私有雲以及本地環境提供一體化的數據集成平台。Talend的使命是致力於幫助客戶優化數據,提高數據可靠性,把企業數據更快地轉化為商業價值。
以此為使命,Talend的解決方案將數據從傳統基礎架構中解放出來,提高客戶在業務中的洞察力,讓客戶更早實現業務價值。
DataX :是阿里巴巴集團內被廣泛使用的離線數據同步工具 / 平台,實現包括 MySQL、Oracle、SqlServer、Postgre、HDFS、Hive、ADS、HBase、TableStore(OTS)、MaxCompute(ODPS)、DRDS 等各種異構數據源之間高效的數據同步功能。開源地址:https://github.com/alibaba/DataX
2 、成本
軟體成本包括多方面,主要包括軟體產品, 售前培訓, 售後咨詢, 技術支持等。
開源產品本身是免費的,成本主要是培訓和 咨詢,所以成本會一直維持在一個較低水平。
商業產品本身價格很高,但是一般會提供幾次免費的咨詢或支持,所以採用商用軟體最初成本很高,但是逐漸下降。
手工編碼最初成本不高,主要是人力成本,但後期維護的工作量會越來越大。
3、適用場景
DataPipeline: 主要用於各類數據融合、數據交換場景,專為超大數據量、高度復雜的數據鏈路設計的靈活、可擴展的數據交換平台;
Kettle: 面向數據倉庫建模傳統ETL工具;
Informatica: 面向數據倉庫建模傳統ETL工具;
Talend:面向數據倉庫建模傳統ETL工具;
DataX :面向數據倉庫建模傳統ETL工具
4、使用方式
DataPipeline: 全流程圖形化界面,應用端採用B/S架構,Cloud Native為雲而生,所有操作在瀏覽器內就可以完成,不需要額外的開發和生產發布;
Kettle: C/S客戶端模式,開發和生產環境需要獨立部署,任務的編寫、調試、修改都在本地,需要發布到生產環境,線上生產環境沒有界面,需要通過日誌來調試、 debug,效率低,費時費力;
Informatica: C/S客戶端模式,開發和生產環境需要獨立部署,任務的編寫、調試、修改都在本地,需要發布到生產環境;學習成本較高,一般需要受過專業培訓的工程師才能使用;
Talend:C/S客戶端模式,開發和生產環境需要獨立部署,任務的編寫、調試、修改都在本地,需要發布到生產環境;
DataX :DataX是以腳本的方式執行任務的,需要完全吃透源碼才可以調用,學習成本高,沒有圖形開發化界面和監控界面,運維成本相對高
5、底層架構
DataPipeline: 分布式集群高可用架構,可以水平擴展到多節點支持超大數據量,架構容錯性高,可以自動調節任務在節點之間分配,適用於大數據場景;
Kettle:主從結構非高可用,擴展性差,架構容錯性低,不適用大數據場景;
Informatica: schema mapping非自動;可復制性比較差;更新換代不是很強,支持分布式部署;
Talend:支持分布式部署;
DataX :支持單機部署和集群部署兩種方式
6、CDC機制
DataPipeline: 基於日誌、基於時間戳和自增序列等多種方式可選;
Kettle:基於時間戳、觸發器等;
Informatica: 基於日誌、基於時間戳和自增序列等多種方式可選;
Talend:基於觸發器、基於時間戳和自增序列等多種方式可選;
DataX :離線批處理
7、對資料庫的影響
DataPipeline: 基於日誌的採集方式對資料庫無侵入性;
Kettle:對資料庫表結構有要求,存在一定侵入性;
Informatica: 基於日誌的採集方式對資料庫無侵入性;
Talend:有侵入性;
DataX :通過sql select 採集數據,對數據源沒有侵入性
8、自動斷點續傳
DataPipeline:支持;
Kettle:不支持;
Informatica:不支持;
Talend:不支持;
DataX :不支持
9、監控預警
DataPipeline:可視化的過程監控,提供多樣化的圖表,輔助運維,故障問題可實時預警;
Kettle:依賴日誌定位故障問題,往往只能是後處理的方式,缺少過程預警;
Informatica:monitor可以看到報錯信息,信息相對籠統,定位問題仍需依賴分析日誌;
Talend:有問題預警,定位問題仍需依賴日誌;
DataX :依賴工具日誌定位故障問題,沒有圖形化運維界面和預警機制,需要自定義開發
10、數據清洗
DataPipeline:圍繞數據質量做輕量清洗;
Kettle:圍繞數據倉庫的數據需求進行建模計算,清洗功能相對復雜,需要手動編程;
Informatica:支持復雜邏輯的清洗和轉化;
Talend:支持復雜邏輯的清洗和轉化;
DataX :需要根據自身清晰規則編寫清洗腳本,進行調用(DataX3.0 提供的功能)
11、數據轉換
DataPipeline:自動化的schema mapping;
Kettle:手動配置schema mapping;
Informatica:手動配置schema mapping;
Talend:手動配置schema mapping;
DataX :通過編寫json腳本進行schema mapping映射
12、易用性、應用難度、是否需要開發
DataPipeline: 有非常容易使用的 GUI,具有豐富的可視化監控,易用性低,難度低,不需要開發;
Kettle: GUI+Coding,易用性低,難度高,需要開發;
Informatica: GUI+Coding,有GUI,但是要專門的訓練,易用性低,難度高,需要開發;
Talend:GUI+Coding,有 GUI 圖形界面但是以 Eclipse 的插件方式提供,易用性低,難度中,需要開發;
DataX:需要完全吃透源碼才可以調用,學習成本高,沒有圖形開發化界面和監控界面,易用性低,難度高,需要開發
13、技能要求
DataPipeline:操作簡單,無技術要求;
Kettle: ETL設計, SQL, 數據建模 ;
Informatica: ETL設計, SQL, 數據建模;
Talend:需要寫Java;
DataX:需要寫json腳本
14、數據實時性
DataPipeline:支持異構數據源的實時同步,速度非常快;
Kettle:不支持實時數據同步;
Informatica:支持實時,效率較低;
Talend:支持實時處理,需要購買高級版本,價格貴;
DataX :支持實時
15、技術支持
DataPipeline:本地化原廠技術支持;
Kettle:開源軟體,需客戶自行實施、維護;
Informatica:在美國,主要為第三方的實施和售後服務;
Talend:在美國,分為開源版和企業版,企業版可提供相應服務;
DataX:阿里開源代碼,需要客戶自動實施、開發、維護
文章為自己學習整理後的成果,如有錯誤的地方,歡迎提出已作出及時修正。
G. ETL基本常識是什麼
對於做過 BI 開發的朋友,ETL 並不陌生,只要涉及到數據源的數據抽取、數據的計算和處理過程的開發,都是 ETL,ETL 就這三個階段,Extraction 抽取,Transformation 轉換,Loading 載入。
從不同數據源抽取數據 EXTRACTION ,按照一定的數據處理規則對數據進行加工和格式轉換 TRASFORMATION,最後處理完成的輸出到目標數據表中也有可能是文件等等,這個就是 LOADING。
再通俗一點講,ETL 的過程就跟大家日常做菜一樣,需要到菜市場的各個攤位買好菜,把菜買回來要摘一下,洗一洗,切一切最後下鍋把菜炒好端到飯桌上。菜市場的各個攤位就是數據源,做好的菜就是最終的輸出結果,中間的所有過程像摘菜、洗菜、切菜、做菜就是轉換。
在開發的時候,大部分時候會通過 ETL 工具去實現,比如常用的像 KETTLE、PENTAHO、IBM DATASTAGE、INFORNAICA、微軟 SQL SERVER 裡面的 SSIS 等等,在結合基本的 SQL 來實現整個 ETL 過程。
也有的是自己通過程序開發,然後控制一些數據處理腳本跑批,基本上就是程序加 SQL 實現。
哪種方式更好,也是需要看使用場景和開發人員對那種方式使用的更加得心應手。我看大部分軟體程序開發人員出身的,碰到數據類項目會比較喜歡用程序控制跑批,這是程序思維的自然延續。純 BI 開發人員大部分自然就選擇成熟的 ETL 工具來開發,當然也有一上來就寫程序腳本的,這類 BI 開發人員的師傅基本上是程序人員轉過來的。
用程序的好處就是適配性強,可擴展性強,可以集成或拆解到到任何的程序處理過程中,有的時候使用程序開發效率更高。難就難在對維護人員有一定的技術要求,經驗轉移和可復制性不夠。
用 ETL 工具的好處,第一是整個 ETL 的開發過程可視化了,特別是在數據處理流程的分層設計中可以很清晰的管理。第二是鏈接到不同數據源的時候,各種數據源、資料庫的鏈接協議已經內置了,直接配置就可以,不需要再去寫程序去實現。第三是各種轉換控制項基本上拖拉拽就可以使用,起到簡化的代替一部分 SQL 的開發,不需要寫代碼去實現。第四是可以非常靈活的設計各種 ETL 調度規則,高度配置化,這個也不需要寫代碼實現。
所以在大多數通用的項目中,在項目上使用 ETL 標准組件開發會比較多一些。
ETL 從邏輯上一般可以分為兩層,控制流和數據流,這也是很多 ETL 工具設計的理念,不同的 ETL 工具可能叫法不同。
控制流就是控制每一個數據流與數據流處理的先後流程,一個控制流可以包含多個數據流。比如在數據倉庫開發過程中,第一層的處理是ODS層或者Staging 層的開發,第二層是 DIMENSION維度層的開發,後面幾層就是DW 事實層、DM數據集市層的開發。通過ETL的調度管理就可以讓這幾層串聯起來形成一個完整的數據處理流程。
數據流就是具體的從源數據到目標數據表的數據轉換過程,所以也有 ETL 工具把數據流叫做轉換。在數據流的開發設計過程中主要就是三個環節,目標數據表的鏈接,這兩個直接通過 ETL 控制項配置就可以了。中間轉換的環節,這個時候就可能有很多的選擇了,調 SQL 語句、存儲過程,或者還是使用 ETL 控制項來實現。
有的項目上習慣使用 ETL 控制項來實現數據流中的轉換,也有的項目要求不使用標準的轉換組件使用存儲過程來調用。也有的是因為數據倉庫本身這個資料庫不支持存儲過程就只能通過標準的SQL來實現。
我們通常講的BI數據架構師其實指的就是ETL的架構設計,這是整個BI項目中非常核心的一層技術實現,數據處理、數據清洗和建模都是在ETL中去實現。一個好的ETL架構設計可以同時支撐上百個包就是控制流,每一個控制流下可能又有上百個數據流的處理過程。之前寫過一篇技術文章,大家可以搜索下關鍵字 BIWORK ETL 應該在網上還能找到到這篇文章。這種框架設計不僅僅是ETL框架架構上的設計,還有很深的ETL項目管理和規范性控制器思想,包括後期的運維,基於BI的BI分析,ETL的性能調優都會在這些框架中得到體現。因為大的BI項目可能同時需要幾十人來開發ETL,框架的頂層設計就很重要。
H. ETL是什麼,形象的介紹一下
對於做過 BI 開發的朋友,ETL 並不陌生,只要涉及到數據源的數據抽取、數據的計算和處理過程的開發,都是 ETL,ETL 就這三個階段,Extraction 抽取,Transformation 轉換,Loading 載入。
從不同數據源抽取數據 EXTRACTION ,按照一定的數據處理規則對數據進行加工和格式轉換 TRASFORMATION,最後處理完成的輸出到目標數據表中也有可能是文件等等,這個就是 LOADING。
再通俗一點講,ETL 的過程就跟大家日常做菜一樣,需要到菜市場的各個攤位買好菜,把菜買回來要摘一下,洗一洗,切一切最後下鍋把菜炒好端到飯桌上。菜市場的各個攤位就是數據源,做好的菜就是最終的輸出結果,中間的所有過程像摘菜、洗菜、切菜、做菜就是轉換。
在開發的時候,大部分時候會通過 ETL 工具去實現,比如常用的像 KETTLE、PENTAHO、IBM DATASTAGE、INFORNAICA、微軟 SQL SERVER 裡面的 SSIS 等等,在結合基本的 SQL 來實現整個 ETL 過程。
也有的是自己通過程序開發,然後控制一些數據處理腳本跑批,基本上就是程序加 SQL 實現。
哪種方式更好,也是需要看使用場景和開發人員對那種方式使用的更加得心應手。我看大部分軟體程序開發人員出身的,碰到數據類項目會比較喜歡用程序控制跑批,這是程序思維的自然延續。純 BI 開發人員大部分自然就選擇成熟的 ETL 工具來開發,當然也有一上來就寫程序腳本的,這類 BI 開發人員的師傅基本上是程序人員轉過來的。
用程序的好處就是適配性強,可擴展性強,可以集成或拆解到到任何的程序處理過程中,有的時候使用程序開發效率更高。難就難在對維護人員有一定的技術要求,經驗轉移和可復制性不夠。
用 ETL 工具的好處,第一是整個 ETL 的開發過程可視化了,特別是在數據處理流程的分層設計中可以很清晰的管理。第二是鏈接到不同數據源的時候,各種數據源、資料庫的鏈接協議已經內置了,直接配置就可以,不需要再去寫程序去實現。第三是各種轉換控制項基本上拖拉拽就可以使用,起到簡化的代替一部分 SQL 的開發,不需要寫代碼去實現。第四是可以非常靈活的設計各種 ETL 調度規則,高度配置化,這個也不需要寫代碼實現。
所以在大多數通用的項目中,在項目上使用 ETL 標准組件開發會比較多一些。
ETL 從邏輯上一般可以分為兩層,控制流和數據流,這也是很多 ETL 工具設計的理念,不同的 ETL 工具可能叫法不同。
控制流就是控制每一個數據流與數據流處理的先後流程,一個控制流可以包含多個數據流。比如在數據倉庫開發過程中,第一層的處理是ODS層或者Staging 層的開發,第二層是 DIMENSION維度層的開發,後面幾層就是DW 事實層、DM數據集市層的開發。通過ETL的調度管理就可以讓這幾層串聯起來形成一個完整的數據處理流程。
數據流就是具體的從源數據到目標數據表的數據轉換過程,所以也有 ETL 工具把數據流叫做轉換。在數據流的開發設計過程中主要就是三個環節,目標數據表的鏈接,這兩個直接通過 ETL 控制項配置就可以了。中間轉換的環節,這個時候就可能有很多的選擇了,調 SQL 語句、存儲過程,或者還是使用 ETL 控制項來實現。
有的項目上習慣使用 ETL 控制項來實現數據流中的轉換,也有的項目要求不使用標準的轉換組件使用存儲過程來調用。也有的是因為數據倉庫本身這個資料庫不支持存儲過程就只能通過標準的SQL來實現。
我們通常講的BI數據架構師其實指的就是ETL的架構設計,這是整個BI項目中非常核心的一層技術實現,數據處理、數據清洗和建模都是在ETL中去實現。一個好的ETL架構設計可以同時支撐上百個包就是控制流,每一個控制流下可能又有上百個數據流的處理過程。之前寫過一篇技術文章,大家可以搜索下關鍵字 BIWORK ETL 應該在網上還能找到到這篇文章。這種框架設計不僅僅是ETL框架架構上的設計,還有很深的ETL項目管理和規范性控制器思想,包括後期的運維,基於BI的BI分析,ETL的性能調優都會在這些框架中得到體現。因為大的BI項目可能同時需要幾十人來開發ETL,框架的頂層設計就很重要。
I. 什麼是ETL調度系統
對於做過 BI 開發的朋友,ETL 並不陌生,只要涉及到數據源的數據抽取、數據的計算和處理過程的開發,都是 ETL,ETL 就這三個階段,Extraction 抽取,Transformation 轉換,Loading 載入。
從不同數據源抽取數據 EXTRACTION ,按照一定的數據處理規則對數據進行加工和格式轉換 TRASFORMATION,最後處理完成的輸出到目標數據表中也有可能是文件等等,這個就是 LOADING。
再通俗一點講,ETL 的過程就跟大家日常做菜一樣,需要到菜市場的各個攤位買好菜,把菜買回來要摘一下,洗一洗,切一切最後下鍋把菜炒好端到飯桌上。菜市場的各個攤位就是數據源,做好的菜就是最終的輸出結果,中間的所有過程像摘菜、洗菜、切菜、做菜就是轉換。
在開發的時候,大部分時候會通過 ETL 工具去實現,比如常用的像 KETTLE、PENTAHO、IBM DATASTAGE、INFORNAICA、微軟 SQL SERVER 裡面的 SSIS 等等,在結合基本的 SQL 來實現整個 ETL 過程。
也有的是自己通過程序開發,然後控制一些數據處理腳本跑批,基本上就是程序加 SQL 實現。
哪種方式更好,也是需要看使用場景和開發人員對那種方式使用的更加得心應手。我看大部分軟體程序開發人員出身的,碰到數據類項目會比較喜歡用程序控制跑批,這是程序思維的自然延續。純 BI 開發人員大部分自然就選擇成熟的 ETL 工具來開發,當然也有一上來就寫程序腳本的,這類 BI 開發人員的師傅基本上是程序人員轉過來的。
用程序的好處就是適配性強,可擴展性強,可以集成或拆解到到任何的程序處理過程中,有的時候使用程序開發效率更高。難就難在對維護人員有一定的技術要求,經驗轉移和可復制性不夠。
用 ETL 工具的好處,第一是整個 ETL 的開發過程可視化了,特別是在數據處理流程的分層設計中可以很清晰的管理。第二是鏈接到不同數據源的時候,各種數據源、資料庫的鏈接協議已經內置了,直接配置就可以,不需要再去寫程序去實現。第三是各種轉換控制項基本上拖拉拽就可以使用,起到簡化的代替一部分 SQL 的開發,不需要寫代碼去實現。第四是可以非常靈活的設計各種 ETL 調度規則,高度配置化,這個也不需要寫代碼實現。
所以在大多數通用的項目中,在項目上使用 ETL 標准組件開發會比較多一些。
ETL 從邏輯上一般可以分為兩層,控制流和數據流,這也是很多 ETL 工具設計的理念,不同的 ETL 工具可能叫法不同。
控制流就是控制每一個數據流與數據流處理的先後流程,一個控制流可以包含多個數據流。比如在數據倉庫開發過程中,第一層的處理是ODS層或者Staging 層的開發,第二層是DIMENSION維度層的開發,後面幾層就是DW 事實層、DM數據集市層的開發。通過ETL的調度管理就可以讓這幾層串聯起來形成一個完整的數據處理流程。
數據流就是具體的從源數據到目標數據表的數據轉換過程,所以也有 ETL 工具把數據流叫做轉換。在數據流的開發設計過程中主要就是三個環節,目標數據表的鏈接,這兩個直接通過 ETL 控制項配置就可以了。中間轉換的環節,這個時候就可能有很多的選擇了,調 SQL 語句、存儲過程,或者還是使用 ETL 控制項來實現。
有的項目上習慣使用 ETL 控制項來實現數據流中的轉換,也有的項目要求不使用標準的轉換組件使用存儲過程來調用。也有的是因為數據倉庫本身這個資料庫不支持存儲過程就只能通過標準的SQL來實現。
我們通常講的BI數據架構師其實指的就是ETL的架構設計,這是整個BI項目中非常核心的一層技術實現,數據處理、數據清洗和建模都是在ETL中去實現。一個好的ETL架構設計可以同時支撐上百個包就是控制流,每一個控制流下可能又有上百個數據流的處理過程。之前寫過一篇技術文章,大家可以搜索下關鍵字 BIWORK ETL 應該在網上還能找到到這篇文章。這種框架設計不僅僅是ETL框架架構上的設計,還有很深的ETL項目管理和規范性控制器思想,包括後期的運維,基於BI的BI分析,ETL的性能調優都會在這些框架中得到體現。因為大的BI項目可能同時需要幾十人來開發ETL,框架的頂層設計就很重要。