實施自動數據品質檢查
Posted: Tue Mar 18, 2025 8:36 am
在這個 Gitlab 儲存庫中,你可以找到如何使用 Dagster 和 Great Expectations 測試資料品質的示範。動態覆蓋率測試圖有更多步驟,例如seed_urls,scrape,parse等,但為了簡單起見,在本demo中省略了一些操作。然而,它包含了動態覆蓋測試中最重要的部分——資料品質驗證。示範圖包含以下操作:
load_items: 從檔案載入資料並將其載入為 JSON 物件。
load_structure: 從檔案載入資料結構。
get_flat_items: 使資料平坦化。
load_dfs:使用來自 load_structure 操作的結構將資料載入為 Spark DataFrames。
ge_validation:對每個 DataFrame 執行 Great Expectations 驗證。
post_ge_validation:檢查 Great Expectations 驗證是否通過或失敗。
品質測試演示圖
雖然有些操作是不言自明的,但讓我們來研究一下可能需要進一步詳細說明的一些操作。
生成結構
load_structure操作本身並不複雜。然而,重要的是結構 台灣數據 類型。它表示為 Spark 模式,因為我們將使用它將資料載入為 Spark DataFrames,因為 Great Expectations 可以與它們一起使用。 Pydantic 模型中的每個嵌套物件都將表示為單獨的 Spark 模式,因為 Great Expectations 無法很好地處理嵌套資料。
例如像這樣的 Pydantic 模型:
然後,來自 get_flat_items 操作的扁平化資料將根據我們在 load_dfs 操作中的 load_structure 操作中載入的結構載入到每個 Spark DataFrame 中。
load_dfs 操作使用DynamicOut,它允許我們根據在 load_structure 作業中載入的結構建立動態圖。
基本上,我們將為結構中的每個巢狀物件建立一個單獨的 Spark DataFrame。 Dagster 將建立一個單獨的 ge_validation 操作,對每個 DataFrame 並行執行 Great Expectations 驗證。並行化很有用,不僅因為它可以加快進程,還因為它可以創建圖形來支援任何類型的資料結構。
因此,如果我們抓取一個新目標,我們可以輕鬆添加一個新結構,並且圖表將能夠處理它。
load_items: 從檔案載入資料並將其載入為 JSON 物件。
load_structure: 從檔案載入資料結構。
get_flat_items: 使資料平坦化。
load_dfs:使用來自 load_structure 操作的結構將資料載入為 Spark DataFrames。
ge_validation:對每個 DataFrame 執行 Great Expectations 驗證。
post_ge_validation:檢查 Great Expectations 驗證是否通過或失敗。
品質測試演示圖
雖然有些操作是不言自明的,但讓我們來研究一下可能需要進一步詳細說明的一些操作。
生成結構
load_structure操作本身並不複雜。然而,重要的是結構 台灣數據 類型。它表示為 Spark 模式,因為我們將使用它將資料載入為 Spark DataFrames,因為 Great Expectations 可以與它們一起使用。 Pydantic 模型中的每個嵌套物件都將表示為單獨的 Spark 模式,因為 Great Expectations 無法很好地處理嵌套資料。
例如像這樣的 Pydantic 模型:
然後,來自 get_flat_items 操作的扁平化資料將根據我們在 load_dfs 操作中的 load_structure 操作中載入的結構載入到每個 Spark DataFrame 中。
load_dfs 操作使用DynamicOut,它允許我們根據在 load_structure 作業中載入的結構建立動態圖。
基本上,我們將為結構中的每個巢狀物件建立一個單獨的 Spark DataFrame。 Dagster 將建立一個單獨的 ge_validation 操作,對每個 DataFrame 並行執行 Great Expectations 驗證。並行化很有用,不僅因為它可以加快進程,還因為它可以創建圖形來支援任何類型的資料結構。
因此,如果我們抓取一個新目標,我們可以輕鬆添加一個新結構,並且圖表將能夠處理它。