ETL 設計開發過程的總述

2021-09-26 20:41:54 字數 2942 閱讀 9570

etl的主要作用:資料的獲取、清洗的一致性、用於展現的發布、etl環境的管理,

在所有的設計etl模型的時候,所有模型的邏輯設計應該已經初步完成,並了解了自己所使用的用於建立資料倉儲的資料來源有哪些,以及需要建設的模型etl和源之間的對映關係的80%是可以確認的,那麼在上面的基本條件準備充分的情況下,可以開始etl的建設,需要考慮一下etl工具的選擇,對於乙個大型的專案有乙個etl去管理,對後期新的需求和維護是有很大的幫助,這個是從多個專案的深切體會。

基於現在資料分析etl可以分為如下兩大類:

.維度etl模型;

指標etl模型。

基於以上的兩種模型展開專案的etl的搭建,根據需求結合業界對於不同維度的使用情況進行處理,例如:維度的緩慢變化,站在歷史看歷史的需求等等,對維度的處理比較麻煩;指標處理就相對維度價簡單些,根據需求和對映關係等內容可以計算或者得到想要的彙總結果。

下面結合實際專案經驗:主要對維度模型的etl建立,做詳細介紹、

實際場景:

專案背景金融行業,主要是對各個證卷金融行業資料進行彙總,供決策層使用和下屬的一些單位使用,按照需求需要實現站在歷史看歷史,那麼這時候維度的緩慢變化是關注的乙個重點設計。

假設資料**源a,b兩個專案,歸屬到c專案

高層規劃

明確資料的**只有兩個專案a,b;

首先需要明確c專案和a,b專案維度值的對映關係,這個是由c專案的負責人提供對映關係;

關於指標的獲取方式按照需求的要求實現,這裡不做介紹;

對於站在歷史看歷史的資料,那麼維度的變化是不可避免,需要考慮對變化的維度如何處理;

選擇etl工具

進來用來做etl工作的工作層出不窮,比較多,選擇一款合適的etl工具,對於後續的開發維護及新需求的處理都是有很大的幫助,很不幸的是我們採用了最原始的工具sql指令碼,好處,可以針對不同的需求能夠處理,避免因為工具的侷限性導致部分需求開發比較困難,不足,開發工作量大,並且**管理比較繁瑣。

使用etl工具的優勢:

便於管理,同時可以生成一些構建文件,便於維護;

圖形關係直接轉化為物理模型;

以最基本的經驗改進效能;

成本小,不需要特別專業的sql開發人員;

未來系統的維護和改進有很大的幫助,快速,易讀性強。

開發些常規【行業標準】

從每個主要的源系統獲取資料;

是直接從庫讀取,還是檔案讀取,或者流的方式讀入等。

歸檔回去資料或分級的資料;

在獲取資料之後,在處理之前需要將資料儲存,是儲存最新的還是歷史所有的,需要將遷移的資料做乙個歸檔,是永久歸檔還是有時間限制的歸檔,根據具體的平台設計和將來平台的擴充套件性,及專案是作為其他專案的資料倉儲等一些列原因去分析。

監控維度和特定事實表的資料質量

在做etl過程中,要時刻注意資料質量的問題,對於一些異常資料及時發現與相關業務溝通,制定相應的處理規則,不能等使用者發現在處理嗎,這樣專案的整個進度就會出現很難把控的形式;

維度變換的屬性變化的管理

這一部分是etl設計的乙個難點,c專案直接在維度表儲存最新的維度資料。這個是處理的比價簡單的方式,個人建議一般不這麼處理,缺陷,使用者需要知道不同時期的維度值的分布情況,eg:2023年的時候,性別維度屬性name值男、女2023年發生變化值變為男生、女人。那麼按照c專案的處理方式現在維度表是有4個值,站在歷史看歷史,在2023年的時候通過name值為男生的時候查出來的資料是空的,這個就需要解釋。而且一張維度表中這四個值,這樣的設計存在不合理性。

