使用自動資料品質

本頁面說明如何建立 Dataplex Universal Catalog 資料品質掃描作業。

如要瞭解資料品質掃描作業,請參閱「關於自動資料品質」。

事前準備

  1. 啟用 Dataplex API。

    啟用 API

  2. 選用:如果您希望 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 中的異常值。它會檢查是否應根據 customercurrencytransaction 套用折扣。該規則會檢查預測值是否至少在 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 中的異常值。該函式會檢查是否應根據 customercurrencytransaction 套用折扣。這項規則會找出預測結果不相符的所有事件。假設:在使用規則之前,您已建立機器學習模型。使用下列指令建立 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 斷言 (含資料參照參數)

檢查當天所有支援貨幣的 discount_pct 是否超過 30%。

日期篩選器 transaction_timestamp >= current_date() 會套用為資料來源資料表的列篩選器。

資料參照參數 ${data()} 會做為 my_project_id.dim_dataset.dim_currency WHERE transaction_timestamp >= current_date() 的預留位置,並套用列篩選器。

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

建立資料品質掃描作業

控制台

  1. 在 Google Cloud 控制台中,前往「Data quality」(資料品質) 頁面。

    前往「資料品質」

  2. 按一下「建立資料品質掃描作業」

  3. 在「Define scan」視窗中,填入下列欄位:

    1. 輸入「Display name」(顯示名稱)

    2. 如果您未提供 ID,系統會自動產生掃描 ID。請參閱資源命名慣例

    3. 選用:輸入說明

    4. 在「Table」欄位中,按一下「Browse」,選擇資料表,然後點選「Select」。Dataplex Universal Catalog 僅支援標準 BigQuery 資料表。

      如為多區域資料集內的資料表,請選擇要建立資料掃描作業的區域。

      如要瀏覽 Dataplex Universal Catalog lake 中分門別類的資料表,請按一下「Browse within Dataplex Lakes」

    5. 在「範圍」欄位中,選擇「增量」或「整個資料」

      • 如果您選擇「增量」:在「時間戳記欄」欄位中,從 BigQuery 資料表中選取 DATETIMESTAMP 類型的資料欄,這類資料欄只會遞增,並能用來識別新的記錄。這可以是用來分割資料表的資料欄。
    6. 選用步驟:新增標籤。標籤是 key:value 組合,可用來將相關物件分組,或與其他 Google Cloud 資源組合。

    7. 如要篩選資料,請按一下「篩選器」。勾選「篩選資料列」核取方塊。資料列篩選器的輸入值必須是有效的 SQL 運算式,可用於 GoogleSQL 語法中的 WHERE 子句。例如:col1 >= 0。篩選條件可以是多個欄條件的組合。例如:col1 >= 0 AND col2 < 10

    8. 如要對資料進行取樣,請在「取樣大小」清單中選取取樣百分比。請選擇介於 0.0% 和 100.0% 之間的百分比值,最多可有 3 位小數。如果是較大的資料集,請選擇較低的取樣百分比。舉例來說,如果是 ~1 PB 的資料表,如果您輸入的值介於 0.1% 和 1.0% 之間,Dataplex Universal Catalog 會取樣 1 到 10 TB 的資料。對於增量資料掃描,Dataplex Universal Catalog 會將取樣作業套用至最新的增量資料。

    9. 如要將資料品質掃描結果發布為 Dataplex Universal Catalog 中繼資料,請選取「將結果發布至 BigQuery 和 Dataplex Catalog」核取方塊。

      您可以在 BigQuery 和 Dataplex Universal Catalog 頁面的「資料品質」分頁中,查看來源資料表的最新掃描結果。如要讓使用者存取已發布的掃描結果,請參閱「分享已發布的結果」。

    10. 按一下「繼續」

  4. 在「排程」視窗中,選擇下列任一選項:

    • 重複:依據每日、每週、每月或自訂的時間表執行資料品質掃描工作。指定掃描作業的執行頻率和時間。如果選擇自訂,請使用 cron 格式指定時間表。

    • 隨選:隨時執行資料品質掃描工作。

    按一下「繼續」

  5. 在「資料品質規則」視窗中,定義要為這項資料品質掃描作業設定的規則。按一下「新增規則」,然後選擇下列任一選項。

    • 以資料概況為基礎的建議:根據現有資料剖析掃描的建議,建立規則。

      1. 選擇資料欄:選取要取得規則建議的資料欄。

      2. 掃描專案:根據現有資料剖析掃描結果提供建議。根據預設,Dataplex Universal Catalog 會從您建立資料品質掃描的專案中,選取剖析掃描。如果您是在其他專案中建立掃描作業,則必須指定要從哪個專案提取剖析掃描結果。

      3. 選擇設定檔結果:系統會根據您選取的欄和專案,顯示多個設定檔結果。

      4. 選取一或多個設定檔結果,然後按一下「確定」。這會填入可供選取的規則清單。

      5. 勾選方塊並按一下「選取」,選取要編輯的規則。選取後,系統就會將規則新增至目前的規則清單。接著,您就可以編輯規則。

    • 內建規則類型:根據預先定義的規則建立規則。請參閱預先定義規則清單。

      1. 選擇資料欄:選取要選取規則的資料欄。

      2. 選擇規則類型:系統會根據您選取的欄,顯示多種規則類型供您選取。

      3. 選取一或多個規則類型,然後按一下「確定」。系統會填入可供選取的規則清單。

      4. 勾選方塊並按一下「選取」,選取要編輯的規則。選取後,系統就會將規則加入目前的規則清單。接著,您可以編輯規則。

    • SQL 資料列檢查規則:建立自訂 SQL 規則,套用至每個資料列 (自訂 SQL 資料列檢查規則)。

      1. 在「維度」中,選擇一個維度。

      2. 在「通過門檻」中,選擇必須通過檢查的記錄百分比。

      3. 在「欄名稱」中,選擇資料欄。

      4. 在「提供 SQL 運算式」欄位中,輸入評估為布林值 true (通過) 或 false (失敗) 的 SQL 運算式。詳情請參閱「支援的自訂 SQL 規則類型」一節,以及本文「定義資料品質規則」一節中的範例。

      5. 按一下「新增」。

    • SQL 匯總檢查規則:建立自訂 SQL 資料表條件規則。

      1. 在「維度」中,選擇一個維度。

      2. 在「欄名稱」中,選擇資料欄。

      3. 在「提供 SQL 運算式」欄位中,輸入評估為布林值 true (通過) 或 false (失敗) 的 SQL 運算式。詳情請參閱「支援的自訂 SQL 規則類型」一節,以及本文「定義資料品質規則」一節中的範例。

      4. 按一下「新增」。

    • SQL 斷言規則:建立自訂 SQL 斷言規則,檢查資料的無效狀態。

      1. 在「維度」中,選擇一個維度。

      2. 選用:在「欄名稱」中選擇資料欄。

      3. 在「提供 SQL 陳述式」欄位中,輸入會傳回符合無效狀態的資料列的 SQL 陳述式。如果傳回任何資料列,即代表這項規則失敗。請從 SQL 陳述式中省略結尾的分號。詳情請參閱「支援的自訂 SQL 規則類型」一節,以及本文「定義資料品質規則」一節中的範例。

      4. 按一下「新增」。

    Dataplex Universal Catalog 允許您為資料品質規則自訂名稱,以便監控及發出警報。您可以為任何資料品質規則選擇指派自訂規則名稱和說明。如要這樣做,請編輯規則並指定下列詳細資料:

    • 規則名稱:輸入自訂規則名稱,長度上限為 63 個半形字元。規則名稱可包含英文字母 (a-z、A-Z)、數字 (0-9) 和連字號 (-),且開頭須為英文字母,結尾須為數字或英文字母。
    • 說明:輸入規則說明,長度上限為 1,024 個半形字元。

    按一下「繼續」

  6. 選用步驟:將掃描結果匯出至 BigQuery 標準資料表。在「將掃描結果匯出至 BigQuery 資料表」部分,按一下「瀏覽」,選取要儲存資料品質掃描結果的現有 BigQuery 資料集。

    如果指定的資料表不存在,Dataplex Universal Catalog 會為您建立資料表。如果您使用的是現有資料表,請確認該資料表與匯出資料表結構定義相容。

  7. 選用:設定電子郵件通知報表,提醒使用者資料品質掃描作業的狀態和結果。在「通知報表」部分,按一下 「新增電子郵件 ID」,然後輸入最多五個電子郵件地址。接著,選取要傳送報表的情況:

    • 品質分數 (<=):當工作成功,且資料品質分數低於指定的目標分數時,系統就會傳送報表。請輸入介於 0 到 100 之間的目標品質評分。
    • 工作失敗:無論資料品質結果為何,只要工作本身失敗,就會傳送報告。
    • 工作完成 (成功或失敗):無論資料品質結果為何,系統都會在工作結束時傳送報告。
  8. 按一下 [建立]。

    掃描作業建立完成後,您隨時可以按一下「立即執行」,執行掃描作業。

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 範圍內。
  • 如果在掃描執行階段修改資料表,目前執行中的工作會匯出至先前的結果資料表,而資料表變更會在下一個掃描工作生效。
  • 請勿修改資料表結構定義。如果需要自訂欄,請在資料表上建立檢視畫面。
  • 為降低成本,請根據用途設定分區的到期日。詳情請參閱如何設定區隔到期時間

