一个较为详细的ETL系统实现方案
                                                            生活随笔
收集整理的這篇文章主要介紹了
                                一个较为详细的ETL系统实现方案
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.                        
                                轉至:http://www.cognoschina.net/club/viewthread.php?tid=5627
| 1?ETL流程及調度設計(ETL Schedule)(PSP) 1. ETL調度的目標 快速見效系統要抽取39家分行四個系統的數據進行加工處理,數據從下傳文件到ODS庫,ODS庫到LDM,再計算PI值和匯總PI,整個ETL處理過程需按一定步驟和滿足某些條件進行,某些關鍵的文件如匯率數據、機構表等都會影響整個ETL的處理,因此,快速見效的ETL處理流程將是一個比較復雜的過程。 考慮到將來ETL處理的多樣性和復雜性,引入了Job的概念,將ETL處理過程分為一個一個的Job,Job可能是清洗\加載\轉換,也可能是PI加工。為了對復雜的ETL處理過程更好的調度和監控,專門設計一個ETL調度系統。通過ETL調度系統的開發使用,將清晰、高效地通過Job調度的方式處理快速見效的ETL過程。 2. ETL調度功能說明 調度維護 1) 調度系統參數維護,對調度系統的公共參數:期數、進程數、數據日期、本期開始日期和本期結束日期進行設置和修改。 2) 下傳文件信息維護,維護所有區域的下傳文件名稱、文件狀態、文件數據日期和對應區域的歸屬關系。 3) 作業步定義與維護,定義作業對應的實際ETL處理過程,生成作業編號,定義作業類型和作業的驅動關系,作業的運行所需要的條件。 4) 調度異常處理,對調度過程中出現的異常情況進行處理,提供錯誤查找、出錯重跑功能。 日志管理 1) 調度過程日志,管理記錄調度中的主要過程和異常信息,如調度開始、調度完成、數據庫操作異常和讀寫文件異常的日志。 2) Job執行日志,管理記錄Job執行信息的日志,提供該日志的查詢、刪除和執行狀態重置功能。 3) Job詳細事件日志,管理記錄Job執行中的詳細事件(清洗記錄條數、數據庫具體操作情況)的日志,提供對日志的查詢、刪除操作。 作業調度 正常情況下的作業調度,對整個ETL過程進行調度,提供分段提交處理和自動提交處理功能。 可調度的Job類型 1) C程序(清洗),ETL調度提供與C程序的接口,從而可以對C程序進行調度。 2) 用C封裝的SQLLDR(加載),將ORACLE SQLLDR封裝在C程序中進行調度。 3) PROC程序(合并、轉換),對合并和轉換過程,調度提供相應的接口,從而對ORACLE的PROC程序進行調度。 4) 存儲過程(轉換),將存儲過程封裝在PROC程序中進行調度。 5) DataStage(PI加工),調度系統提供了與DataStage的接口,可以對DataStage各個種類的Job進行調度。 作業步(ETL_Step)的功能類型及數據處理 0. 文件FTP: 將各個分行的源業務系統(NLNS、SBS、NACS)的以預定的文件格式以FTP方式通過中行網絡傳輸到QUICK WIN項目系統的ETL服務器。 1. 文件注冊:0中FTP的源數據文件,經過解壓縮后,必須在QUICK WIN項目系統中注冊,只有經過文件注冊過程后QUICK WIN項目系統才能確認“那些分行的源數據” 已經正確到達,ETL系統就可以相應的處理流程。 2. 數據清洗:從各分行FTP來的源數據文件,可能存在非法數據或冗余數據或者數據規則標準不統一,而且文件格式上也不能被QUICK WIN項目的ETL過程立即使用,因此必須對數據文件進行數據清洗(刪除非法、冗余數據、統一數據規則標準、轉換成QUICK WIN項目的ETL過程能“加載”處理的文件格式)。 3. 數據加載:將清洗后的數據(文件格式)通過SQL LOADER加載到ORACLE數據庫相應的數據庫表中。 4. ODS數據合并:將各個分行的相同類型的源業務系統數據合并到ORACLE數據庫中同一張數據表中。 5. LDM數據加工:面向業務生產數據(ODS數據庫表中的數據)根據“QUICK WIN分析模型”將數據轉換、加工成面向分析主題的“分析型數據”。 6. PI加工:根據業務需求、業務規則和分析模型,從LDM數據表中加工出QUICK WIN所需的PI。 7.?報表加工:根據業務需求、業務規則和分析模型,從LDM數據表和PI表中中加工出QUICK WIN所需的報表。 8. ETL調度程序:調度ETL加工各個過程的運行。 9. 監控程序:監控ETL過程的運行狀態(加工進度、加工效率、成功、警告、錯誤等)信息,及時向系統的運行維護人員報告系統運行狀態。 作業步(ETL_Step)的流程和依存關系。 1) 清洗類型的Job的運行依賴于相應下傳文件的狀態,必須是在下傳文件檢查及登記后才能進行清洗Job的調度。 2) ODS層加載類型Job的運行依賴于相應的清潔文件是否由清洗程序生成,即相應的清洗Job是否正確運行完成。 3) 從ODS到LDM的數據轉換依賴ODS層的相關數據是否齊備,即相應的加載Job是否正確運行完成。 4) PI加工的進行依賴LDM層數據,即相應的轉換Job是否正確運行完成。 5) 根據數據依賴關系,分區域進行作業調度,各區域之間的ETL處理可以并行處理。 作業調度方式 1。。。。。。。 2. 調度策略 采取條件驅動的策略來進行Job的調度,Job一滿足驅動條件便開始運行。針對快速見效系統的ETL情況,定義四種類型的驅動條件: 1) 前導Job驅動 ETL過程中各個操作需按一定次序進行,前導Job表示ETL過程中先要進行處理的Job,Job的前導Job可以有多個 2) 下傳文件驅動 當下傳文件未下傳完畢時,下傳文件清洗不能進行,因此,下傳文件通常作為清洗文件的驅動條件,當系統檢測到下傳文件已下傳并正確后,便可進行相應的清洗,驅動Job執行的下傳文件可能有多個,? 3)?時間驅動 當到達某個時點時,Job便開始運行 4) 上述三種條件綜合驅動 要上述三種情況至少兩種均滿足,Job才能運行。 3. Job的并發設計 每個Job只要滿足了驅動關系后,便開始以后臺方式運行。這樣便實現了不同區域和同一區域的Job的最大限度的并行??紤]系統資源的情況,可以事先設定最大并行數。 4. 并發沖突設計 當并行跑的Job都需要共同使用同一資源的時候,會產生資源占用的沖突,ETL過程中通常的沖突, 用令牌的方式來避免沖突,只有獲得令牌的JOB才能跑,否則等待令牌釋放。 定義數據轉換流程中檢查點和核對點? 1) 下傳文件,下傳文件與源系統數據進行比較檢查,核對下傳數據準確性。 2) 清潔文件,將清潔文件與下傳文件進行比較檢查,從而可判斷清洗處理過程的正確性。 3) ODS庫表,將ODS庫表中的數據與下傳文件中數據進行比較檢查,從而可判斷加載處理過程的正確性。 4) LDM庫表,將LDM庫表中的數據與ODS庫表中數據進行比較檢查,從而可判斷轉換處理過程的正確性。 5) PI值,將PI值與LDM層相關的庫表進行比較檢查,從而可判斷PI計算處理過程的正確性。 日志信息設計 1) 調度過程日志。以文件的方式存在,用于記錄Job調度中的主要過程和異常信息,如調度開始、調度完成、數據庫操作異常和讀寫文件異常。 2) Job執行日志。數據庫表方式存在,給Job的調度提供必要的信息,是Job調度策略計算的依據,調度模塊和Job之間的接口之一。 3) Job詳細事件日志。數據庫表方式存在,記錄ETL處理過程中的詳細信息,如清洗記錄成功條數、失敗條數或數據庫操作情況(INSERT\UPDATE\DELETE)。 給出異常處理設計:所有被拒絕的行、可接受的錯誤數以及合理退出的方式? 通知設計:重要信息(成功/失敗)的通知 1. 成功退出 1) 分段提交方式,當分段提交的當次任務都正確完成,即Job運行狀態臨時表中登記的作業狀態全部為完成時,退出ETL調度。 2) 自動提交方式,當當期所有的任務都正確完成,即Job運行狀態表中登記的作業狀態全部為完成時,退出ETL調度。 2. 失敗退出 1) 關鍵作業異常,關鍵作業運行異常時,影響剩下的作業不能運行時,則退出ETL調度。 2) 超過ETL時限,當超過預先設定的ETL 時限時,退出ETL調度。 3) 數據庫異常,當不能正常操作數據庫時,退出ETL調度。 4) 操作系統異常,當發生操作系統異常,導致程序不能正常運行,如文件系統異常導致讀寫文件錯時,需要退出ETL調度。 5) 手工退出,需要人為干預ETL調度的時候,能以手工操作的方式退出ETL調度。 給出各個階段號說明 給出表格:表6-N ETL_Step編號表(ETL控制參數) ETL 調度優先級別? 按Job驅動關系進行Job的調度,前導Job優先于后續Job。 ETl流程及調度模塊說明? 模塊概要說明 模塊概要說明(總體層次) 模塊名稱 模塊編號 開發工具/環境 模塊功能說明 備注 作業調度 J01 AIX+Shell+C ETL調度主模塊,負責整個ETL過程的調度處理。 維護員 作業管理 J02 EXECL+BRIO+C 定義作業步對應的實際ETL處理過程,生成作業編號,定義作業類型和作業的驅動條件。?管理員 異常重跑 J03 AIX+Shell+C 當ETL運行出現異常時,提供斷點重跑機制。 維護員 參數管理 J04 Brio EIS 調度系統的公共參數:期數、進程數、數據日期、本期開始日期和本期結束日期進行設置和修改。 管理員 日志管理 J05 BrioSDK,EIS 包括調度過程日志、Job執行日志和Job詳細事件日志的查詢和刪除。 管理員 模塊概要說明(明細層次) 模塊名稱 模塊編號 模塊類型 開發環境 模塊功能說明 備注 CTLINIT J01_01 作業調度 AIX,PROC 檢查輸入參數和驅動關系,初始化資源令牌狀態/Job運行狀態/下傳文件狀態。? UNCOMPR J01_02 作業調度 AIX,PROC,SHELL 檢測下傳目錄下的壓縮/打包的文件,并將這些文件解壓縮/展開,之后移動到非下傳目錄下。? FILEREG J01_03 作業調度 AIX,PROC 根據下傳文件控制表 檢查各文件頭的控制信息,將檢查結果記錄在下傳文件控制表中。? CHKREGJOB J01_04 作業調度 AIX,PROC 掃描Job運行狀態(或臨時)表看所有(或本次提交需要完成的)Job是否完成,根據Job執行日志信息登記完成的Job(在Job運行狀態表登記)。? CALREGJOB J01_05 作業調度 AIX,PROC 根據Job運行狀態/下傳文件狀態/ Job驅動關系計算可已運行的Job,并在Job運行狀態表中將這些Job登記為“就緒“狀態。? JOBRUN J01_06 作業調度 AIX,PROC,SHELL 依據當前進程數/資源令牌占用清況發出調度一個Job運行的命令,并登記Job運行狀態為“正運行“。? CRTJOB J02_01 作業管理 EXECL 生成作業列表和作業對應的驅動條件。? CHKJOB J02_02 作業管理 PROC 檢查作業列表的合法性,包括驅動關系的合理性檢查。? RERUN J03_01 異常重跑 AIX,PROC,SHELL 當ETL運行出現異常時,提供斷點重跑機制。? PARADM J04_01 參數管理 BRIO EIS,SQLPLUS,SHELL 調度系統的公共參數:期數、進程數、數據日期、本期開始日期和本期結束日期進行設置、修改及查詢。? LOGADM J05_01 日志管理 BRIO EIS,SQLPLUS 包括調度過程日志、Job執行日志和Job詳細事件日志的查詢和刪除。? ETL流程及調度的模塊設計說明表(設計階段)? 見附件《ETL調度詳細設計.doc》 給出ETL流程及調度的程序設計說明表(實現階段):參見 “1.15節” 1.2 ETL監控(ETL Monitor) (PSP) ETL監控結構設計,? ETL監控主要功能概述 1) ETL調度檢測下傳文件狀態,并登記到下傳文件狀態表中,通過Hyperion Client設計對下傳文件狀態查詢的BQY文檔,發布到Hyperion Performance Suite 8?Server,再通過Http或直接通過ODBC進行BQY查詢來獲取下傳文件狀態,從而實現了文件傳輸監控功能。 2) 當某個區域的某些文件清洗完成時,ETL調度在Job運行狀態表中登記該區域相應清洗Job的狀態(異?;蛲瓿?#xff09;;當文件加載、轉換或加工完成時,ETL調度同樣方式在Job運行狀態表中登記相應Job的狀態,通過設計對Job運行狀態查詢的BQY,并發布到Hyperion Performance Suite 8 Server,再通過Http或直接通過ODBC進行BQY查詢來獲取Job的當前狀態,從而實現了加載、轉換和加工的監控功能。 3) 對Job的執行情況(開始時間、結束時間)的監控通過設計查詢Job執行日志表的BQY文檔來實現,對Job的詳細事件的監控通過設計查詢Job詳細事件日志表的BQY來實現。 4) 對調度的整體情況的監控,則可直接通過TELNET查看調度過程日志,便能知道調度的完成情況和異常情況(數據庫錯、參數非法或操作系統錯等)。 ? ETL監控模塊說明:? ? ETL監控的模塊概要說明 模塊概要說明(明細層次) 模塊名稱 模塊編號 模塊類型 開發環境 模塊功能說明 備注 FILEMON J06_01 ETL監控 BRIO,EIS 監控各個區域的下傳文件傳輸情況和文件狀態。? JOBMON J06_02 ETL監控 BRIO,EIS 對各個區域的清洗、加載、轉換和加工過程的完成情況進行監控。? EVTMON J06_03 ETL監控 BRIO,EIS 對JOB的執行開始時間、結束時間和JOB運行過程中的詳細操作情況進行實時監控。? MAINMON J06_04 ETL監控 BRIO,EIS 對調度的整體情況的監控,包括調度成功完成、異常退出、數據庫錯、參數情況和操作系統出錯進行監控。  | 
轉載于:https://www.cnblogs.com/linboaixuzhiling/p/3207415.html
總結
以上是生活随笔為你收集整理的一个较为详细的ETL系统实现方案的全部內容,希望文章能夠幫你解決所遇到的問題。
                            
                        - 上一篇: 患难夫妻下一句是什么啊?
 - 下一篇: Error: The INF file