自動評估資料品質總覽

Dataplex Universal Catalog 自動資料品質功能可讓您定義及評估 BigQuery 資料表中的資料品質。您可以自動掃描資料、根據定義的規則驗證資料,以及在資料不符合品質規定時記錄快訊。您可以將資料品質規則和部署作業視為程式碼進行管理,提升資料生產管道的完整性。

您可以根據 Dataplex Universal Catalog 資料剖析掃描結果,使用規則建議,也可以建立自訂規則。

Dataplex Universal Catalog 提供監控、疑難排解和 Cloud Logging 快訊功能,並與 Dataplex Universal Catalog 自動資料品質功能整合。

概念模型

資料品質掃描會將品質規則套用至資料表資料,並回報結果。

資料掃描是 Dataplex Universal Catalog 工作,可從 BigQuery 和 Cloud Storage 取樣資料,並推斷各種中繼資料。如要使用自動資料品質功能評估資料表品質,請建立 data quality 類型的 DataScan 物件。掃描作業只會在一個 BigQuery 資料表上執行。掃描作業會使用 Google 租戶專案中的資源,因此您不需要自行設定基礎架構。

建立及使用資料品質掃描作業的步驟如下:

  1. 定義資料品質規則
  2. 設定規則執行作業
  3. 分析資料品質掃描結果
  4. 設定監控和快訊
  5. 排解資料品質失敗問題

規則定義

與資料品質掃描作業相關聯的資料品質規則,會定義資料期望值。您可以透過下列方式建立資料品質規則:

預先定義的規則

Dataplex Universal Catalog 支援下列預先定義的規則類別:

資料列層級

如果是資料列層級的類別規則,系統會針對每個資料列套用期望值。每個資料列都會獨立通過或未通過條件。例如 column_A_value < 1

如要進行列層級檢查,必須指定通過門檻。如果通過規則的資料列百分比低於門檻值,規則就會失敗。

匯總

如果是匯總規則,系統會針對整個資料匯總的單一值套用預期值。例如 Avg(someCol) >= 10。如要通過檢查,檢查結果必須為布林值 true。匯總規則不會提供每個資料列的獨立通過或失敗計數。

這兩類規則都可以設定下列參數:

  • 規則套用的資料欄
  • 維度

下表列出支援的資料列層級和匯總規則類型:

規則類型
(主控台中的名稱) Google Cloud
資料列層級或匯總規則 說明 支援的資料欄類型 規則專屬參數
RangeExpectation
(範圍檢查)
資料列層級 檢查值是否介於最小值和最大值之間。 所有數值、日期和時間戳記類型的資料欄。 必要:
  • 通過門檻百分比
  • minmax 值:至少指定一個值。
選用:
  • 啟用 strict min:啟用後,規則檢查會使用「>」而非「>=」。
  • 啟用 strict max:啟用後,規則檢查會使用「<」而非「<=」。
  • 啟用 ignore null:啟用後,系統會在規則檢查中忽略空值。
NonNullExpectation
(空值檢查)
資料列層級 確認資料欄值不是 NULL。 所有支援的欄類型。 必要:
  • 通過門檻百分比。
SetExpectation
(設定勾選)
資料列層級 檢查資料欄中的值是否為一組指定值中的其中一個。 所有支援的資料欄類型,但 RecordStruct 除外。 必要:
  • 要檢查的一組字串值。
  • 通過門檻百分比。
選用:
  • 啟用 ignore null:啟用後,系統會在規則檢查中忽略空值。
RegexExpectation
(規則運算式檢查)
資料列層級 根據指定的規則運算式檢查值。 字串 必要:
  • 用於檢查的規則運算式模式。
  • 通過門檻百分比。
  • 注意:GoogleSQL 使用 re2 程式庫,因此支援規則運算式。如要瞭解規則運算式語法,請參閱相關說明文件。
選用:
  • 啟用 ignore null:啟用後,系統會在規則檢查中忽略空值。
Uniqueness
(唯一性檢查)
匯總 檢查資料欄中的所有值是否都不重複。 所有支援的資料欄類型,但 RecordStruct 除外。 必要:
  • 支援參數中的資料欄和維度。
選用:
  • 啟用 ignore null:啟用後,系統會在規則檢查中忽略空值。
StatisticRangeExpectation
(統計資料檢查)
匯總 檢查指定的統計量是否符合預期範圍。 所有支援的數字資料欄類型。 必要:
  • meanminmax 值:至少指定一個值。
