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 租戶專案中的資源,因此您不需要自行設定基礎架構。
建立及使用資料品質掃描作業的步驟如下:
- 定義資料品質規則
- 設定規則執行作業
- 分析資料品質掃描結果
- 設定監控和快訊
- 排解資料品質失敗問題
規則定義
與資料品質掃描作業相關聯的資料品質規則,會定義資料期望值。您可以透過下列方式建立資料品質規則:
- 根據 Dataplex Universal Catalog 資料剖析的建議採取行動
- 使用預先定義的規則
- 建立自訂 SQL 規則
預先定義的規則
Dataplex Universal Catalog 支援下列預先定義的規則類別:
- 資料列層級
如果是資料列層級的類別規則,系統會針對每個資料列套用期望值。每個資料列都會獨立通過或未通過條件。例如
column_A_value < 1
。如要進行列層級檢查,必須指定通過門檻。如果通過規則的資料列百分比低於門檻值,規則就會失敗。
- 匯總
如果是匯總規則,系統會針對整個資料匯總的單一值套用預期值。例如
Avg(someCol) >= 10
。如要通過檢查,檢查結果必須為布林值true
。匯總規則不會提供每個資料列的獨立通過或失敗計數。
這兩類規則都可以設定下列參數:
- 規則套用的資料欄
- 維度
下表列出支援的資料列層級和匯總規則類型:
規則類型 (主控台中的名稱) Google Cloud |
資料列層級或匯總規則 | 說明 | 支援的資料欄類型 | 規則專屬參數 |
---|---|---|---|---|
RangeExpectation (範圍檢查) |
資料列層級 | 檢查值是否介於最小值和最大值之間。 | 所有數值、日期和時間戳記類型的資料欄。 | 必要:
|
NonNullExpectation (空值檢查) |
資料列層級 | 確認資料欄值不是 NULL。 | 所有支援的欄類型。 | 必要:
|
SetExpectation (設定勾選) |
資料列層級 | 檢查資料欄中的值是否為一組指定值中的其中一個。 | 所有支援的資料欄類型,但 Record 和 Struct 除外。 |
必要:
|
RegexExpectation (規則運算式檢查) |
資料列層級 | 根據指定的規則運算式檢查值。 | 字串 | 必要:
|
Uniqueness (唯一性檢查) |
匯總 | 檢查資料欄中的所有值是否都不重複。 | 所有支援的資料欄類型,但 Record 和 Struct 除外。 |
必要:
|
StatisticRangeExpectation (統計資料檢查) |
匯總 | 檢查指定的統計量是否符合預期範圍。 | 所有支援的數字資料欄類型。 | 必要:
|
支援的自訂 SQL 規則類型
SQL 規則可彈性運用自訂邏輯擴充驗證功能。這些規則可分為以下類型。
規則類型 | 資料列層級或匯總規則 | 說明 | 支援的資料欄類型 | 規則專屬參數 | 範例 |
---|---|---|---|---|---|
資料列條件 | 資料列層級 | 在 運算式可包含對其他資料表的參照,例如建立參照完整性檢查。 |
所有資料欄 | 必要條件:
|
grossWeight <= netWeight |
資料表條件 (匯總 SQL 運算式) |
匯總 | 這些規則會在每個資料表執行一次。提供評估布林值的 SQL 運算式, SQL 運算式可使用運算式子查詢參照其他資料表。 |
所有資料欄 | 必要條件:
|
簡單的匯總範例: 使用運算式子查詢比較不同資料表中的值: |
SQL 斷言 | 匯總 | 斷言規則會使用資料品質查詢,找出不符合查詢中一或多項條件的資料列。請提供要評估的 SQL 陳述式,以便傳回符合無效狀態的資料列。如果查詢傳回任何資料列,規則就會失敗。 省略 SQL 陳述式結尾的分號。 SQL 陳述式可使用運算式子查詢,參照其他資料表。 |
所有資料欄 | 必要條件:
|
簡單的匯總範例,確保 使用運算式子查詢比較不同資料表中的值: |
如需範例規則,請參閱自動資料品質範例規則。
如要瞭解支援的 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