Great Expectations 於 2017 年由 Abe Gong 和 James Campbell 開發的 side project。他們的目標是創造一個工具,幫助數據從業者更好地測試和記錄數據質量。當時 Abe 在領導 Superconductive Health 的數據諮詢業務,James 則是美國政府的數據科學家,他們共同推出了 Great Expectations 作為開源項目。2018 年,平台在 Strata Data & AI 大會上推出後,迅速獲得數據工程師、科學家和分析師的支持,因其靈活性和可擴展性而受到歡迎。2019 年,兩人全力專注於 Great Expectations 的發展,並獲得風險投資支持,建立了快速增長的開源社群。2024 年,Great Expectations 推出了 GX Cloud 的公測版本,提供端到端的數據質量解決方案,並朝著產品導向的商業化道路邁進。
所以目前主要產品就很像 dbt,有可以整合進 python 當中的 core 版本和雲端的 cloud 版本~
Great Expectations 是一個資料驗證的開源工具,2017 年由 Abe Gong 和 James Campbell 發布,核心理念是將數據測試和驗證變得像軟件測試一樣普遍和有效。Great Expectations 的設計哲學強調:
這是 Great Expectations 的核心概念,期望是對數據應該滿足的條件的聲明。例如所有客戶ID應該是唯一的或年齡列不應包含負值
Great Expectations 可以根據定義的期望自動驗證數據,並生成詳細的驗證結果
工具可以自動生成數據文檔,包括數據概況、期望列表和驗證結果。
Great Expectations 提供了多種工具來幫助用戶理解和探索他們的數據。
它可以輕鬆整合到各種數據管道和工作流程中,支持多種數據源和存儲系統。
當然可以整合進 airflow 和 dbt 專案囉~
pip install great_expectations
import great_expectations as ge
# 載入數據
df = ge.read_csv("your_data.csv")
# 創建期望
df.expect_column_values_to_be_between("age", min_value=0, max_value=120)
df.expect_column_values_to_be_unique("customer_id")
# 驗證數據
results = df.validate()
# 查看結果
print(results)
Expectations
類型包括:Expectations
可以到官方網站上查看許多預先建立好的 Expectations,其中都會有 python 的使用範例
例如我們選擇其中的ExpectColumnMeanToBeBetween
,從名稱大概就可以知道是欄位平均值需要介於XX 和 XX 之間
免費的 Developer Plan 就有提供了五個資料源,三個使用者,而且驗證結果會保留 30 天,其他詳細的方案內容可以來這裡看~
我這邊是連接 AWS RDS 當中的 postgres DB,連接的 url 範例如下
postgresql+psycopg2://<username>:<password>@<host>:<port>/<database>
連接完之後就可以在首頁看到了
在 GX Cloud
中也可以找到同一個預設定好的檢查 Expect column mean to be between
,在這裡範例就是設定客戶 LTV 的平均值會介於 0 ~ 100。
建立完之後就可以在 Expectations
頁面看到並手動執行(當然可以設定定期執行)
在 Validations
頁面就可以看到執行的紀錄,目前資料的平均值可以看到是 26.9
如果突然有極端值,就可能導致平均值超過範圍,有設定檢查就能提擇發現,避免後續資料使用在報表或模型導致錯誤或難以挽回的結果
也可以透過 email 設定警報,slack 也可以~
感覺只講了非常一點點,還有很多可以聊,但只剩下四天了,計劃趕不上變化