

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

# 使用進階規則類型建立規則型比對工作流程
<a name="rule-based-mw-advanced"></a>

**先決條件**

建立規則型比對工作流程之前，您必須：

1. 建立結構描述映射。如需詳細資訊，請參閱[建立結構描述映射](create-schema-mapping.md)。

1. 如果使用 Connect Customer Profiles 做為輸出目的地，請確定您已設定適當的許可。

下列程序示範如何使用 AWS Entity Resolution 主控台或 `CreateMatchingWorkflow` API 建立具有**進階**規則類型的規則型比對工作流程。

------
#### [ Console ]

**使用主控台建立具有**進階**規則類型的規則型比對工作流程**

1. 登入 AWS 管理主控台 ，並在 https：//[https://console.aws.amazon.com/entityresolution/](https://console.aws.amazon.com/entityresolution/) 開啟 AWS Entity Resolution 主控台。

1. 在左側導覽窗格中的**工作流程**下，選擇**相符**。

1. 在**相符工作流程**頁面上的右上角，選擇**建立相符工作流程**。

1. 針對**步驟 1：指定相符的工作流程詳細資訊**，執行下列動作：

   1. 輸入**相符工作流程名稱**和選用**的描述**。

   1. 針對**資料輸入**，選擇 **AWS 區域**、**AWS Glue 資料庫**、**AWS Glue 資料表**，然後選擇對應的**結構描述映射**。

      您最多可以新增 19 個資料輸入。
**注意**  
若要使用**進階**規則，您的結構描述映射必須符合下列要求：  
除非欄位分組在一起，否則每個輸入欄位都必須對應至唯一的相符索引鍵。
如果輸入欄位分組在一起，他們可以共用相同的相符索引鍵。  
例如，下列結構描述映射對**進階**規則有效：  
`firstName: { matchKey: 'name', groupName: 'name' }`  
`lastName: { matchKey: 'name', groupName: 'name' }`  
在這種情況下， `firstName`和 `lastName` 欄位會分組在一起，並共用相同的名稱相符索引鍵，這是允許的。  
檢閱您的結構描述映射，並更新它們以遵循此one-to-one比對規則，除非欄位已正確分組，以便使用**進階**規則。
如果您的資料表具有 DELETE 資料欄，結構描述映射的類型必須是 `String`，而且您無法擁有 `matchKey`和 `groupName`。

   1. 預設會選取**標準化資料**選項，以便在比對之前標準化資料輸入。如果您不想標準化資料，請取消選取**標準化資料**選項。
**注意**  
只有**建立結構描述映射**中的下列案例才支援標準化：  
如果將下列**名稱**子類型分組：**名字**、**中間名**、**姓氏**。
如果將下列**地址**子類型分組：**街道地址 1**、**街道地址 2**、**街道地址 3**、**城市**、**州**、**國家**/地區、**郵遞區號**。
如果將下列**電話**子類型分組：**電話號碼**、**電話國家/地區代碼**。

   1. 若要指定**服務存取**許可，請選擇 選項並採取建議的動作。    
