自動評估資料品質總覽

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

您可以使用 Dataplex Universal Catalog 資料分析的規則建議,或在 Google Cloud 控制台中建立自訂規則。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
(空值檢查)
資料列層級 驗證資料欄值是否為空值。 所有支援的欄型。 必要說明:
  • 通過門檻的百分比。
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 則代表檢查失敗。truefalse

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 提供下列維度:

即時性
更新間隔會評估資料上次更新的時間。有了這項資訊,您就能判斷資料是否足夠新穎,值得使用。
磁碟區
Volume 會評估是否有所有預期的資料。
完整度
完整度會評估資料是否包含所有必要資訊,以符合其預期用途。
有效性
Validity 會評估資料是否符合格式、可接受的範圍或其他條件的預先定義標準。舉例來說,如果有效日期格式為 YYYY/mm/dd,則 08-12-2019 就是無效資料。舉另一個例子來說,如果商品的有效銷售價格介於 $10 美元和 $20 美元之間,則 $100 美元的銷售價格就是無效資料。
一致性
一致性是指在多個例項 (例如資料表和欄) 中,資料的值相同。資料不一致的情況,例如從銷售資料庫或使用量資料庫讀取產品收益時,產品收益有所差異。
準確率
準確度反映資料的正確性。請注意,有效的資料不一定準確。舉例來說,有效的髮色可能是棕色,但如果某人沒有棕色頭髮,那就是不準確的資料。
唯一性
Uniqueness 會評估資料是否不重複。

規則中的打字輸入

所有值參數都會以字串值的形式傳遞至 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()

自訂 SQL 規則用於尋找今天有 discount_pct 的資料列,如下所示:

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
    )
    

執行規則

您可以排定資料品質掃描作業,以特定間隔執行,也可以視需要執行掃描作業。如要管理資料品質掃描作業,您可以使用 API 或Google Cloud 控制台。

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

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

篩選資料

Dataplex Universal Catalog 可使用資料列篩選器篩選要掃描的資料,以便評估資料品質。建立資料列篩選器後,您就能著重查看特定時間範圍或特定區隔 (例如特定區域) 內的資料。使用篩選器可縮短執行時間和降低成本,例如篩除時間戳記在特定日期之前的資料。

範例資料

Dataplex Universal Catalog 可讓您指定資料記錄的百分比,用於執行資料品質掃描作業的取樣。在較小的資料樣本上建立資料品質掃描作業,可以縮短執行時間,並降低查詢整個資料集的成本。

資料品質掃描結果

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

  • 將結果匯出至 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 中設定警告

    您可以使用 Logs Explorer 中的 data_scandata_quality_scan_rule_result 記錄檔監控資料品質工作。

    對於每項資料品質工作,data_scan_type 欄位設為 DATA_QUALITYdata_scan 記錄會包含下列資訊:

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

    每個成功的工作都包含 data_quality_scan_rule_result 記錄,其中包含該工作中每項規則的詳細資訊,如下所示:

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

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

  • 傳送電子郵件通知報表

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

    • 資料品質分數低於指定的目標分數
    • 工作失敗
    • 工作已完成

    建立資料品質掃描作業時,您會設定通知報表。

排解資料品質失敗問題

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

限制

  • Google Cloud 主控台不支援將資料品質掃描結果發布為 Dataplex Universal Catalog 中繼資料。
  • gcloud CLI 不支援規則建議。
  • 維度選擇會固定為預先定義的七個維度之一。
  • 每個資料品質掃描作業的規則數量上限為 1000。
  • 只有 API 支援以資料欄層級回報的資料品質分數。

定價

  • Dataplex Universal Catalog 會使用進階處理 SKU 收取自動資料品質費用。詳情請參閱「Dataplex Universal Catalog 定價」。

  • 自動資料品質的 Dataplex Universal Catalog 進階處理作業以秒為單位計費,且最短為 1 分鐘。

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

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

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

  • 如要將 Dataplex Universal Catalog 高級處理 SKU 中的資料品質費用與其他費用區隔開來,請在 Cloud Billing 報表中使用標籤 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

後續步驟