

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# 고급 규칙 유형을 사용하여 규칙 기반 일치 워크플로 생성
<a name="rule-based-mw-advanced"></a>

**사전 조건**

규칙 기반 매칭 워크플로를 생성하기 전에 다음을 수행해야 합니다.

1. 스키마 매핑을 생성합니다. 자세한 내용은 [스키마 매핑 생성](create-schema-mapping.md) 단원을 참조하십시오.

1. Connect Customer Profiles를 출력 대상으로 사용하는 경우 적절한 권한이 구성되어 있는지 확인합니다.

다음 절차에서는 AWS Entity Resolution 콘솔 또는 `CreateMatchingWorkflow` API를 사용하여 **고급** 규칙 유형을 사용하여 규칙 기반 일치 워크플로를 생성하는 방법을 보여줍니다.

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

**콘솔을 사용하여 **고급** 규칙 유형을 사용하여 규칙 기반 일치 워크플로를 생성하려면**

1. 에 로그인 AWS Management Console 하고 [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/ko_kr/entityresolution/latest/userguide/rule-based-mw-advanced.html)

   1. (선택 사항) 리소스에 대해 **태그를** 활성화하려면 **새 태그 추가**를 선택한 다음 **키** 및 **값** 페어를 입력합니다.

   1. **다음**을 선택합니다.

1. **2단계: 매칭 기법 선택**:

   1. **일치 방법**에서 **규칙 기반 일치**를 선택합니다.

   1. **규칙 유형**에서 **고급**을 선택합니다.  
![고급 규칙 기반 매칭 옵션을 선택한 상태에서 매칭 기법 화면을 선택합니다.](http://docs.aws.amazon.com/ko_kr/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/ko_kr/entityresolution/latest/userguide/rule-based-mw-advanced.html)  
**Example 전화번호 및 이메일과 일치하는 규칙 조건**  

      다음은 전화번호(**전화** 일치 키) 및 이메일 주소(**이메일 주소** 일치 키)의 레코드와 일치하는 규칙 조건의 예입니다.

      `Exact(Phone,EmptyValues=Process) AND Levenshtein("Email address",2)`  
![전화번호 및 이메일 주소의 레코드와 일치하는 규칙 조건의 예입니다.](http://docs.aws.amazon.com/ko_kr/entityresolution/latest/userguide/images/matching-rule-condition-example.png)

      **전화** 일치 키는 **정확한** 일치 함수를 사용하여 동일한 문자열을 일치시킵니다. **전화** 일치 키는 **EmptyValues=Process** modifier를 사용하여 일치하는 빈 값을 처리합니다.

      **이메일 주소** 일치 키는 **Levenshtein** 일치 함수를 사용하여 기본 Levenshtein 거리 알고리즘 임계값인 2를 사용하여 데이터를 오타와 일치시킵니다. **이메일** 일치 키는 선택적 한정자를 사용하지 않습니다.

      **AND** 연산자는 **정확한** 일치 함수와 **Levenshtein** 일치 함수를 결합합니다.  
**Example ExactManyToMany를 사용하여 매치키 매칭을 수행하는 규칙 조건**  

      다음은 세 개의 주소 필드(**HomeAddress** 일치 키, **BillingAddress** 일치 키 및 **ShippingAddress** 일치 키)의 레코드와 일치하는 규칙 조건의 예제로, 값이 동일한지 확인하여 잠재적 일치 항목을 찾습니다.

      연`ExactManyToMany`산자는 지정된 주소 필드의 가능한 모든 조합을 평가하여 둘 이상의 주소 간의 정확한 일치를 식별합니다. 예를 들어가 `BillingAddress` 또는와 `HomeAddress` 일치하는지 `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/ko_kr/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` (필수) - 고유해야 하며 [a-zA-Z\_0-9-]\*와 일치하는 패턴은 1\~255자여야 합니다.
   + `inputSourceConfig` (필수) - 1\~20개의 입력 소스 구성 목록
   + `outputSourceConfig` (필수) - 정확히 하나의 출력 소스 구성
   + `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 

------