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 最後,按原計畫上線 第一步 需求梳理...