選用:
  • 啟用 strict min:啟用後,規則檢查會使用「>」而非「>=」。
  • 啟用 strict max:啟用後,規則檢查會使用「<」而非「<=」。

支援的自訂 SQL 規則類型

SQL 規則可彈性運用自訂邏輯擴充驗證功能。這些規則可分為以下類型。

規則類型 資料列層級或匯總規則 說明 支援的資料欄類型 規則專屬參數 範例
資料列條件 資料列層級

WHERE 子句中定義 SQL 運算式,為每個資料列指定預期結果。SQL 運算式應針對每個資料列評估 true (通過) 或 false (失敗)。Dataplex Universal Catalog 會計算通過這項預期的資料列百分比,並將這個值與通過門檻百分比進行比較,判斷規則是否成功。

運算式可包含對其他資料表的參照,例如建立參照完整性檢查。

所有資料欄 必要條件:
  • 要使用的 SQL 條件
  • 通過門檻百分比
  • 維度
選用:
  • 要與這項規則建立關聯的欄。
grossWeight <= netWeight
資料表條件
(匯總 SQL 運算式)
匯總

這些規則會在每個資料表執行一次。提供評估布林值的 SQL 運算式,true 代表通過檢查,false 則代表檢查失敗。

SQL 運算式可使用運算式子查詢參照其他資料表。

所有資料欄 必要條件:
  • 要使用的 SQL 條件
  • 維度
選用:
  • 要與這項規則建立關聯的資料欄

簡單的匯總範例:
avg(price) > 100

使用運算式子查詢比較不同資料表中的值:
(SELECT COUNT(*) FROM `example_project.example_dataset.different-table`) < COUNT(*)

SQL 斷言 匯總

斷言規則會使用資料品質查詢,找出不符合查詢中一或多項條件的資料列。請提供要評估的 SQL 陳述式,以便傳回符合無效狀態的資料列。如果查詢傳回任何資料列,規則就會失敗。

省略 SQL 陳述式結尾的分號。

SQL 陳述式可使用運算式子查詢,參照其他資料表。

所有資料欄 必要條件:
  • 檢查無效狀態的 SQL 陳述式
  • 維度
選用:
  • 要與這項規則建立關聯的欄。

簡單的匯總範例,確保 discount_pct 不大於 100:
SELECT * FROM example_project.example_dataset.table WHERE discount_pct > 100

使用運算式子查詢比較不同資料表中的值:
SELECT * FROM `example_project.example_dataset.different-table` WHERE gross_weight > (SELECT avg(gross_weight) FROM `example_project.example_dataset.different-table`)

如需範例規則,請參閱自動資料品質範例規則

如要瞭解支援的 SQL 函式,請參閱 GoogleSQL 參考資料

維度

您可以透過維度匯總多項資料品質規則的結果,以便監控及發出快訊。您必須將每個資料品質規則與維度建立關聯。Dataplex Universal Catalog 提供下列維度:

即時性
「更新間隔」是指資料上次更新的時間。這項資訊有助於判斷資料是否夠新,可供參考。
磁碟區
「量」會評估是否包含所有預期資料。
完整度
完整性:評估資料是否包含預期用途所需的所有資訊。
有效性
有效性:評估資料是否符合預先定義的格式、可接受範圍或其他標準。舉例來說,如果有效日期的格式必須為 YYYY/mm/dd,則 08-12-2019 是無效資料。再舉一例,如果商品的有效特價介於 $10 美元和 $20 美元之間,則 $100 美元的特價就是無效資料。
一致性
一致性是指多個例項 (例如資料表和資料欄) 的資料值相同。舉例來說,如果從銷售資料庫或使用資料庫讀取產品收益時,出現不同的值,就會發生資料不一致的情況。
準確率
準確度反映資料的正確性。請注意,有效資料不一定準確。舉例來說,棕色是有效的髮色,但如果使用者沒有棕色頭髮,這就是不正確的資料。
唯一性
獨特性:衡量資料是否不重複且獨一無二。

規則中的輸入內容

所有值參數都會以字串值的形式傳遞至 API。 Dataplex Universal Catalog 的輸入內容必須符合BigQuery 指定格式

二進位型別的參數可以採用 Base64 編碼字串傳遞。