執行資料品質掃描

控制台

  1. 在 Google Cloud 控制台中,前往「Data quality」(資料品質) 頁面。

    前往「資料品質」

  2. 按一下資料品質掃描作業即可執行。

  3. 按一下「立即執行」

gcloud

如要執行資料品質掃描,請使用 gcloud dataplex datascans run 指令

gcloud dataplex datascans run DATASCAN \
--location=LOCATION \

替換下列變數:

  • LOCATION:資料品質掃描作業建立的 Google Cloud 區域。
  • DATASCAN:資料品質掃描的名稱。

REST

使用 API Explorer 執行資料品質掃描

查看資料品質掃描結果

控制台

  1. 在 Google Cloud 控制台中,前往「Data quality」(資料品質) 頁面。

    前往「資料品質」

  2. 如要查看掃描作業的詳細結果,請按一下掃描作業名稱。

    • 「總覽」部分會顯示最近七次工作的相關資訊,包括掃描執行時間、每項工作掃描的記錄數量、所有資料品質檢查是否通過、是否有失敗情形、失敗的資料品質檢查數量,以及失敗的維度。

    • 「資料品質掃描設定」部分會顯示掃描作業的詳細資料。

  3. 如要查看資料品質分數,瞭解通過規則的百分比,請按一下「工作歷史記錄」分頁。然後按一下工作 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 個工作或過去一年的資料品質掃描記錄,以先到為準。

