① 數據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,框架的頂層設計就很重要。
② ETL工具有哪些
幾種 ETL 工具的比較(DataPipeline,Kettle,Talend,Informatica等)
四種工具的比較主要從以下幾方面進行比對:
1、成本:
軟體成本包括多方面,主要包括軟體產品, 售前培訓, 售後咨詢, 技術支持等。
開源產品本身是免費的,成本主要是培訓和咨詢,所以成本會一直維持在一個較低水平。
商業產品本身價格很高,但是一般會提供幾次免費的咨詢或支持,所以採用商用軟體最初成本很高,但是逐漸下降。
手工編碼最初成本不高,主要是人力成本,但後期維護的工作量會越來越大。
2、易用性:
DataPipeline: 有非常容易使用的 GUI,具有豐富的可視化監控;
Kettle: GUI+Coding;
Informatica: GUI+Coding,有GUI,但是要專門的訓練;
Talend:GUI+Coding,有 GUI 圖形界面但是以 Eclipse 的插件方式提供;
3、技能要求:
DataPipeline:操作簡單,無技術要求;
Kettle: ETL設計, SQL, 數據建模 ;
Informatica: ETL設計, SQL, 數據建模;
Talend:需要寫Java;
4、底層架構:
DataPipeline:分布式,可水平擴展;
Kettle:主從結構非高可用;
Informatica:分布式;
Talend:分布式;
5、數據實時性:
DataPipeline:支持異構數據源的實時同步,速度非常快;
Kettle:不支持實時數據同步;
Informatica:支持實時,效率較低;
Talend:支持實時處理,需要購買高級版本,價格貴;
6、技術支持:
DataPipeline:本地化原廠技術支持;
Kettle:無;
Informatica:主要在美國;
Talend:主要在美國;
7、自動斷點續傳:
DataPipeline:支持;
Kettle:不支持;
Informatica:不支持;
Talend:不支持;
③ etl工具怎麼把資料庫里的表寫入到文本文檔里
如果沒用專門的ETL工具,而是在資料庫中使用SQL完成所有的etl任務,那麼就需要創建DBMS表來存儲所有的集結數據。
如果是用的ETL工具,那麼可以在文件系統中使用簡單的文件來存儲集結數據。 當集結數據像資料庫表那樣按照行和列存儲在文件系統中的時候,我們稱之為平面文件或者順序文件,ETL工具或者腳本語言可以像是操作資料庫表一樣方便的操作ASCII平面文件,而且某些情況下處理速度更快。
④ 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,框架的頂層設計就很重要。
⑤ 用SQL腳本寫ETL
學好SQL就行了,DML/DDL. ETL可以用很多工具來實現,比如Shell, Perl, Informatica, Ab Initio等等, SQL本身的邏輯和處理工作就是ETL的過程. 如果是用SQL來實現ETL調度管理,可以先創建資料庫表,然後,通過SQL實現Insert/Update/Delete來控制ETL腳本的被調度。
⑥ ETL抽取與SQL語句抽取比較
首先,使用SQL 語句可以代替SSIS在ETL中的大部分工作。
1、兩者比較ETL的好處,基礎入門簡單,操作界面化,使用一個很復雜的SQL 完成一項工作時,這個時候用ETL就會比SQL 方便很多。
2、維護查看比SQL直觀, 比如執行過程,SSIS可以很好通過界面去查看現在ETL的過程執行到什麼狀態。
3、SSIS日誌方面本身比SQL完善。
4、SSIS工具本身性能會略優於SQL,同樣的千萬級數據用SSIS比SQL快很多。
5、你可以反過來想,SQL 一直都存在,那為什麼還要在SQL之後專門搞一個ETL開發工具SSIS呢?
其實,在項目中可以根據需要將兩者結合一起進行使用。數據量小、數據流程清晰可以使用SQL代替SSIS,如果復雜時數據量大還是用SSIS本身的插件好。
⑦ ssis是什麼級別的etl工具市場佔有率高嗎
SSIS 是微軟BI產品的ETL工具,佔有率要比大眾化hadoop的HIVE佔有率低很多,這個就像是orcale和微軟的sql server的佔有關系差不多,如果你是才開始入門去學,能選擇hadoop去學最好,就業方向寬廣。
但是如果你已經入門了ssis,只是找一份工作還是容易的,而且從事SSIS方面的人要比上面人少很多,有時候待遇反而會更高。
我現在就是從事這方面的工作,對這個很有體會,之前參加很多面試都是需要hadoop的,但是面試ssis方面基本上能通過。
------------------------
sql server 2014,vs 2014 ,data tools 2014 ,SSIS SSAS SSRS都用