本頁面說明如何建立 Dataplex Universal Catalog 資料品質掃描作業。
如要瞭解資料品質掃描作業,請參閱「關於自動資料品質」。
事前準備
啟用 Dataplex API。
選用:如果您希望 Dataplex Universal Catalog 根據資料剖析掃描結果產生資料品質規則建議,請建立並執行資料剖析掃描作業。
必要的角色
如要在 BigQuery 資料表上執行資料品質掃描作業,您必須具備讀取 BigQuery 資料表的權限,以及在用於掃描資料表的專案中建立 BigQuery 工作所需的權限。
如果 BigQuery 資料表和資料品質掃描作業位於不同的專案中,您必須為包含資料品質掃描作業的專案,授予 Dataplex Universal Catalog 服務帳戶對應 BigQuery 資料表的讀取權限。
如果資料品質規則參照其他資料表,掃描專案的服務帳戶必須對相同資料表擁有讀取權限。
如要取得匯出掃描結果至 BigQuery 資料表所需的權限,請要求管理員在結果資料集和資料表中,將「BigQuery 資料編輯者」(
roles/bigquery.dataEditor
) 身分與存取權管理角色授予 Dataplex 通用目錄服務帳戶。這會授予下列權限:bigquery.datasets.get
bigquery.tables.create
bigquery.tables.get
bigquery.tables.getData
bigquery.tables.update
bigquery.tables.updateData
如果 BigQuery 資料是使用 Dataplex Universal Catalog 資料湖進行整理,請將 Dataplex 中繼資料讀取者 (
roles/dataplex.metadataReader
) 和 Dataplex 檢視者 (roles/dataplex.viewer
) IAM 角色授予 Dataplex Universal Catalog 服務帳戶。或者,您需要下列所有權限:dataplex.lakes.list
dataplex.lakes.get
dataplex.zones.list
dataplex.zones.get
dataplex.entities.list
dataplex.entities.get
dataplex.operations.get
如果您要掃描 Cloud Storage 中的 BigQuery 外部資料表,請將 Cloud Storage
roles/storage.objectViewer
角色授予 Dataplex Universal Catalog 服務帳戶。或者,您也可以將下列權限指派給 Dataplex Universal Catalog 服務帳戶:storage.buckets.get
storage.objects.get
如果您想將資料品質掃描結果發布為 Dataplex Universal Catalog 中繼資料,必須取得該資料表的 BigQuery 資料編輯器 (
roles/bigquery.dataEditor
) IAM 角色,以及與資料表位於相同位置的@bigquery
項目群組的dataplex.entryGroups.useDataQualityScorecardAspect
權限。或者,您必須獲得@bigquery
項目群組的 Dataplex Catalog 編輯者 (roles/dataplex.catalogEditor
) 角色,該項目群組位於與資料表相同的位置。或者,您需要下列所有權限:
bigquery.tables.get
bigquery.tables.update
bigquery.tables.updateData
bigquery.tables.delete
dataplex.entryGroups.useDataQualityScorecardAspect
或者,您需要下列所有權限:
dataplex.entries.update
dataplex.entryGroups.useDataQualityScorecardAspect
如果您需要存取受 BigQuery 資料欄層級存取權政策保護的資料欄,請為這些資料欄指派 Dataplex Universal Catalog 服務帳戶權限。建立或更新資料掃描的使用者也需要資料欄的權限。
如果資料表已啟用 BigQuery 資料列層級存取權政策,您只能掃描 Dataplex Universal Catalog 服務帳戶可見的資料列。請注意,個別使用者的存取權限不會針對列層級政策進行評估。
必要的資料掃描角色
如要使用自動資料品質功能,您必須具備執行資料掃描的權限,或是具備預先定義的執行資料掃描作業權限的角色。
下表列出 DataScan
權限:
權限名稱 | 授予以下權限: |
---|---|
dataplex.datascans.create |
建立 DataScan |
dataplex.datascans.delete |
刪除 DataScan |
dataplex.datascans.get |
查看 ID 或排程這類作業中繼資料,但不包括結果和規則 |
dataplex.datascans.getData |
查看 DataScan 詳細資料,包括規則和結果 |
dataplex.datascans.list |
列出 DataScan |
dataplex.datascans.run |
執行 DataScan |
dataplex.datascans.update |
更新 DataScan 的說明 |
dataplex.datascans.getIamPolicy |
查看掃描作業目前的 IAM 權限 |
dataplex.datascans.setIamPolicy |
設定掃描作業的 IAM 權限 |
授予使用者下列一或多個角色:
- 具備
DataScan
資源的完整存取權:Dataplex DataScan 管理員 (roles/dataplex.dataScanAdmin
) - 具備
DataScan
資源的寫入權限:Dataplex DataScan 編輯器 (roles/dataplex.dataScanEditor
) - 具備
DataScan
資源的讀取權限,但不包括規則和結果:Dataplex DataScan 檢視器 (roles/dataplex.dataScanViewer
) - 對
DataScan
資源 (包括規則和結果) 的讀取權:Dataplex DataScan 資料檢視器 (roles/dataplex.dataScanDataViewer
)
定義資料品質規則
您可以使用內建規則或自訂 SQL 檢查來定義資料品質規則。如果您使用 Google Cloud CLI,可以在 JSON 或 YAML 檔案中定義這些規則。
下列各節的範例說明如何定義各種資料品質規則。規則會驗證含有客戶交易資料的範例資料表。假設資料表具有下列結構定義:
資料欄名稱 | 欄類型 | 資料欄說明 |
---|---|---|
transaction_timestamp | 時間戳記 | 交易的時間戳記。資料表會依此欄進行分區。 |
customer_id | 字串 | 客戶 ID 格式為 8 個英文字母後面接 16 個數字。 |
transaction_id | 字串 | 交易 ID 在資料表中不得重複。 |
currency_id | 字串 | 支援的其中一種貨幣。幣別類型必須與維度表 dim_currency 中可用的貨幣相符。 |
金額 | 浮點值 | 交易金額。 |
discount_pct | 浮點值 | 折扣百分比。這個值必須介於 0 至 100 之間。 |
使用內建規則類型定義資料品質規則
下列範例規則是以內建規則類型為基礎。您可以使用控制台或 API,根據內建規則類型建立規則。 Google Cloud Dataplex Universal Catalog 可能會推薦部分這些規則。
欄名稱 | 規則類型 | 建議的維度 | 規則參數 |
---|---|---|---|
transaction_id |
唯一性檢查 | 唯一性 | 門檻:Not Applicable |
amount |
空值檢查 | 完整性 | 門檻:100% |
customer_id |
規則運算式 (Regex) 檢查 | 有效性 | 規則運算式:^[0-9]{8}[a-zA-Z]{16}$ 門檻: 100%
|
currency_id |
值設定檢查 | 有效性 | 設定:USD,JPY,INR,GBP,CAN 門檻: 100%
|
使用自訂 SQL 規則定義資料品質規則
如要建立自訂 SQL 規則,請使用下列架構:
建立每次只評估一列的規則時,請建立運算式,在 Dataplex Universal Catalog 評估查詢
SELECT COUNTIF(CUSTOM_SQL_EXPRESSION) FROM TABLE
時產生成功列數。Dataplex Universal Catalog 會根據閾值檢查成功的資料列數量。建立規則時,如果要跨資料列評估或使用資料表條件,請建立運算式,在 Dataplex Universal Catalog 評估查詢
SELECT IF(CUSTOM_SQL_EXPRESSION) FROM TABLE
時傳回成功或失敗結果。建立評估資料集無效狀態的規則時,請提供可傳回無效資料列的陳述式。如果傳回任何資料列,即代表規則失敗。請從 SQL 陳述式中省略結尾的分號。
您可以在規則中使用資料參照參數
${data()}
,藉此參照資料來源表格及其所有預先條件篩選器,而不需要明確提及來源表格及其篩選器。預設條件篩選器的範例包括資料列篩選器、取樣百分比和遞增篩選器。${data()}
參數會區分大小寫。
以下規則範例是根據自訂 SQL 規則建立。
規則類型 | 規則說明 | SQL 運算式 |
---|---|---|
資料列條件 | 檢查 discount_pct 的值是否介於 0 到 100 之間。 |
0 <discount_pct AND discount_pct < 100
|
資料列條件 | 參考資料檢查,驗證 currency_id 是否為支援的貨幣之一。 |
currency_id in (select id from my_project_id.dim_dataset.dim_currency)
|
表格條件 | 匯總 SQL 運算式,用於檢查平均 discount_pct 是否介於 30% 和 50% 之間。 |
30<avg(discount) AND avg(discount) <50
|
資料列條件 | 檢查日期是否不是未來的日期。 | TIMESTAMP(transaction_timestamp) < CURRENT_TIMESTAMP()
|
表格條件 |
BigQuery 使用者定義函式 (UDF),用於檢查平均交易金額是否低於各國家/地區的預先定義值。請執行下列指令,建立 (Javascript) UDF:CREATE OR REPLACE FUNCTION myProject.myDataset.average_by_country ( country STRING, average FLOAT64) RETURNS BOOL LANGUAGE js AS R""" if (country = "CAN" && average < 5000){ return 1 } else if (country = "IND" && average < 1000){ return 1 } else { return 0 } """; |
檢查 country=CAN 的平均交易金額的規則範例。myProject.myDataset.average_by_country( "CAN", (SELECT avg(amount) FROM myProject.myDataset.transactions_table WHERE currency_id = 'CAN' )) |
表格條件 | BigQuery ML 預測子句,用於找出 discount_pct 中的異常值。它會檢查是否應根據 customer 、currency 和 transaction 套用折扣。該規則會檢查預測值是否至少在 99% 的情況下與實際值相符。假設:在使用規則之前,已建立機器學習模型。使用下列指令建立機器學習模型:CREATE MODEL model-project-id.dataset-id.model-name OPTIONS(model_type='logistic_reg') AS SELECT IF(discount_pct IS NULL, 0, 1) AS label, IFNULL(customer_id, "") AS customer, IFNULL(currency_id, "") AS currency, IFNULL(amount, 0.0) AS amount FROM `data-project-id.dataset-id.table-names` WHERE transaction_timestamp < '2022-01-01'; |
下列規則會檢查預測準確率是否大於 99%。SELECT accuracy > 0.99 FROM ML.EVALUATE (MODEL model-project-id.dataset-id.model-name, ( SELECT customer_id, currency_id, amount, discount_pct FROM data-project-id.dataset-id.table-names WHERE transaction_timestamp > '2022-01-01'; ) ) |
資料列條件 | BigQuery ML 預測函式,用於找出 discount_pct 中的異常值。該函式會檢查是否應根據 customer 、currency 和 transaction 套用折扣。這項規則會找出預測結果不相符的所有事件。假設:在使用規則之前,您已建立機器學習模型。使用下列指令建立 ML 模型:CREATE MODEL model-project-id.dataset-id.model-name OPTIONS(model_type='logistic_reg') AS SELECT IF(discount_pct IS NULL, 0, 1) AS label, IFNULL(customer_id, "") AS customer, IFNULL(currency_id, "") AS currency, IFNULL(amount, 0.0) AS amount FROM `data-project-id.dataset-id.table-names` WHERE transaction_timestamp < '2022-01-01'; |
下列規則會檢查折扣預測值是否與每個資料列的實際值相符。IF(discount_pct > 0, 1, 0) =(SELECT predicted_label FROM ML.PREDICT( MODEL model-project-id.dataset-id.model-name, ( SELECT customer_id, currency_id, amount, discount_pct FROM data-project-id.dataset-id.table-names AS t WHERE t.transaction_timestamp = transaction_timestamp LIMIT 1 ) ) ) |
SQL 斷言 | 檢查是否有任何資料列的折扣百分比小於或等於 30,藉此驗證 discount_pct 是否大於今天的 30%。 |
SELECT * FROM my_project_id.dim_dataset.dim_currency WHERE discount_pct <= 30 AND transaction_timestamp >= current_date() |
SQL 斷言 (含資料參照參數) | 檢查當天所有支援貨幣的 日期篩選器 資料參照參數 |
SELECT * FROM ${data()} WHERE discount_pct > 30 |
使用 gcloud CLI 定義資料品質規則
以下範例 YAML 檔案使用了部分與使用內建類型的規則範例和自訂 SQL 規則範例相同的規則。您可以將這個 YAML 檔案做為 gcloud CLI 指令的輸入內容。
rules:
- uniquenessExpectation: {}
column: transaction_id
dimension: UNIQUENESS
- nonNullExpectation: {}
column: amount
dimension: COMPLETENESS
threshold: 1
- regexExpectation:
regex: '^[0-9]{8}[a-zA-Z]{16}$'
column : customer_id
ignoreNull : true
dimension : VALIDITY
threshold : 1
- setExpectation :
values :
- 'USD'
- 'JPY'
- 'INR'
- 'GBP'
- 'CAN'
column : currency_id
ignoreNull : true
dimension : VALIDITY
threshold : 1
- rangeExpectation:
minValue : '0'
maxValue : '100'
column : discount_pct
ignoreNull : true
dimension : VALIDITY
threshold : 1
- rowConditionExpectation:
sqlExpression : 0 < `discount_pct` AND `discount_pct` < 100
column: discount_pct
dimension: VALIDITY
threshold: 1
- rowConditionExpectation:
sqlExpression : currency_id in (select id from `my_project_id.dim_dataset.dim_currency`)
column: currency_id
dimension: VALIDITY
threshold: 1
- tableConditionExpectation:
sqlExpression : 30 < avg(discount_pct) AND avg(discount_pct) < 50
dimension: VALIDITY
- rowConditionExpectation:
sqlExpression : TIMESTAMP(transaction_timestamp) < CURRENT_TIMESTAMP()
column: transaction_timestamp
dimension: VALIDITY
threshold: 1
- sqlAssertion:
sqlStatement : SELECT * FROM `my_project_id.dim_dataset.dim_currency` WHERE discount_pct > 100
dimension: VALIDITY
建立資料品質掃描作業
控制台
在 Google Cloud 控制台中,前往「Data quality」(資料品質) 頁面。
按一下「建立資料品質掃描作業」。
在「Define scan」視窗中,填入下列欄位:
輸入「Display name」(顯示名稱)。
如果您未提供 ID,系統會自動產生掃描 ID。請參閱資源命名慣例。
選用:輸入說明。
在「Table」欄位中,按一下「Browse」,選擇資料表,然後點選「Select」。Dataplex Universal Catalog 僅支援標準 BigQuery 資料表。
如為多區域資料集內的資料表,請選擇要建立資料掃描作業的區域。
如要瀏覽 Dataplex Universal Catalog lake 中分門別類的資料表,請按一下「Browse within Dataplex Lakes」。
在「範圍」欄位中,選擇「增量」或「整個資料」。
- 如果您選擇「增量」:在「時間戳記欄」欄位中,從 BigQuery 資料表中選取
DATE
或TIMESTAMP
類型的資料欄,這類資料欄只會遞增,並能用來識別新的記錄。這可以是用來分割資料表的資料欄。
- 如果您選擇「增量」:在「時間戳記欄」欄位中,從 BigQuery 資料表中選取
選用步驟:新增標籤。標籤是
key:value
組合,可用來將相關物件分組,或與其他 Google Cloud 資源組合。如要篩選資料,請按一下「篩選器」。勾選「篩選資料列」核取方塊。資料列篩選器的輸入值必須是有效的 SQL 運算式,可用於 GoogleSQL 語法中的
WHERE
子句。例如:col1 >= 0
。篩選條件可以是多個欄條件的組合。例如:col1 >= 0 AND col2 < 10
。如要對資料進行取樣,請在「取樣大小」清單中選取取樣百分比。請選擇介於 0.0% 和 100.0% 之間的百分比值,最多可有 3 位小數。如果是較大的資料集,請選擇較低的取樣百分比。舉例來說,如果是 ~1 PB 的資料表,如果您輸入的值介於 0.1% 和 1.0% 之間,Dataplex Universal Catalog 會取樣 1 到 10 TB 的資料。對於增量資料掃描,Dataplex Universal Catalog 會將取樣作業套用至最新的增量資料。
如要將資料品質掃描結果發布為 Dataplex Universal Catalog 中繼資料,請選取「將結果發布至 BigQuery 和 Dataplex Catalog」核取方塊。
您可以在 BigQuery 和 Dataplex Universal Catalog 頁面的「資料品質」分頁中,查看來源資料表的最新掃描結果。如要讓使用者存取已發布的掃描結果,請參閱「分享已發布的結果」。
按一下「繼續」。
在「排程」視窗中,選擇下列任一選項:
重複:依據每日、每週、每月或自訂的時間表執行資料品質掃描工作。指定掃描作業的執行頻率和時間。如果選擇自訂,請使用 cron 格式指定時間表。
隨選:隨時執行資料品質掃描工作。
按一下「繼續」。
在「資料品質規則」視窗中,定義要為這項資料品質掃描作業設定的規則。按一下「新增規則」,然後選擇下列任一選項。
以資料概況為基礎的建議:根據現有資料剖析掃描的建議,建立規則。
選擇資料欄:選取要取得規則建議的資料欄。
掃描專案:根據現有資料剖析掃描結果提供建議。根據預設,Dataplex Universal Catalog 會從您建立資料品質掃描的專案中,選取剖析掃描。如果您是在其他專案中建立掃描作業,則必須指定要從哪個專案提取剖析掃描結果。
選擇設定檔結果:系統會根據您選取的欄和專案,顯示多個設定檔結果。
選取一或多個設定檔結果,然後按一下「確定」。這會填入可供選取的規則清單。
勾選方塊並按一下「選取」,選取要編輯的規則。選取後,系統就會將規則新增至目前的規則清單。接著,您就可以編輯規則。
內建規則類型:根據預先定義的規則建立規則。請參閱預先定義規則清單。
選擇資料欄:選取要選取規則的資料欄。
選擇規則類型:系統會根據您選取的欄,顯示多種規則類型供您選取。
選取一或多個規則類型,然後按一下「確定」。系統會填入可供選取的規則清單。
勾選方塊並按一下「選取」,選取要編輯的規則。選取後,系統就會將規則加入目前的規則清單。接著,您可以編輯規則。
SQL 資料列檢查規則:建立自訂 SQL 規則,套用至每個資料列 (自訂 SQL 資料列檢查規則)。
在「維度」中,選擇一個維度。
在「通過門檻」中,選擇必須通過檢查的記錄百分比。
在「欄名稱」中,選擇資料欄。
在「提供 SQL 運算式」欄位中,輸入評估為布林值
true
(通過) 或false
(失敗) 的 SQL 運算式。詳情請參閱「支援的自訂 SQL 規則類型」一節,以及本文「定義資料品質規則」一節中的範例。按一下「新增」。
SQL 匯總檢查規則:建立自訂 SQL 資料表條件規則。
在「維度」中,選擇一個維度。
在「欄名稱」中,選擇資料欄。
在「提供 SQL 運算式」欄位中,輸入評估為布林值
true
(通過) 或false
(失敗) 的 SQL 運算式。詳情請參閱「支援的自訂 SQL 規則類型」一節,以及本文「定義資料品質規則」一節中的範例。按一下「新增」。
SQL 斷言規則:建立自訂 SQL 斷言規則,檢查資料的無效狀態。
在「維度」中,選擇一個維度。
選用:在「欄名稱」中選擇資料欄。
在「提供 SQL 陳述式」欄位中,輸入會傳回符合無效狀態的資料列的 SQL 陳述式。如果傳回任何資料列,即代表這項規則失敗。請從 SQL 陳述式中省略結尾的分號。詳情請參閱「支援的自訂 SQL 規則類型」一節,以及本文「定義資料品質規則」一節中的範例。
按一下「新增」。
Dataplex Universal Catalog 允許您為資料品質規則自訂名稱,以便監控及發出警報。您可以為任何資料品質規則選擇指派自訂規則名稱和說明。如要這樣做,請編輯規則並指定下列詳細資料:
- 規則名稱:輸入自訂規則名稱,長度上限為 63 個半形字元。規則名稱可包含英文字母 (a-z、A-Z)、數字 (0-9) 和連字號 (-),且開頭須為英文字母,結尾須為數字或英文字母。
- 說明:輸入規則說明,長度上限為 1,024 個半形字元。
按一下「繼續」。
選用步驟:將掃描結果匯出至 BigQuery 標準資料表。在「將掃描結果匯出至 BigQuery 資料表」部分,按一下「瀏覽」,選取要儲存資料品質掃描結果的現有 BigQuery 資料集。
如果指定的資料表不存在,Dataplex Universal Catalog 會為您建立資料表。如果您使用的是現有資料表,請確認該資料表與匯出資料表結構定義相容。
選用:設定電子郵件通知報表,提醒使用者資料品質掃描作業的狀態和結果。在「通知報表」部分,按一下
「新增電子郵件 ID」,然後輸入最多五個電子郵件地址。接著,選取要傳送報表的情況:- 品質分數 (<=):當工作成功,且資料品質分數低於指定的目標分數時,系統就會傳送報表。請輸入介於 0 到 100 之間的目標品質評分。
- 工作失敗:無論資料品質結果為何,只要工作本身失敗,就會傳送報告。
- 工作完成 (成功或失敗):無論資料品質結果為何,系統都會在工作結束時傳送報告。
按一下 [建立]。
掃描作業建立完成後,您隨時可以按一下「立即執行」,執行掃描作業。
gcloud
如要建立資料品質掃描作業,請使用 gcloud dataplex datascans create data-quality
指令。
如果來源資料是按照 Dataplex Universal Catalog 湖泊分類,請加入 --data-source-entity
標記:
gcloud dataplex datascans create data-quality DATASCAN \
--location=LOCATION \
--data-quality-spec-file=DATA_QUALITY_SPEC_FILE \
--data-source-entity=DATA_SOURCE_ENTITY
如果來源資料未在 Dataplex Universal Catalog 湖泊中分類,請加入 --data-source-resource
標記:
gcloud dataplex datascans create data-quality DATASCAN \
--location=LOCATION \
--data-quality-spec-file=DATA_QUALITY_SPEC_FILE \
--data-source-resource=DATA_SOURCE_RESOURCE
替換下列變數:
DATASCAN
:資料品質掃描的名稱。LOCATION
:建立資料品質掃描作業的 Google Cloud 區域。DATA_QUALITY_SPEC_FILE
:JSON 或 YAML 檔案的路徑,其中包含資料品質掃描的規格。檔案可以是本機檔案,或前置字串為gs://
的 Cloud Storage 路徑。您可以使用這個檔案指定掃描的資料品質規則。您也可以在這個檔案中指定其他詳細資料,例如篩選器、取樣百分比,以及掃描後的動作,例如匯出至 BigQuery 或傳送電子郵件通知報表。請參閱 JSON 表示法說明文件。DATA_SOURCE_ENTITY
:Dataplex 通用目錄實體,其中包含資料品質掃描的資料。例如:projects/test-project/locations/test-location/lakes/test-lake/zones/test-zone/entities/test-entity
。DATA_SOURCE_RESOURCE
:包含資料品質掃描資料的資源名稱。例如://bigquery.googleapis.com/projects/test-project/datasets/test-dataset/tables/test-table
。
REST
使用 API Explorer 建立資料品質掃描作業。
如果您想使用資料剖析掃描結果的規則建議,為資料品質掃描建立規則,請在資料剖析掃描上呼叫 dataScans.jobs.generateDataQualityRules
方法,取得建議。
匯出資料表結構定義
如要將資料品質掃描結果匯出至現有 BigQuery 資料表,請確認資料表與下列資料表結構定義相容:
資料欄名稱 | 欄資料類型 | 子欄位名稱 (如適用) |
子欄位資料類型 | 模式 | 範例 |
---|---|---|---|---|---|
data_quality_scan | struct/record |
resource_name |
string |
nullable | //dataplex.googleapis.com/projects/test-project/locations/europe-west2/datascans/test-datascan |
project_id |
string |
nullable | dataplex-back-end-dev-project |
||
location |
string |
nullable | us-central1 |
||
data_scan_id |
string |
nullable | test-datascan |
||
data_source | struct/record |
resource_name |
string |
nullable | 實體情況://dataplex.googleapis.com/projects/dataplex-back-end-dev-project/locations/europe-west2/lakes/a0-datascan-test-lake/zones/a0-datascan-test-zone/entities/table1 表格情況: //bigquery.googleapis.com/projects/test-project/datasets/test-dataset/tables/test-table
|
dataplex_entity_project_id |
string |
nullable | dataplex-back-end-dev-project |
||
dataplex_entity_project_number |
integer |
nullable | 123456789 |
||
dataplex_lake_id |
string |
nullable | (僅當來源為實體時才有效)test-lake
|
||
dataplex_zone_id |
string |
nullable | (僅當來源為實體時才有效)test-zone |
||
dataplex_entity_id |
string |
nullable | (僅當來源為實體時才有效)test-entity |
||
table_project_id |
string |
nullable | test-project |
||
table_project_number |
integer |
nullable | 987654321 |
||
dataset_id |
string |
nullable | (僅適用於來源為資料表的情況)test-dataset |
||
table_id |
string |
nullable | (僅適用於來源為資料表的情況)test-table |
||
data_quality_job_id | string |
nullable | caeba234-cfde-4fca-9e5b-fe02a9812e38 |
||
data_quality_job_configuration | json |
trigger |
string |
nullable | ondemand /schedule |
incremental |
boolean |
nullable | true /false |
||
sampling_percent |
float |
nullable | (0-100)20.0 (代表 20%) |
||
row_filter |
string |
nullable | col1 >= 0 AND col2 < 10 |
||
job_labels | json |
nullable | {"key1":value1} |
||
job_start_time | timestamp |
nullable | 2023-01-01 00:00:00 UTC |
||
job_end_time | timestamp |
nullable | 2023-01-01 00:00:00 UTC |
||
job_rows_scanned | integer |
nullable | 7500 |
||
rule_name | string |
nullable | test-rule |
||
rule_type | string |
nullable | Range Check |
||
rule_evaluation_type | string |
nullable | Per row |
||
rule_column | string |
nullable | Rule only attached to a certain column |
||
rule_dimension | string |
nullable | UNIQUENESS |
||
job_quality_result | struct/record |
passed |
boolean |
nullable | true /false |
score |
float |
nullable | 90.8 |
||
job_dimension_result | json |
nullable | {"ACCURACY":{"passed":true,"score":100},"CONSISTENCY":{"passed":false,"score":60}}
|
||
rule_threshold_percent | float |
nullable | (0.0-100.0)Rule-threshold-pct in API * 100 |
||
rule_parameters | json |
nullable | {min: 24, max:5345} |
||
rule_pass | boolean |
nullable | True |
||
rule_rows_evaluated | integer |
nullable | 7400 |
||
rule_rows_passed | integer |
nullable | 3 |
||
rule_rows_null | integer |
nullable | 4 |
||
rule_failed_records_query | string |
nullable | "SELECT * FROM `test-project.test-dataset.test-table` WHERE (NOT((`cTime` >= '15:31:38.776361' and `cTime` <= '19:23:53.754823') IS TRUE));" |
||
rule_assertion_row_count | integer |
nullable | 10 |
為資料品質掃描工作設定 BigQueryExport 時,請遵循下列規範:
- 針對欄位
resultsTable
,請使用下列格式://bigquery.googleapis.com/projects/{project-id}/datasets/{dataset-id}/tables/{table-id}
。 - 使用 BigQuery 標準資料表。
- 如果掃描作業建立或更新時,資料表不存在,Dataplex Universal Catalog 會為您建立資料表。
- 根據預設,資料表會依
job_start_time
資料欄每日分區。 - 如果您希望資料表以其他設定進行分區,或是不想分區,請使用必要的結構定義和設定重新建立資料表,然後將先前建立的資料表做為結果資料表提供。
- 請確認結果資料表與來源資料表位於相同位置。
- 如果在專案中設定了 VPC-SC,則結果資料表必須與來源資料表位於相同的 VPC-SC 範圍內。
- 如果在掃描執行階段修改資料表,目前執行中的工作會匯出至先前的結果資料表,而資料表變更會在下一個掃描工作生效。
- 請勿修改資料表結構定義。如果需要自訂欄,請在資料表上建立檢視畫面。
- 為降低成本,請根據用途設定分區的到期日。詳情請參閱如何設定區隔到期時間。
執行資料品質掃描
控制台
在 Google Cloud 控制台中,前往「Data quality」(資料品質) 頁面。
按一下資料品質掃描作業即可執行。
按一下「立即執行」。
gcloud
如要執行資料品質掃描,請使用 gcloud dataplex datascans run
指令:
gcloud dataplex datascans run DATASCAN \ --location=LOCATION \
替換下列變數:
LOCATION
:資料品質掃描作業建立的 Google Cloud 區域。DATASCAN
:資料品質掃描的名稱。
REST
使用 API Explorer 執行資料品質掃描。
查看資料品質掃描結果
控制台
在 Google Cloud 控制台中,前往「Data quality」(資料品質) 頁面。
如要查看掃描作業的詳細結果,請按一下掃描作業名稱。
「總覽」部分會顯示最近七次工作的相關資訊,包括掃描執行時間、每項工作掃描的記錄數量、所有資料品質檢查是否通過、是否有失敗情形、失敗的資料品質檢查數量,以及失敗的維度。
「資料品質掃描設定」部分會顯示掃描作業的詳細資料。
如要查看資料品質分數,瞭解通過規則的百分比,請按一下「工作歷史記錄」分頁。然後按一下工作 ID。
gcloud
如要查看資料品質掃描工作的結果,請使用 gcloud dataplex datascans jobs describe
指令:
gcloud dataplex datascans jobs describe JOB \ --location=LOCATION \ --datascan=DATASCAN \ --view=FULL
替換下列變數:
JOB
:資料品質掃描工作的 job ID。LOCATION
:建立資料品質掃描作業的 Google Cloud 區域。DATASCAN
:工作所屬資料品質掃描的名稱。--view=FULL
:如要查看掃描工作結果,請指定FULL
。
REST
使用 API Explorer 查看資料品質掃描結果。
查看歷來掃描結果
Dataplex Universal Catalog 會儲存最近 300 個工作或過去一年的資料品質掃描記錄,以先到為準。
控制台
在 Google Cloud 控制台中,前往「Data quality」(資料品質) 頁面。
按一下掃描名稱。
按一下「Jobs history」分頁標籤。
「工作記錄」分頁會提供過去工作相關資訊。這份報表會列出所有工作、每項工作掃描的記錄數量、工作狀態、工作執行時間、每項規則是否通過或失敗等資訊。
如要查看工作詳細資料,請按一下「Job ID」欄中的任一工作。
gcloud
如要查看資料品質掃描的所有工作,請使用 gcloud dataplex datascans jobs list
指令:
gcloud dataplex datascans jobs list \ --location=LOCATION \ --datascan=DATASCAN \
替換下列變數:
LOCATION
:建立資料品質掃描作業的 Google Cloud 區域。DATASCAN
:要查看所有工作資料品質掃描的名稱。
REST
使用 API Explorer 查看所有掃描工作。
分享已發布的結果
建立資料品質掃描作業時,如果您選擇將掃描結果發布為 Dataplex 通用目錄中繼資料,則最新的掃描結果會顯示在Google Cloud 控制台的 BigQuery 和 Dataplex 通用目錄頁面,以及資料表的「資料品質」分頁中。
您可以讓貴機構的使用者存取已發布的掃描結果。如要授予掃描結果的存取權,請按照下列步驟操作:
在 Google Cloud 控制台中,前往「Data quality」(資料品質) 頁面。
按一下要分享結果的資料品質掃描。
前往「權限」分頁。
按一下「授予存取權」。
在「New principals」(新增主體) 欄位中,新增您要授予存取權的主體。
在「Select a role」(請選擇角色) 欄位中,選取「Dataplex DataScan DataViewer」(Dataplex DataScan DataViewer)。
按一下 [儲存]。
如要移除主體對已發布掃描結果的存取權,請按照下列步驟操作:
在 Google Cloud 控制台中,前往「Data quality」(資料品質) 頁面。
按一下要分享結果的資料品質掃描。
前往「權限」分頁。
選取要移除 Dataplex DataScan DataViewer 角色的主體。
按一下 [移除存取權]。
按一下「確認」。
在 Cloud Logging 中設定快訊
如要使用 Cloud Logging 中的記錄設定資料品質失敗的快訊,請按照下列步驟操作:
控制台
前往 Google Cloud 控制台的 Cloud Logging「Logs Explorer」。
在「Query」視窗中輸入查詢。請參閱查詢範例。
按一下 [Run Query] (執行查詢)。
按一下「建立快訊」。系統隨即會開啟側邊面板。
輸入快訊政策名稱,然後點選「下一步」。
查看查詢。
按一下「預覽記錄檔」按鈕,測試查詢。這會顯示符合條件的記錄檔。
點選「下一步」。
設定通知間隔時間,然後點選「下一步」。
定義快訊的通知對象,然後按一下「儲存」建立快訊政策。
或者,您也可以在Google Cloud 主控台中依序前往「Monitoring」(監控) >「Alerting」(快訊),設定及編輯快訊。
gcloud
不支援。
REST
使用 API Explorer 在 Cloud Logging 中設定警示。
設定工作層級或維度層級快訊的查詢範例
以下是設定資料品質掃描整體資料品質失敗警報的查詢範例:
resource.type="dataplex.googleapis.com/DataScan" AND labels."dataplex.googleapis.com/data_scan_state"="SUCCEEDED" AND resource.labels.resource_container="projects/112233445566" AND resource.labels.datascan_id="a0-test-dec6-dq-3" AND NOT jsonPayload.dataQuality.passed=true
以下是針對特定資料品質掃描作業的維度 (例如獨特性) 設定資料品質失敗警示的查詢範例:
resource.type="dataplex.googleapis.com/DataScan" AND labels."dataplex.googleapis.com/data_scan_state"="SUCCEEDED" AND resource.labels.resource_container="projects/112233445566" AND resource.labels.datascan_id="a0-test-dec6-dq-3" AND jsonPayload.dataQuality.dimensionPassed.UNIQUENESS=false
設定資料表資料品質失敗警報的查詢範例。
針對未在 Dataplex 通用目錄湖泊中整理的 BigQuery 資料表,設定資料品質失敗的快訊:
resource.type="dataplex.googleapis.com/DataScan" AND jsonPayload.dataSource="//bigquery.googleapis.com/projects/test-project/datasets/testdataset/table/chicago_taxi_trips" AND labels."dataplex.googleapis.com/data_scan_state"="SUCCEEDED" AND resource.labels.resource_container="projects/112233445566" AND NOT jsonPayload.dataQuality.passed=true
針對 Dataplex Universal Catalog lake 中組織的 BigQuery 資料表,設定資料品質失敗的警示:
resource.type="dataplex.googleapis.com/DataScan" AND jsonPayload.dataSource="projects/test-project/datasets/testdataset/table/chicago_taxi_trips" AND labels."dataplex.googleapis.com/data_scan_state"="SUCCEEDED" AND resource.labels.resource_container="projects/112233445566" AND NOT jsonPayload.dataQuality.passed=true
設定每項規則快訊的查詢範例
以下是針對資料品質掃描作業,針對所有失敗的資料品質規則設定警示的範例查詢,其中包含指定的自訂規則名稱:
resource.type="dataplex.googleapis.com/DataScan" AND jsonPayload.ruleName="custom-name" AND jsonPayload.result="FAILED"
以下是針對資料品質掃描的特定評估類型,針對所有失敗的資料品質規則設定警示的範例查詢:
resource.type="dataplex.googleapis.com/DataScan" AND jsonPayload.evalutionType="PER_ROW" AND jsonPayload.result="FAILED"
以下是用於資料品質掃描的資料表中,針對資料欄的所有失敗資料品質規則設定警示的查詢範例:
resource.type="dataplex.googleapis.com/DataScan" AND jsonPayload.column="CInteger" AND jsonPayload.result="FAILED"
排解資料品質失敗問題
對於每個包含失敗資料列層級規則的工作,Dataplex Universal Catalog 會提供查詢,用於取得失敗的記錄。執行這項查詢,即可查看不符合規則的記錄。
控制台
在 Google Cloud 控制台中,前往「Data quality」(資料品質) 頁面。
按一下要排解記錄問題的掃描作業名稱。
按一下「Jobs history」分頁標籤。
按一下已識別資料品質失敗的工作 ID。
在隨即開啟的工作結果視窗中,找到「Rules」部分的「Query to get failed records」欄。針對失敗的規則,按一下「將查詢複製到剪貼簿」。
在 BigQuery 中執行查詢,查看導致工作失敗的記錄。
gcloud
不支援。
REST
使用 API Explorer 查看查詢,取得失敗工作失敗的記錄。
更新資料品質掃描作業
您可以編輯現有資料品質掃描的各種設定,例如顯示名稱、篩選器和排程。
控制台
在 Google Cloud 控制台中,前往「Data Quality」(資料品質) 頁面。
在要編輯的掃描畫面資料列中,依序按一下垂直排列的三點圖示 >「編輯」。
編輯值。
按一下 [儲存]。
gcloud
如要更新資料品質掃描的說明,請使用 gcloud dataplex datascans update data-quality
指令:
gcloud dataplex datascans update data-quality DATASCAN \ --location=LOCATION \ --description=DESCRIPTION
更改下列內容:
DATASCAN
:要更新的資料品質掃描名稱。LOCATION
:建立資料品質掃描作業的 Google Cloud 區域。DESCRIPTION
:資料品質掃描的新說明。
REST
使用 API Explorer 編輯資料品質掃描作業。
刪除資料品質掃描作業
控制台
在 Google Cloud 控制台中,前往「Data quality」(資料品質) 頁面。
按一下要刪除的掃描。
點選「刪除」。
gcloud
如要刪除資料品質掃描作業,請使用 gcloud dataplex datascans delete
指令:
gcloud dataplex datascans delete DATASCAN \ --location=LOCATION \ --async
替換下列變數:
DATASCAN
:要刪除的資料品質掃描名稱。LOCATION
:建立資料品質掃描作業的 Google Cloud 區域。
REST
使用 API Explorer 刪除資料品質掃描作業。
後續步驟
- 瞭解資料剖析。
- 瞭解如何使用資料剖析功能。
- 請按照教學課程使用 Terraform 以程式碼管理資料品質規則。