

# 1단계. JSON 구성 파일 생성
<a name="custom-visual-transform-json-config-file"></a>

 JSON 구성 파일은 사용자 지정 시각적 변환을 정의하고 설명하는 데 필요합니다. 구성 파일의 스키마는 다음과 같습니다.

## JSON 파일 구조
<a name="custom-visual-transform-json-file-structure"></a>

 **필드** 
+  `name: string` - (필수) 변환을 식별하는 데 사용되는 변환 시스템 이름입니다. Python 변수 이름(식별자)에 설정된 것과 동일한 이름 지정 규칙을 따릅니다. 특히 문자 또는 밑줄로 시작하고 그 뒤에는 문자, 숫자 및/또는 밑줄로만 구성되어야 합니다.
+  `displayName: string` - (선택 사항) AWS Glue Studio 시각적 작업 편집기에 표시되는 변환의 이름입니다. `displayName`을 지정하지 않은 경우 `name`이 AWS Glue Studio에서 변환의 이름으로 사용됩니다.
+  `description: string` - (선택 사항) 변환 설명이 AWS Glue Studio에 표시되고 검색할 수 있습니다.
+  `functionName: string` - (필수) Python 함수 이름은 Python 스크립트에서 호출할 함수를 식별하는 데 사용됩니다.
+  `path: string` - (선택 사항) Python 소스 파일의 전체 Amazon S3 경로입니다. 지정하지 않은 경우 AWS Glue에서는 파일 이름 일치를 사용하여 .json 파일과 .py 파일을 함께 연결합니다. 예를 들어 `myTransform.json` JSON 파일은 동일한 Amazon S3 위치에 있는 Python 파일 `myTransform.py`와 연결됩니다.
+  `parameters: Array of TransformParameter object` - (선택 사항) AWS Glue Studio 시각적 편집기에서 파라미터를 구성할 때 표시할 파라미터 목록입니다.

