

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 開始使用適用於 Data Catalog 的 AWS Glue Data Quality
<a name="data-quality-getting-started"></a>

 此  入門區段提供的說明可協助您開始在 AWS Glue 主控台上使用 AWS Glue Data Quality。您將學習如何完成基本任務，例如產生資料品質規則建議，以及根據資料評估規則集。

**Topics**
+ [先決條件](#data-quality-prereqs)
+ [逐步範例](#data-quality-step-by-step-example)
+ [產生規則建議](#data-quality-get-recommendations)
+ [監控規則建議](#data-quality-monitor-recommendations)
+ [編輯建議的規則集](#data-quality-edit-ruleset)
+ [建立新的規則集](#data-quality-create-ruleset)
+ [執行規則集以評估資料品質](#data-quality-run-data-quality-task)
+ [檢視資料品質分數和結果](#data-quality-view-results)
+ [使用預先處理查詢](#data-quality-preprocessing-queries)
+ [支援的來源類型](#data-quality-get-started-supported-source-types)
+ [相關主題](#data-quality-get-started-related)

## 先決條件
<a name="data-quality-prereqs"></a>

 在使用 AWS Glue Data Quality 之前，您應該熟悉在 AWS Glue 中使用 Data Catalog 和爬蟲程式。使用 AWS Glue Data Quality 時，您可以評估 Data Catalog 資料庫中資料表的品質。您也需要下列項目：
+  Data Catalog 中的資料表，用來評估資料品質規則集。
+  您在產生規則建議或執行資料品質任務時提供的 AWS Glue IAM 角色。此角色必須有權存取多個 AWS Glue Data Quality 程序代表您執行時所需的資源。這些資源包括 AWS Glue、Amazon S3 和 CloudWatch。若要檢視包括 AWS Glue Data Quality 最低許可的範例政策，請參閱 [範例 IAM 政策](data-quality-authorization.md#data-quality-authorization-example-policy)。

   若要進一步了解 AWS Glue 的 IAM 角色，請參閱 [Create an IAM policy for the AWS Glue service](https://docs.aws.amazon.com/glue/latest/dg/create-service-policy.html) 和 [Create an IAM role for the AWS Glue service](https://docs.aws.amazon.com/glue/latest/dg/create-an-iam-role.html)。您也可以檢視 [AWS Glue Data Quality 動作授權](https://docs.aws.amazon.com/glue/latest/dg/data-quality-authorization.html)中資料品質專屬的所有 AWS Glue 許可的清單。
+  包含至少一個資料表的資料庫，其中包含各種資料。本教學課程中使用的資料表以 `yyz-tickets` 命名，內含資料表 `tickets`。此資料是多倫多市停車罰單公開提供的資訊集合。如果您建立自己的資料表，請確定已填入各種有效資料，以取得最佳建議規則集。

## 逐步範例
<a name="data-quality-step-by-step-example"></a>

 如需範例資料集的逐步範例，請參閱 [AWS Glue Data Quality 部落格文章](https://aws.amazon.com/blogs/big-data/getting-started-with-aws-glue-data-quality-from-the-aws-glue-data-catalog/)。

## 產生規則建議
<a name="data-quality-get-recommendations"></a>

 規則建議可讓您輕鬆開始使用資料品質工具，而無需撰寫程式碼。您可以透過 AWS Glue Data Quality 分析資料、識別規則，並建立可在資料品質任務中評估的規則集。系統會在 90 天後自動刪除建議執行。

**產生資料品質規則建議**

1.  在 AWS [https://console.aws.amazon.com/glue/](https://console.aws.amazon.com/glue/)：// 開啟 Glue 主控台。

1.  在導覽窗格中，選擇 **Tables** (資料表)。然後選擇您要為其產生資料品質規則建議的資料表。

1.  在資料表詳細資訊頁面上，選取**資料品質**索引標籤以存取資料表的 AWS Glue Data Quality 規則和設定。

1.  在**資料品質**索引標籤上，選擇**新增規則並監控資料品質**。

1.  在**規則集建置器**頁面上，如果沒有規則建議執行，頁面頂端的提醒將提示您開始建議任務。

1.  選擇**建議規則**以開啟模態並輸入建議任務的參數。

1.  選擇可存取 Glue 的 IAM AWS 角色。此角色必須具有許可，才能存取各種 AWS Glue Data Quality 程序代表您執行所需的資源。

1.  根據偏好設定填寫欄位後，選擇**建議規則**以開始建議任務執行。如果建議執行正在進行中或已完成，您可以在此提醒中管理執行。您可能需要重新整理提醒，才能檢視狀態變更。已完成和進行中的建議任務執行會顯示在**執行歷史記錄**頁面中，其中會列出所有過去 90 天內的建議執行。

### 建議規則的含義
<a name="data-quality-recommend-rules"></a>

 AWS Glue Data Quality 會根據輸入資料表每一欄的資料產生規則。它使用規則來識別可能的邊界，在這些邊界中可以篩選資料以維持品質要求。下列已產生規則的清單包含的範例有助於了解規則的含義，以及在將規則套用至資料時可能會執行的動作。

 如需產生之資料品質定義語言 (DQDL) 規則類型的完整清單，請參閱 [DQDL rule type reference](https://docs.aws.amazon.com/glue/latest/dg/dqdl.html#dqdl-rule-types)。
+  `IsComplete "SET_FINE_AMOUNT"`：`IsComplete` 規則會驗證是否已針對任何指定資料列填入資料欄。使用此規則可在資料中將資料欄標記為非選用資料欄。
+  `Uniqueness "TICKET_NUMBER" > 0.95`：`Uniqueness` 規則會驗證資料欄中的資料是否符合某些唯一性閾值。在此範例中，填入 `"TICKET_NUMBER"` 任何指定資料列的資料被判定為與所有其他資料列的內容最多有 95% 相同，如此便建議使用此規則。
+  `ColumnValues "PROVINCE" in ["ON", "QC", "AB", "NY",...]`：`ColumnValues` 規則會根據現有資料欄內容定義資料欄的有效值。在此範例中，每一資料列的資料都是州或省的 2 個字母的車牌。
+  `ColumnLength "INFRACTION_DESCRIPTION" between 15 and 31`：`ColumnLength` 規則會對資料欄的資料強制執行長度限制。此規則是根據字串資料欄的記錄長度下限和上限，從範例資料產生。

## 監控規則建議
<a name="data-quality-monitor-recommendations"></a>

 執行資料品質規則建議時，**新增規則並監控資料品質**頁面會在頂端列中顯示資訊和您可以採取的其他動作。

 規則建議正在進行時，您可以選擇在建議任務完成之前**停止執行**。任務正在進行中時，您會看到**進行中**狀態，以及執行開始的日期和時間。

 規則建議完成時，規則建議列會顯示建議的規則數量、上次建議執行的狀態，以及完成的日期和時間戳記。

 您可以選擇**插入規則建議**來新增建議的規則。若要檢視先前建議的規則，請選取特定日期。若要執行新建議，請選擇**其他動作**，然後選擇**建議的規則**。

 選擇**管理使用者設定**以進行預設設定。您可以為 Amazon S3 設定預設路徑來存放規則集，或設定預設角色以執行資料目錄。

## 編輯建議的規則集
<a name="data-quality-edit-ruleset"></a>

由於 AWS Glue Data Quality 會根據您現有的可用資料產生規則，您可能會在自動建議中看到一些非預期或不想要的規則。為了充分利用建議的規則集，您需要對其進行評估和修改。在本教學課程的此步驟中，您需採用上一步中產生的規則並對其進行調整，以對某些資料強制執行更嚴格的限制。您也可以放寬其他規則，以確保稍後可以新增正確、唯一的資料。

**編輯建議的規則集**

1.  在 AWS Glue 主控台中，選擇 **Data Catalog**，然後在導覽窗格中選擇**資料庫資料表**。選擇 `tickets` 資料表。

1. 在資料表詳細資訊頁面上，選擇**資料品質**索引標籤以存取資料表的 AWS Glue Data Quality 規則和設定。

1.  在**規則集**區段中，選取在 [產生規則建議](#data-quality-get-recommendations) 中產生的規則集。

1.  選擇**動作**，然後在主控台視窗中選擇**編輯**。規則集編輯器會在主控台中載入。其中包括規則的編輯窗格和 DQDL 的快速參考。

1. 移除指令碼的第 `2` 行。如此可以放寬要求，即將資料庫大小限制在特定數量的資料列內。編輯後，檔案的第 1 至 3 行中應包含以下內容：

   ```
   Rules = [
       IsComplete "TAG_NUMBER_MASKED",
       ColumnLength "TAG_NUMBER_MASKED" between 6 and 9,
   ```

1. 移除指令碼的第 `25` 行。如此放寬了 96％ 的記錄省份為 `ON` 的要求。編輯後，檔案從第 `24` 行至規則集結尾應包含以下內容：

   ```
   ColumnValues "PROVINCE" in ["ON", "QC", "AB", "NY", "AZ", "NS", "BC", "MI", "PQ", "MB", "PA", "FL", "SK", "NJ", "OH", "NB", "IL", "MA", "CA",
       "VA", "TX", "NF", "MD", "PE", "CT", "NC", "GA", "IN", "OR", "MN", "TN", "WI", "KY", "MO", "WA", "NH", "SC", "CO", "OK", "VT", "RI", "ME", "AL",
       "YT", "IA", "DE", "AR", "LA", "XX", "WV", "MT", "KS", "NT", "DC", "NV", "NE", "UT", "MS", "NM", "ID", "SD", "ND", "AK", "NU", "GO", "WY", "HI"],
   ColumnLength "PROVINCE" = 2
   ]
   ```

1. 將第 `14` 行變更為以下內容：

   ```
   IsComplete "TIME_OF_INFRACTION",
   ```

    如此可以將資料庫限制為僅包含記錄違規時間的票證，藉此*加強*對資料欄的要求。您應始終將缺少記錄違規時間的票證視為此資料集中的無效資料。這與分割或轉換可能更適合進一步使用或檢查資料以確定規則品質的情況不同。

1. 選擇主控台頁面底部的**更新規則集**。

## 建立新的規則集
<a name="data-quality-create-ruleset"></a>

 規則集是您根據資料評估的一組資料品質規則。在 AWS Glue 主控台中，您可以使用資料品質定義語言 (DQDL) 撰寫自訂規則集。

**建立資料品質規則集**

1.  在 AWS Glue 主控台中，選擇**資料目錄**，選擇**資料庫**，然後在導覽窗格中選擇**資料表**。選取 `tickets` 資料表。

1. 開啟 **Data quality** (資料品質) 索引標籤。

1.  在**規則集**區段中，選擇**建立規則集**。DQDL 編輯器會在主控台中啟動。它具有可供直接編輯的文字區域，以及 DQDL 規則和資料表結構描述的快速參考。

1.  開始將規則新增至 DQDL 編輯器的文字區域。您可以直接從本教學課程撰寫規則，也可以使用資料品質規則編輯器的 **DQDL 規則建置器**功能進行撰寫。
**注意**  
 從清單中選取規則類型，然後選取加號，將範例語法插入編輯器窗格。
使用您自己的欄名稱替換預留位置欄名稱。資料表中的資料欄名稱位於**結構描述**索引標籤中。
 視需要更新運算式參數。如需 DQDL 支援的表達式完整清單，請參閱[表達式](dqdl.md#dqdl-syntax-rule-expressions)。

    例如，下列規則是 `tickets` 資料表中 `ticket_number` 資料欄資料驗證的限制條件。若要新增下列規則，請使用 DQDL 規則建置器或直接編輯規則集：

   ```
   IsComplete "ticket_number",
   IsUnique "ticket_number",
   ColumnValues "ticket_number" > 9000000000
   ```

1. 在**規則集名稱**欄位中輸入新規則集的名稱。

1. 選擇**儲存規則集**。

### 跨多個資料集評估資料品質
<a name="data-quality-create-ruleset-referential-integrity"></a>

 您可以使用 ReferentialIntegrity 和 DatasetMatch 規則集，跨多個資料集設定資料品質規則。ReferentialIntegrity 會檢查在其他資料集中是否存在主資料集中的資料。

若要新增參考資料集，請選擇**結構描述**索引標籤，然後選擇**更新參考資料表**。系統將提示您選取資料庫和資料表。您可以新增資料表，然後設定資料品質規則。AggregateMatch、RowCountMatch、ReferentialIntegrity、SchemaMatch 和 DatasetMatch 等規則類型皆支援跨多個資料集執行資料品質檢查的能力。

## 執行規則集以評估資料品質
<a name="data-quality-run-data-quality-task"></a>

 當您執行資料品質任務時， AWS Glue Data Quality 會根據您的資料評估規則集，並計算資料品質分數。此分數代表針對輸入內容通過的資料品質規則百分比。

**執行資料品質任務**

1. 在 AWS Glue 主控台中，選擇**資料目錄**，選擇**資料庫**，然後在導覽窗格中選擇**資料表**。選取資料表 `tickets`。

1. 選擇**資料品質**索引標籤。

1. 在**規則集**清單中，選取您要根據資料表評估的規則集。在此步驟中，我們建議使用已撰寫或修改的規則集，而不是產生的規則。選擇**執行**。

1.  在模態中選擇 IAM 角色。此角色必須具有許可，才能存取各種 AWS Glue Data Quality 程序代表您執行所需的資源。您可以將 IAM 角色儲存為預設角色，或前往**預設設定**頁面進行修改。

1.  在 **Data quality actions** (資料品質動作) 下，選擇是否要 **Publish metrics to Amazon CloudWatch** (將指標發佈到 Amazon CloudWatch)。選取此選項時， AWS Glue Data Quality 會發佈指標，指出傳遞的規則數目和失敗的規則數目。若要對以這種方式存放的指標採取動作，您可以使用 CloudWatch 警示。金鑰指標也會發佈到 ， Amazon EventBridge 供您設定提醒。如需詳細資訊，請參閱[設定提醒、部署和排程](https://docs.aws.amazon.com/glue/latest/dg/data-quality-alerts.html)。

1.  在**執行頻率**中，選擇視需求執行或排程規則集。排程規則集時，系統會提示您輸入任務名稱。將在 Amazon EventBridge中建立排程。您可以在 Amazon EventBridge中編輯排程。

1.  若要將資料品質結果儲存在 Amazon S3 中，請選取**資料品質結果位置**。您先前為此任務選取的 IAM 角色必須具有此位置的寫入存取權。

1.  **在其他組態**下，輸入您希望 AWS Glue 為您的資料品質任務配置**的請求工作者數量**。

1.  您可以選擇在資料來源中設定篩選條件。如此可協助您減少讀取的資料量。您也可以選取分割區資訊並透過 API 呼叫將增量驗證作為參數傳遞，以使用篩選條件執行增量驗證。您可以提供分割區述詞來改善效能。

1.  選擇**執行**。您應該會在 **Data quality task runs** (資料品質任務執行) 清單中看到新任務。當任務的**執行狀態**資料欄顯示為**已完成**時，您可以檢視品質分數結果。您可能需要重新整理主控台視窗，才能正確更新狀態。

1.  若要檢視資料品質結果詳細資訊的資料欄，請選擇 "\+" 圖示以展開規則集。結果會顯示在評估中通過和失敗的規則，以及觸發規則失敗的原因。

## 檢視資料品質分數和結果
<a name="data-quality-view-results"></a>

**查看對所有已建立規則集的最新執行**

1.  在 AWS Glue 主控台中，選擇導覽窗格中**的資料表**。然後選擇您要為其執行資料品質任務的資料表。

1.  選擇**資料品質**索引標籤。

1.  **資料品質快照**顯示一段時間內執行的整體趨勢。依預設，會顯示對所有規則集最後 10 次的執行。若要依規則集篩選，請從下拉式清單中選取所需規則集。如果執行少於 10 次，則會顯示所有可用的已完成執行。

1.  在**資料品質**資料表中，會顯示每個具有最新執行 (如有) 的規則集及其分數。展開規則集會顯示該規則集中的規則，以及該執行的規則結果。



**查看特定規則集上的最新執行**

1.  在 AWS Glue 主控台中，選擇導覽窗格中**的資料表**。然後選擇您要為其執行資料品質任務的資料表。

1.  選擇**資料品質**索引標籤。

1.  在**資料品質**資料表中，選擇特定規則集。

1.  在**規則集詳細資訊**頁面上，選擇**執行歷史記錄**索引標籤。

    此索引標籤內的資料表中會列出此特定規則集的所有評估執行。您可以查看分數的歷史記錄和執行狀態。

1.  若要查看特定執行的詳細資訊，請選擇**執行 ID**，以前往**評估執行詳細資訊**頁面。您可以在此頁面上查看有關執行的詳細資訊，以及個別規則結果狀態的更多詳細資訊。

## 使用預先處理查詢
<a name="data-quality-preprocessing-queries"></a>

 AWS Glue Data Quality 支援預先處理查詢，可讓您在執行資料品質檢查之前轉換資料。此功能可讓您：
+ 建立衍生資料欄以進行資料品質驗證。
+ 根據特定條件篩選資料。
+ 執行品質檢查的計算或轉換。
+ 驗證資料欄之間的關係。

**注意**  
 此功能僅支援 APIs且不支援透過 主控台。

### 搭配 CLI 和 SDK 使用預先處理查詢
<a name="data-quality-preprocessing-queries-cli-sdk"></a>

#### 建議執行
<a name="data-quality-preprocessing-queries-recommendation-runs"></a>

 下列範例示範如何搭配建議執行使用預先處理查詢。

 **AWS CLI：**

```
aws glue start-data-quality-rule-recommendation-run \
  --data-source '{"DataQualityGlueTable": { \
    "DatabaseName": "mydatabase", \
    "TableName": "mytable", \
    "PreProcessingQuery": "SELECT sepal_length, sepal_width, petal_length, petal_width, class, (sepal_length + sepal_width) as sepal_total FROM `mydatabase.mytable`" \
  }}' \
  --role "arn:aws:iam::123456789012:role/GlueDataQualityRole" \
  --created-ruleset-name "my-ruleset-with-preprocessing"
```

 **Java 開發套件：**

```
StartDataQualityRuleRecommendationRunRequest request = new StartDataQualityRuleRecommendationRunRequest()
    .withDataSource(new DataSource()
        .withDataQualityGlueTable(new DataQualityGlueTable()
            .withDatabaseName("mydatabase")
            .withTableName("mytable")
            .withPreProcessingQuery("SELECT sepal_length, sepal_width, " + 
                "(sepal_length + sepal_width) as sepal_total " +
                "FROM `mydatabase.mytable`")))
    .withRole("arn:aws:iam::123456789012:role/GlueDataQualityRole")
    .withCreatedRulesetName("my-ruleset-with-preprocessing");

glueClient.startDataQualityRuleRecommendationRun(request);
```

#### 規則集評估執行
<a name="data-quality-preprocessing-queries-evaluation-runs"></a>

 下列範例示範如何使用預先處理查詢搭配規則集評估執行。

 **AWS CLI：**

```
aws glue start-data-quality-ruleset-evaluation-run \
  --data-source '{"DataQualityGlueTable": { \
    "DatabaseName": "mydatabase", \
    "TableName": "mytable", \
    "PreProcessingQuery": "SELECT order_id, amount, (tax + shipping) as total_fees FROM `mydatabase.mytable`" \
  }}' \
  --role "arn:aws:iam::123456789012:role/GlueDataQualityRole" \
  --ruleset-names '["my-ruleset"]'
```

 **Java 開發套件：**

```
StartDataQualityRulesetEvaluationRunRequest request = new StartDataQualityRulesetEvaluationRunRequest()
    .withDataSource(new DataSource()
        .withDataQualityGlueTable(new DataQualityGlueTable()
            .withDatabaseName("mydatabase")
            .withTableName("mytable")
            .withPreProcessingQuery("SELECT order_id, amount, " +
                "(tax + shipping) as total_fees " +
                "FROM `mydatabase.mytable`")))
    .withRole("arn:aws:iam::123456789012:role/GlueDataQualityRole")
    .withRulesetNames(Arrays.asList("my-ruleset"));

glueClient.startDataQualityRulesetEvaluationRun(request);
```

### 撰寫預先處理查詢時的考量事項
<a name="data-quality-preprocessing-queries-considerations"></a>

 寫入預先處理查詢時：
+ 資料表參考必須使用``databaseName.tableName``反引號格式化為 。
+ 查詢必須是有效的 SELECT 陳述式。
+ 查詢輸出中的資料欄名稱將用於資料品質規則。

 下列範例顯示預先處理查詢：

```
SELECT 
    sepal_length, 
    sepal_width, 
    petal_length, 
    petal_width, 
    class,
    (sepal_length + sepal_width) as sepal_total 
FROM `mydatabase.mytable`
```

### 限制
<a name="data-quality-preprocessing-queries-limitations"></a>
+ 查詢必須使用反引號和完整``databaseName.tableName``格式來參考資料表。
+ 查詢長度上限為 51，200 個字元。
+ 查詢必須傳回至少一列資料。
+ 規則集中參考的所有資料欄都必須存在於查詢輸出中。

## 支援的來源類型
<a name="data-quality-get-started-supported-source-types"></a>


**依 AWS Lake Formation 組態支援的資料表類型**  

| 資料表類型 | AWS Lake Formation - 所有資料表存取 | AWS Lake Formation 使用資料欄啟用 | AWS Lake Formation 使用資料篩選條件啟用 | 跨帳戶 AWS Lake Formation 支援 - 所有資料表存取 | AWS Lake Formation 已停用 | 
| --- | --- | --- | --- | --- | --- | 
| Parquet | 支援 | 不支援 | 不支援 | 支援 | 支援 | 
| ORC | 支援 | 不支援 | 不支援 | 支援 | 支援 | 
| CSV、JSON、TSV | 支援 | 不支援 | 不支援 | 支援 | 支援 | 
| Avro | 支援 | 不支援 | 不支援 | 支援 | 支援 | 
| JSON | 支援 | 不支援 | 不支援 | 支援 | 支援 | 
| Iceberg | 支援 | 不支援 | 不支援 | 支援 | 支援 | 
| HUDI | 不支援 | 不支援 | 不支援 | 不支援 | 支援 | 
| Delta | 不支援 | 不支援 | 不支援 | 不支援 | 支援 | 
| RMS | 支援\* | 支援\* | 支援\* | 不支援 | 不支援 | 
| Amazon S3 Tables | 支援\* | 不支援 | 不支援 | 不適用 | 支援 | 
| Amazon RDS 和 Aurora | 不適用 | 不適用 | 不適用 | 不適用 | 不支援 | 
| JDBC | 不適用 | 不適用 | 不適用 | 不適用 | 支援 | 

 \* 不支援 Glue 主控台中的 Amazon S3 資料表和 SageMaker Lakehouse AWS 支援。目前，僅透過 CLI 支援 Amazon S3 資料表和 SageMaker Lakehouse Data Catalog 建議執行和 Data Catalog Data Quality 評估執行。

### 其他已知限制
<a name="w2aac49c43c47b7"></a>
+  Delta Lake Symlink 資料表：不支援 AWS Glue Data Quality 建議執行或 Data Catalog Data Quality 評估執行。
+  SageMaker Unified Studio 中的 Amazon S3 資料表資產發布：目前，在 SageMaker Unified Studio 中將 Amazon S3 Tables 發布為資產不可用；因此 SageMaker Unified Studio 無法使用視覺化 Amazon S3 Table Data Quality 執行。

## 相關主題
<a name="data-quality-get-started-related"></a>
+ [DQDL 規則類型參考](dqdl-rule-types.md)
+ [資料品質定義語言 (DQDL) 參考](dqdl.md)