Page 1 of 1

動態覆蓋測試

Posted: Tue Mar 18, 2025 8:36 am
by rumana777
動態覆蓋測試也屬於動態資料類別,但它們在檢查內容方面與動態夾具測試有所不同。雖然動態夾具測試可以檢查我們可以控制的設定檔的資料質量,但這非常有限,因為不可能在所有目標中都做到這一點,而動態覆蓋測試可以檢查資料品質而無需控製設定檔。這是可能的,因為動態覆蓋測試不檢查精確的值,而是根據我們定義的一組規則檢查這些值。這就是《遠大前程》的由來。

動態覆蓋測試是我們資料品質保證過程中最複雜的測試。 Dagster 也將它們編排為動態裝置測試。不過,我們在這裡使用 Great Expectations 而不是簡單的 Python 腳本來執行測試。

首先,我們需要選擇我們想要測試的設定檔。通常,我們會從資料庫中選擇具有高領域覆蓋率的設定檔。我們這樣做是因為我們希望確保測試涵蓋盡可能多的領域。然後,我們使用 Great Expectations 根據選定的設 台灣數據 定檔產生規則。這些規則基本上是我們想要根據資料檢查的約束。以下是一些範例:

所有個人資料都必須有一個名稱。
至少 50% 的個人資料必須有姓氏。
教育計數值不能低於0。
動態覆蓋測試的步驟
在我們產生規則(在《遠大前程》中稱為期望)之後,我們可以運行測試管道,它包含以下步驟:

將我們要抓取的 URL 加入佇列

解析
使用 Great Expectations 驗證已解析的文檔
這樣,我們就可以檢查我們無法控制的設定檔的資料品質。動態覆蓋測試是我們資料品質保證過程中最重要的測試,因為它們檢查從抓取到解析的整個流程,並驗證我們無法控制的設定檔的資料品質。這就是我們對每個目標按計劃執行動態覆蓋測試的原因。

然而,從頭開始實施動態覆蓋測試可能具有挑戰性,因為它需要一些關於 Great Expectations 和 Dagster 的知識。這就是為什麼我們準備了一個示範項目,展示如何使用 Great Expectations 和 Dagster 來實現自動資料品質檢查。

實施自動數據品質檢查
在這個 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 驗證是否通過或失敗。