[See the AWS documentation website for more details](http://docs.aws.amazon.com/zh_tw/entityresolution/latest/userguide/rule-based-mw-advanced.html)

   1. （選用） 若要啟用資源**的標籤**，請選擇**新增標籤**，然後輸入**金鑰**和**值**對。

   1. 選擇**下一步**。

1. 針對**步驟 2：選擇相符的技術**：

   1. 針對**比對方法**，選擇**規則型比對**。

   1. 針對**規則類型**，選擇**進階**。  
![選擇比對技術畫面，並選取進階規則型比對選項。](http://docs.aws.amazon.com/zh_tw/entityresolution/latest/userguide/images/choose-matching-method-rule-based-advanced.PNG)

   1. 針對**處理節奏**，選取下列其中一個選項。
      + 選擇**手動**以隨需執行工作流程進行大量更新 
      + 選擇**自動**，在 S3 儲存貯體中有新資料時立即執行工作流程 
**注意**  
如果您選擇**自動**，請確定您的 S3 儲存貯體已開啟 Amazon EventBridge 通知。如需使用 S3 主控台啟用 Amazon EventBridge 的說明，請參閱《Amazon *Amazon S3*[啟用 Amazon EventBridge](https://docs.aws.amazon.com/AmazonS3/latest/userguide/enable-event-notifications-eventbridge.html)。

   1. 針對**相符規則**，輸入**規則名稱**，然後根據您的目標從下拉式清單中選擇適當的相符函數和運算子來建置**規則條件**。

      您最多可以建立 25 個規則。
**注意**  
AWS Entity Resolution 也支援[可轉移比對](transitive-matching.md)，這會處理所有規則層級的記錄，以可轉移方式連接比對群組。暫時性比對可作為僅限 API 的功能。啟用傳輸比對時，不支援 **EmptyValues=Ignore** 修飾詞。如需詳細資訊，請參閱[使用可轉移比對](transitive-matching.md)。

      您必須使用 **AND** 運算子結合模糊比對函數 (**Cosine**、**Levenshtein** 或 **Soundex**) 與完全相符的函數 (**Exact**、**ExactManyToMany**)。

      您可以使用下表，根據您的目標，協助決定要使用的函數或運算子類型。    
[See the AWS documentation website for more details](http://docs.aws.amazon.com/zh_tw/entityresolution/latest/userguide/rule-based-mw-advanced.html)  
**Example 符合電話號碼和電子郵件的規則條件**  

      以下是符合電話號碼 (**電話**配對金鑰） 和電子郵件地址 (**電子郵件地址**配對金鑰） 記錄的規則條件範例：

      `Exact(Phone,EmptyValues=Process) AND Levenshtein("Email address",2)`  
![符合電話號碼和電子郵件地址記錄的規則條件範例。](http://docs.aws.amazon.com/zh_tw/entityresolution/latest/userguide/images/matching-rule-condition-example.png)

      **電話**比對金鑰使用**精確**比對函數來比對相同的字串。**電話**比對金鑰會使用 **EmptyValues=Process** 修飾詞處理比對中的空值。

      **電子郵件地址**比對金鑰使用 **Levenshtein** 比對函數，來比對使用預設 Levenshtein Distance 演算法閾值 2 的拼寫錯誤資料。**電子郵件**比對金鑰不會使用任何選用的修飾詞。

      **AND** 運算子結合了**精確**比對函數和 **Levenshtein** 比對函數。  
**Example 使用 ExactManyToMany 執行比對金鑰比對的規則條件**  

      以下是符合三個地址欄位 (**HomeAddress** 比對金鑰、**BillingAddress** 比對金鑰和 **ShippingAddress** 比對金鑰） 記錄的規則條件範例，透過檢查是否有任何相符項目具有相同的值來尋找潛在相符項目。

      `ExactManyToMany` 運算子會評估指定地址欄位的所有可能組合，以識別任何兩個或多個地址之間的完全相符。例如，它會偵測 是否`HomeAddress`與 `BillingAddress`或 相符`ShippingAddress`，或這三個地址是否完全相符。

      ```
      ExactManyToMany(HomeAddress, BillingAddress, ShippingAddress)
      ```  
**Example 使用叢集的規則條件**  

      在具有模糊條件的進階規則型比對中，系統會先根據完全相符將記錄分組為叢集。形成這些初始叢集後，系統會套用模糊比對篩選條件，以識別每個叢集中的其他相符項目。為了獲得最佳效能，您應該根據資料模式選取完全相符的條件，以建立定義明確的初始叢集。

      以下是規則條件的範例，將多個完全相符項目與模糊相符項目需求結合在一起。它使用`AND`運算子來檢查三個欄位 - `FullName`、出生日期 (`DOB`) 和 `Address`- 在記錄之間完全相符。它也允許使用 Levenshtein 距離的 `InternalID` 欄位中的次要變化`1`。Levenshtein 距離會測量將一個字串變更為另一個字串所需的單一字元編輯次數下限。距離 1 表示它將只比對一個字元 `InternalIDs` （例如單一錯別字、刪除或插入）。這種條件組合有助於識別非常可能代表相同實體的記錄，即使識別符中存在小差異。

      ```
      Exact(FullName) AND Exact(DOB) AND Exact(Address) and Levenshtein(InternalID, 1)
      ```

   1. 選擇**下一步**。

1. 針對**步驟 3：指定資料輸出和格式**：

   1. 針對**資料輸出目的地和格式**，選擇資料輸出的 **Amazon S3 位置**，以及**資料格式**是**標準化資料**還是**原始資料**。

   1. 對於**加密**，如果您選擇**自訂加密設定**，請輸入**AWS KMS 金鑰** ARN。

   1. 檢視**系統產生的輸出**。

   1. 對於**資料輸出**，決定您要包含、隱藏或遮罩哪些欄位，然後根據您的目標採取建議的動作。    
[See the AWS documentation website for more details](http://docs.aws.amazon.com/zh_tw/entityresolution/latest/userguide/rule-based-mw-advanced.html)

   1. 選擇**下一步**。

1. 針對**步驟 4：檢閱並建立**：

   1. 檢閱您針對先前步驟所做的選擇，並視需要編輯。

   1. 選擇 **Create and run (建立並執行)**。

      訊息隨即出現，指出已建立相符的工作流程，且任務已開始。

1. 在相符的工作流程詳細資訊頁面的**指標**索引標籤上，檢視**最後一個任務指標**下的下列項目：
   + **任務 ID**。
   + 相符工作流程任務**的狀態**：**已佇列**、**進行中**、**已完成**、**失敗** 
   + 工作流程任務的**完成時間**。
   + **處理的記錄**數量。
   + **未處理的記錄**數目。
   + **產生的唯一比對 IDs**。
   + **輸入記錄**的數量。

   您也可以檢視先前已在任務**歷史記錄**下執行之相符工作流程任務的任務指標。

1. 比對工作流程任務完成後 (**狀態**為**已完成**)，您可以前往**資料輸出**索引標籤，然後選取您的 **Amazon S3 位置**以檢視結果。

1. （僅限**手動**處理類型） 如果您已使用**手動**處理類型建立**規則型比對**工作流程，您可以在比對工作流程詳細資訊頁面上選擇**執行工作流程**，隨時執行比對工作流程。

1. （僅限**自動**處理類型） 如果您的資料表具有 DELETE 資料欄，則：
   + DELETE 欄中設定為 {{true}} 的記錄會被刪除。
   + DELETE 欄中設定為 {{false}} 的記錄會擷取至 S3。

   如需詳細資訊，請參閱[步驟 1：準備第一方資料表](prepare-input-data.md#prepare-first-party-tables)。

------
#### [ API ]

**使用 API 建立具有**進階**規則類型的規則型比對工作流程**
**注意**  
根據預設，工作流程會使用標準 （批次） 處理。若要使用增量 （自動處理，您必須明確設定。

1. 開啟終端機或命令提示以提出 API 請求。

1. 建立對下列端點的 POST 請求：

   ```
   /matchingworkflows
   ```

1. 在請求標頭中，將 Content-type 設定為 application/json。
**注意**  
如需支援程式設計語言的完整清單，請參閱 *[AWS Entity Resolution API 參考](https://docs.aws.amazon.com/entityresolution/latest/apireference/Welcome.html)*。

1. 針對請求內文，請提供下列必要的 JSON 參數：

   ```
   {
      "description": "{{string}}",
      "incrementalRunConfig": { 
         "incrementalRunType": "{{string}}"
      },
      "inputSourceConfig": [ 
         { 
            "applyNormalization": {{boolean}},
            "inputSourceARN": "{{string}}",
            "schemaName": "{{string}}"
         }
      ],
      "outputSourceConfig": [ 
         { 
            "applyNormalization": {{boolean}},
            "KMSArn": "{{string}}",
            "output": [ 
               { 
                  "hashed": boolean,
                  "name": "{{string}}"
               }
            ],
            "outputS3Path": "{{string}}"
         }
      ],
      "resolutionTechniques": { 
         "providerProperties": { 
            "intermediateSourceConfiguration": { 
               "intermediateS3Path": "{{string}}"
            },
            "providerConfiguration": {{JSON value}},
            "providerServiceArn": "{{string}}"
         },
         "resolutionType": "RULE_MATCHING",
         "ruleBasedProperties": { 
            "attributeMatchingModel": "{{string}}",
            "matchPurpose": "{{string}}",
            "rules": [ 
               { 
                  "matchingKeys": [ "{{string}}" ],
                  "ruleName": "{{string}}"
               }
            ]
         },
         "ruleConditionProperties": { 
            "rules": [ 
               { 
                  "condition": "{{string}}",
                  "ruleName": "{{string}}"
               }
            ]
         }
      },
      "roleArn": "{{string}}",
      "tags": { 
         "string" : "{{string}}" 
      },
      "workflowName": "{{{{string}}}}"
   }
   ```

   其中：
   + `workflowName` （必要） – 必須唯一且介於 1–255 個字元之間的相符模式 【a-zA-Z\_0-9-】\*
   + `inputSourceConfig` （必要） – 1–20 個輸入來源組態的清單
   + `outputSourceConfig` （必要） – 確切有一個輸出來源組態
   + `resolutionTechniques` （必要） – 設定為 "RULE\_MATCHING" 做為規則型比對的 resolutionType 
   + `roleArn` （必要） – 用於工作流程執行的 IAM 角色 ARN
   + `ruleConditionProperties` （必要） – 規則條件清單和相符規則的名稱。

   選用參數包括：
   + `description` – 最多 255 個字元
   + `incrementalRunConfig` – 增量執行類型組態
   + `tags` – 最多 200 個鍵值對

1. （選用） 若要使用增量處理而非預設標準 （批次） 處理，請將下列參數新增至請求內文：

   ```
   "incrementalRunConfig": {
      "incrementalRunType": "AUTOMATIC"
   }
   ```

1. 傳送 請求。

1. 如果成功，您會收到狀態碼為 200 的回應，以及包含下列項目的 JSON 內文：

   ```
   {
      "workflowArn": "string",
      "workflowName": "string",
      // Plus all configured workflow details
   }
   ```

1. 如果呼叫失敗，您可能會收到下列其中一個錯誤：
   + 400 – 如果工作流程名稱已存在，則為 ConflictException 
   + 400 – 如果輸入驗證失敗，則 ValidationException 
   + 402 – 如果超過帳戶限制，則超出 ExceedsLimitException 
   + 403 – 如果您沒有足夠的存取權，則為 AccessDeniedException 
   + 429 – 如果請求已調節，則 ThrottlingException 
   + 500 – 如果發生內部服務故障，則為 InternalServerException 

------