ETL規範概述1.1 ETL含義:ETL是資料幫浦(Extract)、轉換(Transform)、裝載(Loading)的縮寫。 資料幫浦:從資料來源擷取所需資料的過程。資料幫浦過程會過濾掉目標資料集中不需要的來源資料欄位或資料記錄。 資料轉換:按照目標表的資料結構,對一個或多個來源資料的欄位進行翻譯、匹配、彙總等操作得到目標資料的欄位。 資料轉換主要包括:格式轉換、欄位合并與拆分、資料翻譯、資料匹配、資料彙總其他複雜計算。 資料裝載:將資料載入到目標資料庫中。1.2 ETL應用:完整的ETL應用過程包含三個階段: 設計階段:分析源和目標資料集的資料結構,定義合理的資料轉換邏輯。 實施階段:按照設計階段制定的邏輯規則進行編碼,實現資料的E、T、L過程。 維護階段:對於非一次性資料整合項目,ETL過程需要重複執行,同時也需要不間斷的維護和完善。1.3 規範制定目的:ETL規範是為保證ETL正確設計、實施和維護所定義的一些規則和方法,具體包括ETL設計規範、開發規範以及維護規範。1.4 設計規範 設計規範主要應用於ETL編碼的前期工作。本階段要形成多個關於資料流的在不同層次的映射(Mapping)文檔。1.4.1 Mapping應該包含以下幾個部分: 資料來源的相關屬性,包括:實體名稱—含DSN、所有者等資訊;欄位名—英文名稱;欄位簡述—中文名稱,如為參數資訊應該有相關取值解釋,如性別欄位(1:男;2:女;0:不詳);類型—欄位類型,含長度和精度資訊;非空屬性—欄位是否可以為空白; 目標資料集的相關屬性,包括:實體名稱—含DSN、所有者等資訊;欄位名—英文名稱,建議根據欄位含義來命名,而不是簡單用拼音來定義欄位(此部分由負責設計資料集的人員控制);欄位簡述—中文名稱,對於保留欄位應該給出預設值;類型—欄位類型,含長度和精度資訊;非空屬性—欄位是否可以為空白; 規則,主要描述ETL各個環節的轉換規則,包括:資料來源過濾規則—描述從來源資料集擷取資料過程中過濾掉記錄的規則;關聯規則—當來源資料集為多個時,描述相互之間的關聯關係;列轉換規則—描述來源資料集到目標資料集的欄位間的轉換規則(商務邏輯相關);目標資料集更新規則—描述目標資料集的更新策略,包括更新機制和更新頻度,如每日全量更新、每周累加式更新;1.4.2 ETL作業列表—ETL所開發的作業之間包含一定的商務邏輯和編碼邏輯,所以調度過程中應遵循一定的邏輯順序,包括: 作業名稱—實現Mapping的作業名稱,包括該作業功能描述; 調度順序—用序號或者是流程圖模式描述作業的調度順序,需要綜合考慮商務邏輯、編碼邏輯以及系統資源等多方面情況,在保證商務邏輯和編碼邏輯的基礎上,通過控制調度,最大限度地合理利用系統資源; 參數列表—列舉每個作業中所使用的參數,不同作業中的相同參數最好使用相同的名稱,便於調度時進行控制;1.4.3 版本管理 ETL設計會隨著對業務、系統理解的深入以及結構架構的變化而發生變化,所以Mapping設計也應該同步更新。在開發過程中,要嚴格遵守一個規則:當規則發生變更時,要先變更Mappig,然後才變更相應的作業設計。在Mapping變更管理方面,應該有詳細的版本變更記錄,以便追蹤到ETL開發的變動情況。變更記錄包括如下內容: 版本—每次變更應給出一個新的版本號碼;作者—變更人;更新時間—變更時間;更新內容—簡要說明變更內容;備忘—可用於記錄變更的原因等相關資訊;1.5 開發規範 為保證項目開發各個時期的平穩過度及順利交接,在開發過程中,應該遵循一定的開發規範。主要包括:命名規範、功能定義規範、結構規範1.5.1
命名規範,規則如下1.5.1.1 JOB命名規範 邏輯層_業務領域_目標表[_ALL][_序號] CASE1:如果一個job只涉及到一個目標表,則該job命名為:邏輯層_業務領域_目標表[_序號]。 CASE2:如果一個job涉及到兩個目標表,兩張目標表為主從表關係,則該job命名為:邏輯層_業務領域_目標主表名_ALL。 CASE3:如果滿足1和2定義的規則出現兩個job重名的情況,通過序號區分(序號定義:01,02,…)。1.5.1.2 JOB中link命名規範 對於作業內部的Stage與Link的命名,每個stage都賦予標示功能的名稱,此外在作業設計介面內適當加上注釋資訊,主要包括作業功能說明、所屬模組、開發時間、開發人員等資訊。
Elements |
Description |
Example |
Stages |
Name_Desc |
DB2_Product、Lkp_Product |
Links |
StageToSatge |
LkpToAgg、SortToDb2 |
Connection Type |
|
Native |
Stage_Databse |
DB2_DC |
ODBC |
ODBC_DBType_ODBCName |
ODBC_IQ_TDC |
1.5.1.3 檔案定義: 作業設計過程中不可避免要使用檔案作為中間儲存或者最終結果輸出,在DataStage裡,使用Sequential File Stage來定義循序檔。對於Sequential File Stage,通常遵循以下規則進行定義: 檔案名稱:邏輯層_業務領域_功能_FILENAME,其中: 功能:根據檔案的目的進行存放,例如EXF(抽取),LD(裝載),REJ(拒絕)1.5.1.4 ETL參數規範 參數與變數的命名統一為大寫,單詞或者簡拼間用底線(“_”)串連。其中各個字後不要有空格,遵循參數名=參數值的寫法,一行一個參數。參數檔案如所示
參數的設定: CASE1:建立參數集Parameter Set:在參數集中添加該Project需要的參數,供各個Job調用。 CASE2: 在job運行時,通過在Sequence Job裡將具體的參數檔案名稱傳給參數集。 一般項目中參數會分為以下幾種情況: CASE1:參數值緩慢變化或者基本不變的參數。這類參數主要分為以下三種: CASE1.1:用來標識記錄來源的APP_CODE欄位以及資料庫訪問的模式名。 CASE1.2:資料庫連接相關參數。 CASE1.3:臨時輸出的一些文字檔路徑資訊。 CASE2:參數值經常變化的參數。這類參數主要分為以下兩種 CASE2.1:控制抽取資料的起始截止時間 CASE2.2:以具體項目中業務為依據 對於第一類參數的處理方式: DEAL_CASE1.1:定義參數集PARA_SET_APPCODE和PARA_SET_SCHEMA。PARA_SET_APPCODE定義所有用來標識源系統的參數名和參數值。PARA_SET_SCHEMA定義所有用來訪問資料庫的模式名稱。PARA_SET_APPCODE對應的值檔案為PARA_SET_APPCODE.txt,值檔案PARA_SET_APPCODE.txt儲存路徑在IIS安裝目錄下:$PROJECT_NAME\ParameterSets\PARA_SET_APPCODE\PARA_SET_APPCODE.txt。PARA_SET_SCHEMA中對應的參數
指定訪問各個資料來源資料庫的模式名,PARA_SET_SCHEMA對應的值檔案為PARA_SET_SCHEMA.txt,值檔案PARA_SET_SCHEMA.txt儲存路徑在IIS安裝目錄下:$PROJECT_NAME\ParameterSets\PARA_SET_APPCODE\PARA_SET_APPCODE.txt。 DEAL_CASE1.2:串連資料庫的處理方式:在DataStage中定義資料連線對象,資料連線對象中參數我們在定義的時候賦參數值,在job中裝載對應的連線物件。因為資料連線對象比較少,所以我們不採用傳遞參數值的方式去維護資料連線對象中需要的使用者名稱、密碼等相關參數。 DEAL_CASE1.3:臨時輸出的一些文本的路徑資訊處理方式:我們將路徑資訊定義到環境變數中。定義Ds_File_Temp_Dir和Ds_File_Error_Dir兩個環境變數。變數Ds_File_Temp_Dir的值是IIS安裝目錄下路徑:$PROJECT\ds_file_temp,其中存放的job在運行過程中產生的臨時中間檔案。需要先在對應目錄下建立檔案夾ds_file_temp。變數Ds_File_Temp_Dir的是IIS安裝目錄下的路徑:$PROJECT\sdetl\ds_file_Error,其中存放的是job運行過程中的一些關於資料品質的出錯資訊。關於資料品質的錯誤資訊是在設計job的時候指定輸出到文本的。需要先在對應目錄下建立檔案夾ds_file_Error。 對於第二類參數的處理方式: DEAL_CASE2.1:定義參數集PARA_SET_業務領域_DATA。PARA_SET_業務領域_DATA中定義了所有的與日期相關的參數,參數的值是通過參數集值檔案的方式提供的。每個業務領域都對應一個參數值檔案用來分別控制本業務領域時間參數的設定。每個業務領域對應的參數集值檔案是通過ETLjob自動產生。 DEAL_CASE2.2:根據具體項目業務決定。1.6
維護規範 通常在ETL運行結束後,擷取相關日誌資訊並記載到資料庫中是一個較好的處理方法。對基於DataStage的開發,可以提供一套完整的Tlog方案,擷取日誌資訊)由代碼開發,將日誌寫回資料庫,可以進行簡單修改將日誌匯入資料庫等容器中產生維護報告。1.6.1記錄檔報告 匯總報告:SEQ作業,包含JOB數量,WARNING作業數,成功作業數,失敗作業數,開始時間,結束時間…. 詳細報告:SEQ作業名稱,JOB名稱,開始時間,結束時間,運行狀態….
1.6.2 JOB維護文檔 點擊文檔中JOB的名稱,可以提供JOB MAPPING設計。
1.6.2 備份、恢複與版本控制
ETL系統的備份主要是對ETL運行環境備份。
運行備份是指為保證如果啟動並執行ETL系統崩潰時可以通過備份的ETL系統繼續完成ETL的工作,為達到這個目的,應安裝兩台DataStage環境,並建立相同的配置,其中一台處於運行狀態,而另一台為待機狀態。每日在日常ETL完成後對運行環境的各檔案進行備份,即將ETL的運行目錄轉儲到外掛磁碟或外部儲存介質。
ETL系統的恢複主要是運行恢複。
運行恢複是指當運行系統遇到嚴重故障如硬體故障、作業系統崩潰等無法及時修複時,啟用備份的運行系統繼續,通過將上一日備份的ETL環境恢複到待機系統,然後啟動待機系統運行日常ETL。