<a name="transformparameter-fields"></a> **TransformParameter fields** 
+  `name: string` - (필수) Python 함수에 작업 스크립트에서 명명된 인수로 전달될 파라미터 이름입니다. Python 변수 이름(식별자)에 설정된 것과 동일한 이름 지정 규칙을 따릅니다. 특히 문자 또는 밑줄로 시작하고 그 뒤에는 문자, 숫자 및/또는 밑줄로만 구성되어야 합니다.
+  `displayName: string` - (선택 사항) AWS Glue Studio 시각적 작업 편집기에 표시되는 변환의 이름입니다. `displayName`을 지정하지 않은 경우 `name`이 AWS Glue Studio에서 변환의 이름으로 사용됩니다.
+  `type: string` - (필수) 일반적인 Python 데이터 유형을 허용하는 파라미터 유형입니다. 유효한 값: 'str' \$1 'int' \$1 'float' \$1 'list' \$1 'bool'.
+  `isOptional: boolean` - (선택 사항) 파라미터가 선택 사항인지 여부를 결정합니다. 기본적으로 모든 파라미터는 필수입니다.
+  `description: string` - (선택 사항) 사용자가 변환 파라미터를 구성하는 데 도움이 되는 설명이 AWS Glue Studio에 표시됩니다.
+  `validationType: string` - (선택 사항) 이 파라미터의 유효성을 검사하는 방법을 정의합니다. 현재는 정규 표현식만 지원합니다. 기본적으로 검증 유형은 `RegularExpression`으로 설정됩니다.
+  `validationRule: string` - (선택 사항) `validationType`을 `RegularExpression`으로 설정한 경우에 제출하기 전에 양식 입력을 검증하는 데 사용되는 정규 표현식입니다. 정규 표현식 구문은 [RegExp Ecmascript 사양](https://tc39.es/ecma262/multipage/text-processing.html#sec-regexp-regular-expression-objects)과 호환되어야 합니다.
+  `validationMessage: string` - (선택 사항) 검증에 실패한 경우에 표시할 메시지입니다.
+  `listOptions: An array of TransformParameterListOption object`, `string` 또는 문자열 값 'column' - (선택 사항) 선택 또는 다중 선택 UI 제어에 표시할 옵션입니다. 쉼표로 구분된 값 목록 또는 강력한 형식의 `TransformParameterListOption` JSON 객체 유형을 허용합니다. 또한 문자열 값 'column'을 지정하여 상위 노드 스키마의 열 목록을 동적으로 채울 수 있습니다.
+  `listType: string` - (선택 사항) type = 'list'에 대한 옵션 유형을 정의합니다. 유효한 값: 'str' \$1 'int' \$1 'float' \$1 'list' \$1 'bool'. 일반적인 Python 데이터 유형을 허용하는 파라미터 유형입니다.

 **TransformParameterListOption 필드** 
+  `value: string | int | float | bool` - (필수) 옵션 값입니다.
+  `label: string` - (선택 사항) 선택 드롭다운에 표시되는 옵션 레이블입니다.

## AWS Glue Studio의 파라미터 변환
<a name="custom-visual-transform-parameters"></a>

 .json 파일에 `isOptional`로 표시되지 않는 한 기본적으로 파라미터가 필요합니다. AWS Glue Studio에서는 파라미터가 **Transform**(변환) 탭에 표시됩니다. 이 예에서는 이메일 주소, 전화번호, 나이, 성별, 출신 국가와 같은 사용자 정의 파라미터를 보여줍니다.

![\[스크린샷은 선택한 사용자 지정 시각적 변환과 사용자 정의 파라미터가 있는 Transform(변환) 탭을 보여줍니다.\]](http://docs.aws.amazon.com/ko_kr/glue/latest/dg/images/dynamic-transform-parameters.png)


 `validationMessage`에서 `validationRule` 파라미터를 지정하고 검증 메시지를 지정하여 json 파일에서 정규 표현식을 통해 AWS Glue Studio에서 일부 검증을 적용할 수 있습니다.

```
      "validationRule": "^\\(?(\\d{3})\\)?[- ]?(\\d{3})[- ]?(\\d{4})$",
      "validationMessage": "Please enter a valid US number"
```

**참고**  
 검증은 브라우저에서 수행되므로 정규 표현식 구문은 [RegExp Ecmascript 사양](https://tc39.es/ecma262/multipage/text-processing.html#sec-regexp-regular-expression-objects)과 호환되어야 합니다. Python 구문은 이러한 정규 표현식에 지원되지 않습니다.

 검증을 추가하면 사용자가 잘못된 사용자 입력으로 작업을 저장하는 것을 방지할 수 있습니다. AWS Glue Studio에서는 예제에 표시된 대로 검증 메시지를 표시합니다.

![\[스크린샷은 검증 오류 메시지와 함께 사용자 지정 시각적 변환 파라미터를 보여줍니다. 유효한 이메일 주소를 입력하세요.\]](http://docs.aws.amazon.com/ko_kr/glue/latest/dg/images/dynamic-transform-validation-message.png)


 파라미터는 파라미터 구성에 따라 AWS Glue Studio에 표시됩니다.
+  `type`이 `str`, `int` 또는 `float`일 때 텍스트 입력 필드가 표시됩니다. 예를 들어 스크린샷은 'Email Address' 및 'Your age' 파라미터의 입력 필드를 보여줍니다.  
![\[스크린샷은 텍스트 입력 필드가 있는 사용자 지정 시각적 변환 파라미터를 보여줍니다.\]](http://docs.aws.amazon.com/ko_kr/glue/latest/dg/images/dynamic-transform-email-address.png)  
![\[스크린샷은 텍스트 입력 필드가 있는 사용자 지정 시각적 변환 파라미터를 보여줍니다.\]](http://docs.aws.amazon.com/ko_kr/glue/latest/dg/images/dynamic-transform-your-age.png)
+  `type`이 `bool`이면 확인란이 표시됩니다.  
![\[스크린샷은 텍스트 입력 필드가 있는 사용자 지정 시각적 변환 파라미터를 보여줍니다.\]](http://docs.aws.amazon.com/ko_kr/glue/latest/dg/images/dynamic-transform-bool.png)
+  `type`이 `str`이고 `listOptions`가 제공되면 단일 선택 목록이 표시됩니다.  
![\[스크린샷은 단일 선택 목록 드롭다운이 있는 사용자 지정 시각적 변환 파라미터를 보여줍니다.\]](http://docs.aws.amazon.com/ko_kr/glue/latest/dg/images/dynamic-transform-single-list.png)
+  `type`이 `list` 및 `listOptions`이고 `listType`이 제공되면 다중 선택 목록이 표시됩니다.  
![\[스크린샷은 목록 드롭다운이 있는 사용자 지정 시각적 변환 파라미터를 보여줍니다.\]](http://docs.aws.amazon.com/ko_kr/glue/latest/dg/images/dynamic-transform-list-options.png)

### 열 선택기를 파라미터로 표시
<a name="custom-visual-transform-parameters-column-selector"></a>

 구성 시 사용자가 스키마에서 열을 선택해야 하는 경우 열 선택기를 표시할 수 있습니다. 이 경우 사용자가 열 이름을 입력하지 않아도 됩니다. `listOptions` 필드를 'column'으로 설정하면 AWS Glue Studio에서는 상위 노드 출력 스키마를 기반으로 열 선택기를 표시합니다. AWS Glue Studio에서는 단일 또는 다중 열 선택기를 표시할 수 있습니다.

 다음 예제에서는 스키마를 사용합니다.

![\[스크린샷은 출력 스키마 샘플을 보여줍니다.\]](http://docs.aws.amazon.com/ko_kr/glue/latest/dg/images/custom-visual-transform-example-schema.png)


**단일 열을 표시하도록 사용자 지정 시각적 변환 파라미터를 정의하려면:**

1.  JSON 파일에서 `parameters` 객체의 `listOptions` 값을 'column'으로 설정합니다. 이렇게 하면 사용자가 AWS Glue Studio의 선택 목록에서 열을 선택할 수 있습니다.  
![\[스크린샷은 AWS Glue Studio에서 listOptions 파라미터가 'column'으로 설정된 JSON 샘플 파일과 그 결과로 나타나는 사용자 인터페이스를 보여줍니다.\]](http://docs.aws.amazon.com/ko_kr/glue/latest/dg/images/custom-visual-transform-example-listoptions-column.png)

1.  파라미터를 다음과 같이 정의하여 여러 열을 선택할 수도 있습니다.
   +  `listOptions: "column"` 
   +  `type: "list"`   
![\[스크린샷은 AWS Glue Studio에서 listOptions 파라미터가 'column'으로, 유형이 'list'로 설정된 JSON 샘플 파일과 그 결과로 나타나는 사용자 인터페이스를 보여줍니다.\]](http://docs.aws.amazon.com/ko_kr/glue/latest/dg/images/custom-visual-transform-example-listoptions-column-type-list.png)