

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# 高度なルールタイプを使用したルールベースのマッチングワークフローの作成
<a name="rule-based-mw-advanced"></a>

**前提条件**

ルールベースのマッチングワークフローを作成する前に、以下を行う必要があります。

1. スキーママッピングを作成します。詳細については、「[スキーママッピングの作成](create-schema-mapping.md)」を参照してください。

1. Amazon Connect Customer Profiles を出力先として使用する場合は、適切なアクセス許可が設定されていることを確認してください。

次の手順は、 AWS Entity Resolution コンソールまたは `CreateMatchingWorkflow` API を使用して、**アドバンス**トルールタイプでルールベースのマッチングワークフローを作成する方法を示しています。

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

**コンソールを使用して**アドバンス**トルールタイプでルールベースのマッチングワークフローを作成するには**

1. にサインイン AWS マネジメントコンソール し、[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/ja_jp/entityresolution/latest/userguide/rule-based-mw-advanced.html)

   1. (オプション) リソース**のタグ**を有効にするには、**新しいタグを追加**を選択し、**キー**と**値の**ペアを入力します。

   1. [**次へ**] を選択します。

1. **ステップ 2: 一致する手法を選択する**には:

   1. **マッチングメソッド**で、**ルールベースのマッチング**を選択します。

   1. **ルールタイプ**で、**詳細** を選択します。  
![高度なルールベースのマッチングオプションを選択したマッチング手法画面を選択します。](http://docs.aws.amazon.com/ja_jp/entityresolution/latest/userguide/images/choose-matching-method-rule-based-advanced.PNG)

   1. **Processing cadence **で、次のいずれかのオプションを選択します。
      + **手動**を選択して、一括更新のワークフローをオンデマンドで実行する 
      + **自動** を選択して、新しいデータが S3 バケットに保存されたらすぐにワークフローを実行します。
**注記**  
**自動** を選択した場合は、S3 バケットに対して Amazon EventBridge 通知が有効になっていることを確認します。S3 コンソールを使用して Amazon EventBridge を有効にする手順については、「Amazon S3 ユーザーガイド」の「Amazon [ EventBridge の有効化](https://docs.aws.amazon.com/AmazonS3/latest/userguide/enable-event-notifications-eventbridge.html)」を参照してください。 *Amazon S3 *

   1. **一致するルール**には、**ルール名**を入力し、目標に基づいてドロップダウンリストから適切な一致する関数と演算子を選択して**ルール条件**を構築します。

      最大 25 個のルールを作成できます。

      **AND** 演算子を使用して、あいまい一致関数 (**Cosine**、**Levenshtein**、または **Soundex**) と完全に一致する関数 (**Exact**、**ExactManyToMany**) を組み合わせる必要があります。

      以下の表を使用して、目標に応じて使用する関数または演算子のタイプを決定できます。    
[See the AWS documentation website for more details](http://docs.aws.amazon.com/ja_jp/entityresolution/latest/userguide/rule-based-mw-advanced.html)  
**Example 電話番号と E メールに一致するルール条件**  

      以下は、電話番号 (**電話**一致キー) と E メールアドレス (**E メールアドレス**一致キー) のレコードに一致するルール条件の例です。

      `Exact(Phone,EmptyValues=Process) AND Levenshtein("Email address",2)`  
![電話番号と E メールアドレスのレコードに一致するルール条件の例。](http://docs.aws.amazon.com/ja_jp/entityresolution/latest/userguide/images/matching-rule-condition-example.png)

      **電話**一致キーは、**完全**一致関数を使用して同一の文字列を一致させます。**電話**一致キーは、**EmptyValues=Process** 修飾子を使用して、一致の空の値を処理します。

      **E メールアドレス**一致キーは、**Levenshtein** マッチング関数を使用して、デフォルトの Levenshtein Distance アルゴリズムしきい値 2 を使用してデータをスペルミスと照合します。E **メール**一致キーは、オプションの修飾子を使用しません。

      **AND** 演算子は、**完全**一致関数と **Levenshtein** 一致関数を組み合わせます。  
**Example ExactManyToMany を使用してマッチキーマッチングを実行するルール条件**  

      以下は、3 つのアドレスフィールド (**HomeAddress** 一致キー、**BillingAddress** 一致キー、および **ShippingAddress** 一致キー) のレコードに一致するルール条件の例です。いずれかのレコードに同じ値があるかどうかを確認します。

      `ExactManyToMany` 演算子は、指定されたアドレスフィールドの可能なすべての組み合わせを評価して、2 つ以上のアドレス間の完全一致を特定します。たとえば、 が `BillingAddress`または `HomeAddress`に一致するかどうか`ShippingAddress`、または 3 つのアドレスすべてが正確に一致するかどうかを検出します。

      ```
      ExactManyToMany(HomeAddress, BillingAddress, ShippingAddress)
      ```  
**Example クラスタリングを使用するルール条件**  

      あいまいな条件での高度なルールベースのマッチングでは、システムは完全一致に基づいて最初にレコードをクラスターにグループ化します。これらの初期クラスターが作成されると、システムはあいまい一致フィルターを適用して、各クラスター内の追加の一致を特定します。最適なパフォーマンスを得るには、データパターンに基づいて完全一致条件を選択して、明確に定義された初期クラスターを作成する必要があります。

      以下は、複数の完全一致とあいまい一致要件を組み合わせたルール条件の例です。`AND` 演算子を使用して、、生年月日 (`DOB`)`FullName`、および `Address` の 3 つのフィールドがレコード間で正確に一致することを確認します。また、 の Levenshtein 距離を使用して、 `InternalID`フィールドのわずかなバリエーションも可能です`1`。Levenshtein の距離は、ある文字列を別の文字列に変更するために必要な 1 文字の編集の最小数を測定します。距離が 1 の場合、一致する`InternalIDs`文字は 1 文字だけ異なります (1 つのタイプミス、削除、挿入など）。この条件の組み合わせは、識別子にわずかな不一致があっても、同じエンティティを表す可能性が非常に高いレコードを識別するのに役立ちます。

      ```
      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/ja_jp/entityresolution/latest/userguide/rule-based-mw-advanced.html)

   1. [**次へ**] を選択します。

1. **ステップ 4: 確認して作成する**:

   1. 前のステップで行った選択内容を確認し、必要に応じて編集します。

   1. **Create and run** を選択します。

      一致するワークフローが作成され、ジョブが開始されたことを示すメッセージが表示されます。

1. 一致するワークフローの詳細ページで、**メトリクス**タブで、**「最後のジョブメトリクス**」の下に以下を表示します。
   + **ジョブ ID**。
   + 一致するワークフロージョブ**のステータス**: **Queued**、**In progress**、**Completed**、**Failed** 
   + ワークフロージョブ**の完了時刻**。
   + **処理されたレコード**の数。
   + **処理されていないレコード**の数。
   + **生成された一意の一致 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` (必須) – 一意で、パターン [a-zA-Z\_0-9-] に一致する 1～255 文字である必要があります\*
   + `inputSourceConfig` (必須) – 1～20 個の入力ソース設定のリスト
   + `outputSourceConfig` (必須) — 正確に 1 つの出力ソース設定
   + `resolutionTechniques` (必須) – ルールベースのマッチングの resolutionType として「RULE\_MATCHING」に設定する
   + `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 

------