本文中描述的數據集市搭建方案是一家跨國公司在AWS平臺上的具體實踐案例。我公司參與其中的數據血緣部分的建設,SQLFlow數據血緣分析工具在該方案中幫助用戶實現了數據血緣分析。
用戶使用Redshift 數據庫倉庫進行數據集市開發。從各種數據源提取數據,并將數據存儲到AWS S3中,通過將S3中的數據映射到Redshift Spectrum,實現對大規模數據的高效查詢,然后根據設計好的數據集市數據模型,將S3中的數據進行各種數據轉換和審查,最終將處理結果數據存儲到Redshift數據集市庫中,經過測試后數據集市上線運維。從數據準備到數據集市上線的整個開發流程如下圖所示:
數據集市開發過程中涉及到多個環節,其中一些環節會產生數據血緣關系。數據血緣關系是指數據從源頭到目的地的整個流轉過程,包括數據的來源、經過的轉換、以及最終存儲的位置。在 AWS 平臺上,特別是使用 Redshift 數據庫進行數據集市開發時,理解和管理數據血緣關系對于確保數據質量、進行數據治理以及優化數據處理流程至關重要。
產生數據血緣關系的環節:
1、數據提取:從各種數據源提取數據到 S3 時,會產生數據的初步血緣關系,記錄了數據從源系統到 S3 的移動。
2、S3 到 Redshift Spectrum 的映射:將 S3 中的數據映射為 Redshift Spectrum 的外部表時,進一步定義了數據從 S3 到 Redshift 的流轉路徑。
3、數據轉換:在數據轉換過程中,原始數據會經過一系列的轉換操作,生成新的數據集。這一過程中產生的血緣關系記錄了數據如何被轉換以及轉換的邏輯。
4、數據加載:將轉換后的數據加載到 Redshift 的持久化表中,這一步驟也會產生數據血緣關系,記錄了數據從臨時表到持久化表的移動。
數據血緣分析方案設計:
1、采用SQLFlow的私有化部署版本作為數據血緣分析工具,通過REST API做系統集成。
2、定義血緣關系模型:首先需要定義一個數據血緣關系模型,明確記錄數據源、轉換步驟、目標表以及每個步驟的依賴關系。 模型定義時可以參考SQLFlow的dataflow對象,該對象定義了元數據和數據血緣關系包含的所有信息。
3、血緣數據的收集:在數據處理的每個環節,通過日志、元數據管理工具或編程方式收集數據血緣信息。由于用戶整個數據集市的開發都是圍繞Redshift數倉展開的,所以分析Redshift日志中的sql可以覆蓋所有數據血緣產生環節。另外為了保證血緣分析的準確性,還需要提取Redshift的metadata輔助分析。
4、血緣關系的存儲與管理:設計一個中心化的血緣關系數據庫或使用現有的數據目錄服務來存儲和管理血緣信息。用戶將數據血緣存儲到了Redshift庫中,并上傳到數據資產管理系統Alation進行管理。
數據血緣分析實施步驟:
1、集成血緣收集
a) 安裝SQLFlow私有化部署regular版本。
b) 使用sqlflow-ingester的submitter工具,每天定時自動執行一次增量的SQLFlow數據血緣分析。submitter會拉取最近30天的Redshift日志,并將日志文件中的sql提取出來存為后綴為sql的文本文件,同時submitter還會連接Redshift數據庫將完整的元數據提取出來存為metadata.json, 最后submitter將提取到的sql文件和metadata.json壓縮成一個zip包,遞交給SQLFlow做數據血緣分析。整個過程由submitter自動完成,無需人工干預。
2、血緣數據存儲
編寫Python腳本,每天凌晨定時執行,在腳本內調用SQLFlow的REST API查詢數據血緣分析結果,并將血緣數據轉成用戶的數據血緣關系格式,存入Redshift數據庫。同時上傳到Alation數據資產管理平臺。
3、實現血緣查詢與分析功能
通過集成SQLFLow的widget前端組件可以實現數據血緣可視化。用戶的數據資產管理是通過Alation實現,數據分析是通過商業智能BI軟件Qlik Sense實現。在這兩個系統中,點擊要查詢的表、視圖或者字段可以鏈接到一個widget生成頁面查看數據血緣。
用戶用到的數據血緣分析功能主要有:
a) to left most 當前表/視圖/字段的數據最初來自哪些表/視圖/字段。
b) up stream 當前表/視圖/字段的數據來自哪些表/視圖/字段。
c) down stream 當這個表/視圖/字段的數據發生變動時,會影響哪些表/視圖/字段。
d) outgoing 用戶在做報表查詢時,會用到一些表或視圖。需要通過分析SQL語句,列出這些給報表提供數據的表,并回溯到給這些表提供數據的數據集市表,通過數據集市表,可以繼續回溯到更早的源系統。
4.血緣信息的維護與更新
確保數據處理流程中的變更能夠及時反映到血緣信息中,定期審核和更新血緣數據庫,保持數據血緣信息的準確性和時效性。 編寫Python腳本,每日凌晨定時執行,腳本中會對數據的合法性進行校驗,校驗結果會自動發郵件到用戶運維人員電子郵箱。
實施后的系統拓撲圖如下所示:
通過上述設計方案和實施步驟,可以有效地管理和分析數據集市開發過程中產生的數據血緣關系,從而提高數據質量,優化數據處理流程,并支持數據治理和合規性要求。
更多文章請關注微信公眾號:鳳鳴古都