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