控制台

  1. 在 Google Cloud 控制台中,前往「Data quality」(資料品質) 頁面。

    前往「資料品質」

  2. 按一下掃描名稱。

  3. 按一下「Jobs history」分頁標籤。

    「工作記錄」分頁會提供過去工作相關資訊。這份報表會列出所有工作、每項工作掃描的記錄數量、工作狀態、工作執行時間、每項規則是否通過或失敗等資訊。

  4. 如要查看工作詳細資料,請按一下「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 通用目錄頁面,以及資料表的「資料品質」分頁中。

您可以讓貴機構的使用者存取已發布的掃描結果。如要授予掃描結果的存取權,請按照下列步驟操作:

  1. 在 Google Cloud 控制台中,前往「Data quality」(資料品質) 頁面。

    前往「資料品質」

  2. 按一下要分享結果的資料品質掃描。

  3. 前往「權限」分頁。

  4. 按一下「授予存取權」

  5. 在「New principals」(新增主體) 欄位中,新增您要授予存取權的主體。

  6. 在「Select a role」(請選擇角色) 欄位中,選取「Dataplex DataScan DataViewer」(Dataplex DataScan DataViewer)

  7. 按一下 [儲存]

如要移除主體對已發布掃描結果的存取權,請按照下列步驟操作:

  1. 在 Google Cloud 控制台中,前往「Data quality」(資料品質) 頁面。

    前往「資料品質」

  2. 按一下要分享結果的資料品質掃描。

  3. 前往「權限」分頁。

  4. 選取要移除 Dataplex DataScan DataViewer 角色的主體。

  5. 按一下 [移除存取權]

  6. 按一下「確認」。

在 Cloud Logging 中設定快訊

如要使用 Cloud Logging 中的記錄設定資料品質失敗的快訊,請按照下列步驟操作:

控制台

  1. 前往 Google Cloud 控制台的 Cloud Logging「Logs Explorer」

    前往「Logs Explorer」(記錄檔探索工具)

  2. 在「Query」視窗中輸入查詢。請參閱查詢範例

  3. 按一下 [Run Query] (執行查詢)。

  4. 按一下「建立快訊」。系統隨即會開啟側邊面板。

  5. 輸入快訊政策名稱,然後點選「下一步」

  6. 查看查詢。

    1. 按一下「預覽記錄檔」按鈕,測試查詢。這會顯示符合條件的記錄檔。

    2. 點選「下一步」

  7. 設定通知間隔時間,然後點選「下一步」

  8. 定義快訊的通知對象,然後按一下「儲存」建立快訊政策。

或者,您也可以在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 會提供查詢,用於取得失敗的記錄。執行這項查詢,即可查看不符合規則的記錄。

控制台

  1. 在 Google Cloud 控制台中,前往「Data quality」(資料品質) 頁面。

    前往「資料品質」

  2. 按一下要排解記錄問題的掃描作業名稱。

  3. 按一下「Jobs history」分頁標籤。

  4. 按一下已識別資料品質失敗的工作 ID。

  5. 在隨即開啟的工作結果視窗中,找到「Rules」部分的「Query to get failed records」欄。針對失敗的規則,按一下「將查詢複製到剪貼簿」

  6. 在 BigQuery 中執行查詢,查看導致工作失敗的記錄。

gcloud

不支援。

REST

使用 API Explorer 查看查詢,取得失敗工作失敗的記錄

更新資料品質掃描作業

您可以編輯現有資料品質掃描的各種設定,例如顯示名稱、篩選器和排程。

控制台

  1. 在 Google Cloud 控制台中,前往「Data Quality」(資料品質) 頁面。

    前往「資料品質」

  2. 在要編輯的掃描畫面資料列中,依序按一下垂直排列的三點圖示 >「編輯」

  3. 編輯值。

  4. 按一下 [儲存]

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 編輯資料品質掃描作業

刪除資料品質掃描作業

控制台

  1. 在 Google Cloud 控制台中,前往「Data quality」(資料品質) 頁面。

    前往「資料品質」

  2. 按一下要刪除的掃描。

  3. 點選「刪除」。

gcloud

如要刪除資料品質掃描作業,請使用 gcloud dataplex datascans delete 指令

gcloud dataplex datascans delete DATASCAN \
--location=LOCATION \
--async

替換下列變數:

  • DATASCAN:要刪除的資料品質掃描名稱。
  • LOCATION:建立資料品質掃描作業的 Google Cloud 區域。

REST

使用 API Explorer 刪除資料品質掃描作業

後續步驟