類型 支援的格式 範例
二進位檔 Base64 編碼值 YXBwbGU=
時間戳記 YYYY-[M]M-[D]D[( |T)[H]H:[M]M:[S]S[.F]] [time_zone]
或 YYYY-[M]M-[D]D[( |T)[H]H:[M]M:[S]S[.F]][time_zone_offset]
2014-09-27 12:30:00.45-08
日期 YYYY-M[M]-D[D] 2014-09-27
時間 [H]H:[M]M:[S]S[.DDDDDD] 12:30:00.45
DateTime YYYY-[M]M-[D]D [[H]H:[M]M:[S]S[.DDDDDD]] 2014-09-27 12:30:00.45

資料參考參數

建立自訂 SQL 規則時,您可以使用規則中的資料參照參數 ${data()} 參照資料來源資料表和所有前提條件篩選器,而不必明確提及來源資料表及其篩選器。Dataplex Universal Catalog 會將這個參數解讀為來源資料表及其篩選器的參照。前置條件篩選器的範例包括資料列篩選器、取樣百分比和增量篩選器。

舉例來說,假設您有名為 my_project_id.dim_dataset.dim_currency 的資料來源表格。您想執行增量資料品質掃描,只掃描每日新資料。資料表已套用資料列篩選器,篩選出今天的項目 transaction_timestamp >= current_date()

如要尋找今天有 discount_pct 的資料列,自訂 SQL 規則如下:

discount_pct IN (SELECT discount_pct FROM my_project_id.dim_dataset.dim_currency WHERE transaction_timestamp >= current_date())

如果使用資料參照參數,可以簡化規則。將提及資料表及其前提條件篩選器的部分,替換為 ${data()} 參數:

discount_pct IN (SELECT discount_pct FROM ${data()})

Dataplex Universal Catalog 會將 ${data()} 參數解讀為參照含有今天項目的資料來源表格,my_project_id.dim_dataset.dim_currency WHERE transaction_timestamp >= current_date()。在本範例中,資料參照參數只會參照增量資料。

${data()} 參數會區分大小寫。

在子查詢中使用別名參照來源資料表中的資料欄時,請使用資料參照參數參照來源資料表,或省略資料表參照。請勿在 WHERE 子句中直接參照來源資料表,藉此參照來源資料表中的資料欄。

建議做法:

  • 使用資料參照參數參照來源資料表:

    discount_pct IN (
    SELECT discount_pct FROM
    `my_project_id.dim_dataset.dim_currency` AS temp-table
    WHERE
    temp-table.transaction_timestamp = ${data()}.timestamp
    )
    
  • 省略表格參照:

    discount_pct IN (
    SELECT discount_pct FROM
    `my_project_id.dim_dataset.dim_currency` AS temp-table
    WHERE
    temp-table.transaction_timestamp = timestamp
    )
    

不建議使用:

  • 請勿使用直接表格參照來參照來源表格中的資料欄:

    discount_pct IN (
    SELECT discount_pct FROM
    `my_project_id.dim_dataset.dim_currency` AS temp-table
    WHERE
    temp-table.transaction_timestamp = `my_project_id.dim_dataset.dim_currency`.timestamp
    )
    

規則執行

您可以排定資料品質掃描作業的執行間隔,也可以視需要執行掃描。

執行資料品質掃描作業時,Dataplex Universal Catalog 會建立工作。在指定資料品質掃描時,您可以將工作範圍設為下列任一項目:

完整表格
每項工作都會驗證整個資料表。
增量
每項工作都會驗證遞增資料。如要判斷增量,請在表格中提供 Date / Timestamp 資料欄做為標記。通常這是用來將資料表分區的資料欄。

篩選資料

您可以使用列篩選器,篩選要掃描資料品質的資料。建立列篩選器後,您就能著重查看特定時間範圍或特定區隔 (例如特定區域) 的資料。使用篩選器可縮短執行時間並降低費用。舉例來說,您可以篩除特定日期之前的時間戳記資料。

範例資料

您可以指定要從資料中取樣的記錄百分比,以執行資料品質掃描。對較小的資料樣本建立資料品質掃描作業,可縮短執行時間,並降低相對於查詢整個資料集的成本。

資料品質掃描結果

