【51CTO.com快譯】如今,企業比以往任何時候都更加依賴數據。根據Gartner的最新數據質量市場調查,那些糟糕的數據質量,每年平均會給企業造成1500萬美元的巨大損失。而且錯誤的數據往往會讓企業失去商機、損毀市場聲譽、拉低客戶信心、甚至造成重大的財務損失。毋庸置疑,只有準確、一致、完整且可靠的數據,才能真正為業務提供實際、有利的價值。為此,許多企業往往會使用數據質量的相關工具。在本文中,我們將和您討論如下五種數據質量類工具:
- Great Expectations
- Spectacles
- Datafold
- dbt(數據構建工具)
- Evidently
在深入探討工具之前,讓我們首先了解一下保障數據質量的相關概念。
數據問題從何而來?
從廣義上講,內、外部因素都會導致數據出現質量問題。其中,外部因素是指企業從諸如Meta、Google Analytics或AWS Data Exchange等,無法控制的第三方獲取數據。例如,不同公司的IT系統可能在合并或收購之后,需要進行數據整合。但是,由于未能審核這些來自第三方的數據質量,或是因為應用程序中的輸入驗證不當,則可能導致數據質量出現問題。
而內部原因則源于企業生態系統的內部。例如,我們常聽說的企業數據孤島,就是一些鮮為人知的數據源。它們僅由組織內的某些團隊或部門所使用。此外,缺乏適當的數據所有權管理,使用錯誤的數據類型和模型,甚至是軟件工程師在應用程序的任何層更改字段、或引入破壞數據的代碼更新,都可能導致數據質量的不佳和不一致。
衡量數據質量
數據在企業中的質量與價值,很大程度上取決于該企業如何定義它們,以及如何確定它們的優先級。通常,我們有七個實用的質量衡量指標。
- 相關性:數據與業務的相關程度。
- 準確性:數據的精準程度。
- 完整性:數據是否完整,是否處于穩定狀態。
- 一致性:數據在整個組織中的是否能保持一致。如果使用同一個應用程序,去轉換多個來源的同一條數據,其輸出應當始終相同。
- 合規性:數據是否符合業務規則所期望的標準和格式。
- 唯一性:相同數據的多個副本是否在企業中都可用,而且它是否來自唯一的真實數據源。
- 及時性:數據對于當前業務需求的及時性。
確保數據質量
如前所述,企業通常使用一些自動化工具,來檢查數據的質量。這些工具既可以是定制開發的,也可以是由供應商直接提供的。這兩種選擇各有利弊。
如果擁有充沛的IT資源,并且明確地定義了數據質量的要求,那么企業可以考慮采用定制化的開發方案,通過推出適合自己的工具,去減少持續的成本支出。當然,構建自定義方案也可能比較耗時,而且容易超過最初的預算。
而如果公司需要快速、可靠的方案,且不想自行維護的話,那么購買現成的方案則是最好的選擇。說到這里,下面讓我們來討論五種典型的數據質量工具。當然,市場上還有許多其他相似的工具。您可以選擇混合搭配的方式,來滿足自己的預算和真實使用場景。
1.Great Expectations
作為一個開源庫,Great Expectations可用于驗證、記錄和分析數據。用戶以期望(expectations)的形式定義斷言(assertions)。顧名思義,期望是您期望從數據中獲得的質量;斷言則是用聲明性語言編寫的。例如,下圖的斷言示例定義了passenger_count列的值必須介于1和6之間。
Great Expectations的另一個功能是自動化數據分析。它可以根據統計數據,自動從數據中生成期望。由于數據質量工程師不必從頭開始編寫斷言,因此大幅節省了開發的時間。
一旦各種預期準備就緒,它們就可以被合并到數據管道中。例如,在Apache Airflow中,數據驗證步驟可以被定義為一個使用BashOperator的checkpoint script。它會在數據流經管道時,觸發相應的質量檢查。目前,Great Expectations兼容大部分數據源,其中包括CSV文件、SQL數據庫、Spark DataFrames和Pandas等。
2.Spectacles
Spectacles是一種持續集成(CI)類工具,旨在驗證項目中LookML。此處的LookML是Looker類型的數據建模語言。而Looker是一個BI(業務智能)平臺,它允許那些不懂SQL的人員去分析和可視化數據。
Spectacles通過在后臺運行SQL查詢,并檢查錯誤,來驗證LookML。它能夠與GitHub、GitLab和Azure DevOps相集成。該工具適用手動調用、從拉取請求中觸發,以及作為ETL作業的一部分運行等,幾乎任何類型的部署模式。而將Spectacles作為CI/CD工作流的一部分,意味著它能夠在將代碼部署到生產環境之前,自動驗證LookML的相關查詢。
3.Datafold
作為一個主動式的數據質量平臺,Datafold由數據差異(Data Diff)、具有列級沿襲(lineage)的數據目錄(Data Catalog)、以及數據監控(Data Monitoring),三個主要組件所構成。
Data Diff允許您在合并到生產環境之前,對兩個數據集(例如dev和prod)進行比較。這有助于用戶采用更為主動的開發策略。它也可以被集成到團隊的CI/CD管道中,以便共享GitHub或GitLab中的代碼更改,并顯示出具體的差異。
我們來看一個例子,Datafold的沙箱環境中自帶有一個taxi_trips的數據集。如下圖所示,我們在數據集datadiff-demo.public.taxi_trips和datadiff-demo.dev.taxi_trips之間運行了Data Diff操作。
那么在右側帶有詳細信息的面板上,您將可以選擇不同的選項卡,以獲得針對結果的不同視角。其中,“Overview”選項卡將包含成功和失敗測試的概要。
其Schema部分展示了兩個數據集的列(包括數據類型,以及出現的順序)是否相匹配。
其Primary Keys部分顯示了主鍵的唯一性、非NULL、以及和兩個數據集之間匹配的百分比。
盡管Overview選項卡已經充分展示了各種信息來源,但是其他選項卡也能提供更多實用的詳細信息。例如,Schemas選項卡就包含了如下方面:
上圖突出顯示了具有兩個不同數據集的列。據此,數據工程師可以僅專注于這兩個領域的內容,而節省寶貴的時間。
Data Catalog不但能夠列出所有注冊到Datafold的數據源,而且允許用戶使用過濾器,去查找和分析任何特定的數據集。對于擁有數百個、甚至是數千個數據集的組織來說,這無疑會大幅節省時間。作為一種發現異常的實用方法,它能夠針對數據沿襲(data lineage)功能,協助“回答”如下問題:
- 這個值從何而來?
- 這個值如何影響其他表?
- 這些表是如何關聯的?
Data Catalog提供了如下儀表板。通過滾動鼠標,您可以看到每一列的詳細信息,其中包括:
- 完整性(Completeness)-- 不為NULL值的百分比。
- 分布(Distribution)-- 顯示了出現得最多與最少的值,以及偏向某個范圍的值。
單擊Lineage下的圖標,您會看到如下內容:
圖形沿襲圖(graphical lineage diagram)可以協助數據工程師快速找到列值的來源。您可以檢查表、所有(或特定)列、以及與上下游有關的各種沿襲。
Datafold的Data Monitoring功能允許數據工程師通過編寫SQL命令,來查找異常,并創建自動警報。這些警報由機器學習提供支持。而機器學習通過研究數據的趨勢和周期性,能夠準確地發現某些異常情況。下圖顯示了此類查詢:
該查詢是由Datafold自動生成的。它跟蹤了出租車數據集中的每日總車費,以及總行程的趟數。
如下圖所示,Datafold還允許用戶去檢查異常跟隨時間變化的趨勢。其中,黃點表示相對于最小和最大值的各種異常。
4.Dbt
Dbt是一個數據轉換類工作流工具。它在部署之前,能夠針對目標數據庫執行數據轉換的代碼,顯示代碼將如何影響數據,并突出顯示各種潛在的問題。也就是說,Dbt通過運行SELECT語句,以基于轉換的邏輯,去構建數據的結束狀態。
Dbt不但容易被集成到現代化的BI棧中,并且可以成為CI/CD管道的重要組成部分。它既可以根據拉取請求或按計劃自動運行,又具有自動化回滾的功能,可以阻止在部署過程中,具有潛在破壞性的代碼更改。
值得一提的是,Datafold和Dbt可以一起用于自動化的數據質量測試。與Dbt類似,Datafold也可以被集成到CI/CD管道中。在協同使用時,它們會顯示目標代碼是如何影響數據的。
5.Evidently
作為一個開源的Python庫,Evidently用于分析和監控機器學習的模型。它能夠基于Panda DataFrames和CSV文件生成交互式的報告,可用于對模型進行故障排除和數據完整性檢查。這些報告會顯示模型的運行狀況、數據漂移、目標漂移、數據完整性、特征分析、以及分段性能等指標。
為了了解Evidently的具體功能,您可以在Google Colab上打開一個新的筆記本,然后復制如下代碼段:
- wine = datasets.load_wine()
- wine_frame = pd.DataFrame(wine.data, columns = wine.feature_names)
- number_of_rows = len(wine_frame)
- wine_data_drift_report = Dashboard(tabs=[DataDriftTab])
- wine_data_drift_report.calculate(wine_frame[:math.floor(number_of_rows/2)], wine_frame[math.floor(number_of_rows/2):], column_mapping = None)
- wine_data_drift_report.save("report_1.html")
該代碼段會在瀏覽器中生成并加載報告。報告的儀表板概覽界面,將顯示基于每項功能的參考值與當前值的分布。
Evidently還可以進行更多近距離的檢查。例如,下圖顯示了當前數據集和參考數據集不同的確切值。
由此,我們可以進一步獲悉數值目標漂移、分類目標漂移、回歸模型性能、分類模型性能、以及概率分類模型等性能。
小結
隨著數據質量標準和業務需求在不斷發展,數據質量的保證已經成為了一個持續的過程。上文和您討論的五種工具,通常可以被用于數據處理和使用的不同階段。您也可以根據自身業務和數據使用的實際需求,或是單獨采用,或是以不同的組合形式進行協同試用。
原文標題:Five Data Quality Tools You Should Know,作者:Michael Bogan
【51CTO譯稿,合作站點轉載請注明原文譯者和出處為51CTO.com】