個人覺得分為以下二種設計比較合理一些

在查詢2023年之前維度表的值就應該只有男、女,查詢之後的資料對應的是變化後的值,這個就需要考慮維度的緩慢變化,對資料加工的處理也是乙個複雜的過程

將所有的維度進行轉換,所有的維度採用最新維度,同時將變化維度做好記錄和對映,在資料加工的資料,進行轉換。不會出現維度字段內容冗餘;

以上兩種方案的實施還是需要具體參考業務的需求去設計和實施。

確保資料倉儲和etl系統滿足系統可用性需求

將這一部分一定要文件化,以及所有使用到的etl設計文件很重要。

設計資料審計子系統

資料倉儲中每行應該使用相關審計信度息標記,用於描述資料如何進入系統的

組織過渡區

資料倉儲建立或者etl處理過程一般至少都要有2-3次的轉換,用於etl步驟以及系統恢復和附檔工作。

按照目標表鑽取資料

確保層次的清洗性;

開發的詳細設計的pdm。

開發etl規範文件

源到目標的對映、資料檔案的報表、物理設計決策,都應該包含子啊etl開發的文件中,具體一應該包含一下幾部分:

每個組要源系統獲取的預設策略;

歸檔策略;

資料質量跟蹤和元資料;

管理維度屬性變化的預設策略;

系統可用性需求與策略;

資料審計子系統的設計;

過渡區定位;

表設計{列名,資料型別、鍵和約束}

歷史資料載入引數(月數)和容量(行計數)

增量資料容量,對每個載入週期涉及的新的和更新的行

處理實時表和維度表遲到的資料。

載入資料頻率

處理每乙個維度屬性的緩慢變換維度變化

表分割槽,例如按月

資料**概述,包括討論所有不常見的源特徵

詳細的源到目標的對映

源資料概要,包括每乙個列的最大值和最小值,每乙個列中不同值的統計及空值發生的頻率

源資料獲取策略【api,直接從資料庫查詢或者轉儲存到平面檔案】

依賴,包括某個表在處理前必須載入那些表

文件化轉換邏輯,這部分最好用偽**或者圖進行說明

避免產生錯誤的前台條件,etl開始之前檢查資料庫的儲存空間和必須檢查的檔案

清洗步驟,刪除冗餘的檔案

估計etl設計的各個環境的 難以程度

以上開發文件的擁有,便於開發人員快速開發,精準把握,而且可以很好的指導後續工作內容,和etl的進度把控。

設計和開發ETL系統(一) ETL過程綜述

在這部分將按照設計和實現etl系統的流程展開,將上乙個部分的那些子系統按照提取資料 清洗和一致化 向呈現伺服器提交以及管理etl環境等四個方面進行了分類。是不是說對etl主要就是掌握這四個方面的內容 etl處理步驟 提取資料 清洗和一致化 向呈現層提交 管理etl環境 計畫 建立乙個高層的 單頁的源...

軟體開發過程概要(需求分析 系統設計 開發過程)

乙個軟體的開發過程大體上有哪幾步 需求分析 1 分析使用者有哪幾種角色 分別需要哪些功能 畫用例圖 2 分析使用場景 每種場景下一步一步的動作 畫活 系統設計 3 分析系統的物件 每種物件有哪些屬性 設計po和表結構 4 設計業務邏輯 web層 邏輯層 dao 寫偽 並設計web頁面 畫介面低保真 ...

App的開發過程

不同的專案管理模式或許會有完全不同的流程步驟。但是專業性幾乎是保證產品質量的唯一準則。1 需求梳理 分析 2 產品原型圖繪製 3 ui 設計 4 專案經理 技術負責人對接需求 5 技術方案 架構設計 6 專案排期 任務分解 7 產品研發階段 8 交付測試階段 9 最後,按原計畫上線 第一步 需求梳理...