您可以在 Dataplex Universal Catalog 和 BigQuery 中查看資料品質掃描結果。您也可以使用下列方法查看及分析掃描結果:

  • 將結果匯出至 BigQuery

    您可以將掃描結果匯出至 BigQuery 資料表,以供進一步分析。如要自訂報表,您可以將 BigQuery 資料表資料連結至 Looker 資訊主頁。您可以在多項掃描作業中使用相同的結果資料表,藉此建立匯總報表。

  • 將結果發布為 Dataplex Universal Catalog 中繼資料

    您可以將資料品質掃描結果發布為 Dataplex Universal Catalog 中繼資料。最新的結果會儲存至代表來源資料表的 Dataplex Universal Catalog 項目,位於 data-quality-scorecard 系統切面類型下方。您可以在 Google Cloud 控制台的來源資料表 BigQuery 和 Dataplex Universal Catalog 頁面,查看「資料品質」分頁中的結果。您也可以使用 API 擷取結果。

    如要進一步瞭解 Dataplex Universal Catalog 中繼資料,請參閱「關於 Dataplex Universal Catalog 中的中繼資料管理」。

  • 查看資料品質分數

    每次掃描結果都會提供資料品質分數,指出通過規則的百分比。系統會回報整體工作層級、資料欄層級 (如果規則是針對資料欄評估),以及維度層級的分數。您可以使用資料品質分數,將資料表或資料欄的資料品質標準化、追蹤趨勢,以及找出不符合品質規定的資料。

詳情請參閱「查看資料品質掃描結果」。

監控與快訊

您可以透過下列方法監控資料品質掃描並接收相關快訊:

  • 在 Cloud Logging 中設定快訊

    您可以使用 data_scan 和 Logs Explorer 中的 data_quality_scan_rule_result 記錄,監控資料品質工作。

    對於每個資料品質作業,data_scan 記錄 (data_scan_type 欄位設為 DATA_QUALITY) 包含下列資訊:

    • 用於資料掃描的資料來源。
    • 工作執行詳細資料,例如建立時間、開始時間、結束時間和工作狀態。
    • 資料品質工作結果:通過或失敗。
    • 維度層級通過或失敗。

    每個成功的工作都包含 data_quality_scan_rule_result 記錄,其中詳細列出該工作中的每項規則:

    • 設定資訊,例如規則名稱、規則類型、評估類型和維度。
    • 結果資訊,例如通過或失敗、總列數、通過列數、空值列數和評估列數。

    您可以透過 API 和Google Cloud 控制台查看記錄中的資訊。您可以根據這些資訊設定快訊。詳情請參閱在 Logging 中設定快訊

  • 傳送電子郵件通知報表

    您可以傳送電子郵件通知報表,提醒使用者資料品質工作的狀態和結果。通知報表適用於下列情境:

    • 資料品質分數低於指定目標分數
    • 工作失敗
    • 該商家已提供我需要的服務

    您可以在建立資料品質掃描作業時設定通知報告。

排解資料品質失敗問題

如果規則失敗,Dataplex Universal Catalog 會產生查詢,以取得失敗的記錄。執行這項查詢,即可查看不符合規則的記錄。詳情請參閱「排解資料品質失敗問題」。

限制

  • gcloud CLI 不支援建議規則。
  • 維度只能從預先定義的七個維度中選擇。
  • 每次資料品質掃描最多只能有 1,000 條規則。
  • API 僅支援在資料欄層級回報的資料品質分數。

定價

  • Dataplex Universal Catalog 會使用進階處理作業 SKU,針對自動資料品質功能收費。詳情請參閱「Dataplex Universal Catalog 定價」。

  • 自動資料品質的 Dataplex Universal Catalog 進階處理作業費用,是以秒為單位計算,且至少會產生 1 分鐘的基本費用。

  • 資料品質掃描失敗不會產生費用。

  • 費用取決於資料列數、資料欄數、掃描的資料量、資料品質規則設定、資料表的分區和叢集設定,以及掃描頻率。

  • 您可以透過下列幾種方式降低自動資料品質掃描的費用:

  • 如要在 Cloud 帳單報表中,將資料品質費用與 Dataplex Universal Catalog 進階處理 SKU 的其他費用分開,請使用標籤 goog-dataplex-workload-type,並將值設為 DATA_QUALITY

  • 如要篩選匯總費用,請使用下列標籤:

    • goog-dataplex-datascan-data-source-dataplex-entity
    • goog-dataplex-datascan-data-source-dataplex-lake
    • goog-dataplex-datascan-data-source-dataplex-zone
    • goog-dataplex-datascan-data-source-project
    • goog-dataplex-datascan-data-source-region
    • goog-dataplex-datascan-id
    • goog-dataplex-datascan-job-id

後續步驟