

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

# AWS Glue DataBrew레시피 생성 및 사용
<a name="recipes"></a>

DataBrew에서 *레시피*는 데이터 변환 단계 세트입니다. 이러한 단계를 데이터 샘플에 적용하거나 데이터 세트에 동일한 레시피를 적용할 수 있습니다.

레시피를 개발하는 가장 쉬운 방법은 데이터 샘플로 대화식으로 작업할 수 있는 DataBrew 프로젝트를 생성하는 것입니다. 자세한 내용은 섹션을 참조하세요[AWS Glue DataBrew프로젝트 생성 및 사용](projects.md). 프로젝트 생성 워크플로의 일부로 새 (비어 있는) 레시피가 생성되어 프로젝트에 연결됩니다. 그런 다음 데이터 변환을 추가하여 레시피 빌드를 시작할 수 있습니다.

**참고**  
단일 DataBrew 레시피에 최대 100개의 데이터 변환을 포함할 수 있습니다.

레시피 개발을 진행하면서 레시피*를 게시*하여 작업을 저장할 수 있습니다. DataBrew는 레시피에 대해 게시된 버전 목록을 유지합니다. 레시피 작업에서 게시된 버전을 사용하여 레시피(레시피 작업)를 실행하여 데이터 세트를 변환할 수 있습니다. 레시피 단계의 사본을 다운로드하여 다른 프로젝트 또는 다른 데이터 세트 변환에서 레시피를 재사용할 수도 있습니다.

AWS Command Line Interface(AWS CLI) 또는 SDK 중 하나를 사용하여 프로그래밍 방식으로 DataBrew 레시피를 개발할 수도 있습니다.AWS SDKs DataBrew API에서 변환을 *레시피 작업*이라고 합니다.

**참고**  
대화형 DataBrew 프로젝트 세션에서 적용하는 각 데이터 변환은 DataBrew API를 호출합니다. 이러한 API 호출은 behind-the-scenes 세부 정보를 알 필요 없이 자동으로 수행됩니다.

프로그래머가 아니더라도 레시피의 구조와 DataBrew가 레시피 작업을 구성하는 방법을 이해하는 것이 좋습니다.

**Topics**
+ [새 레시피 버전 게시](#recipes.publishing)
+ [레시피 구조 정의](#recipes.structure)

## 새 레시피 버전 게시
<a name="recipes.publishing"></a>

대화형 DataBrew 프로젝트 세션에 새 버전의 레시피를 게시합니다.

**새 레시피 버전을 게시하려면**

1. 레시피 창에서 **게시**를 선택합니다.

1. 레시피의이 버전에 대한 설명을 입력하고 **게시**를 선택합니다.

탐색 창에서 **PROJECTS**를 선택하여 게시된 모든 레시피와 해당 버전을 볼 수 있습니다.

## 레시피 구조 정의
<a name="recipes.structure"></a>

DataBrew 콘솔을 사용하여 프로젝트를 처음 생성할 때 해당 프로젝트와 연결할 레시피를 정의합니다. 기존 레시피가 없는 경우 콘솔에서 레시피를 생성합니다.

콘솔에서 프로젝트를 작업할 때 변환 도구 모음을 사용하여 데이터 세트의 샘플 데이터에 작업을 적용합니다. 레시피를 계속 빌드하면 콘솔에 레시피 단계와 해당 단계의 순서가 표시됩니다. 단계에 만족할 때까지 레시피를 반복하고 구체화할 수 있습니다.

에서는 레시피를 [시작하기AWS Glue DataBrew](getting-started.md)빌드하여 유명한 체스 게임 데이터 세트를 변환합니다. 다음 스크린샷과 같이 **JSON으로 다운로드** 또는** YAML로 다운로드**를 선택하여 레시피 단계의 사본을 다운로드할 수 있습니다.

![레시피 가져오기, YAML로 다운로드, JSON으로 다운로드 옵션을 보여주는 추가 메뉴가 확장되었습니다.](http://docs.aws.amazon.com/ko_kr/databrew/latest/dg/images/project-view-download-json.png)


다운로드한 JSON 파일에는 레시피에 추가한 변환에 해당하는 레시피 작업이 포함되어 있습니다.

새 레시피에는 단계가 없습니다. 다음과 같이 새 레시피를 빈 JSON 목록으로 나타낼 수 있습니다.

```
[ ]
```

다음은에 대한 이러한 파일의 예입니다`chess-project-recipe`. JSON 목록에는 레시피 단계를 설명하는 여러 객체가 포함되어 있습니다. JSON 목록의 각 객체는 중괄호()로 묶입니다`{ }`. JSON 줄은 쉼표로 구분됩니다.

```
[
    {
        "Action": {
            "Operation": "REMOVE_VALUES",
            "Parameters": {
                "sourceColumn": "black_rating"
            }
        },
        "ConditionExpressions": [
            {
                "Condition": "LESS_THAN",
                "Value": "1800",
                "TargetColumn": "black_rating"
            }
        ]
    },
    {
        "Action": {
            "Operation": "REMOVE_VALUES",
            "Parameters": {
                "sourceColumn": "white_rating"
            }
        },
        "ConditionExpressions": [
            {
                "Condition": "LESS_THAN",
                "Value": "1800",
                "TargetColumn": "white_rating"
            }
        ]
    },
    {
        "Action": {
            "Operation": "GROUP_BY",
            "Parameters": {
                "groupByAggFunctionOptions": "[{\"sourceColumnName\":\"winner\",\"targetColumnName\":\"winner_count\",\"targetColumnDataType\":\"int\",\"functionName\":\"COUNT\"}]",
                "sourceColumns": "[\"winner\",\"victory_status\"]",
                "useNewDataFrame": "true"
            }
        }
    },
    {
        "Action": {
            "Operation": "REMOVE_VALUES",
            "Parameters": {
                "sourceColumn": "winner"
            }
        },
        "ConditionExpressions": [
            {
                "Condition": "IS",
                "Value": "[\"draw\"]",
                "TargetColumn": "winner"
            }
        ]
    },
    {
        "Action": {
            "Operation": "REPLACE_TEXT",
            "Parameters": {
                "pattern": "mate",
                "sourceColumn": "victory_status",
                "value": "checkmate"
            }
        }
    },
    {
        "Action": {
            "Operation": "REPLACE_TEXT",
            "Parameters": {
                "pattern": "resign",
                "sourceColumn": "victory_status",
                "value": "other player resigned"
            }
        }
    },
    {
        "Action": {
            "Operation": "REPLACE_TEXT",
            "Parameters": {
                "pattern": "outoftime",
                "sourceColumn": "victory_status",
                "value": "ran out of time"
            }
        }
    }
]
```

다음과 같이 새 작업에 대한 새 줄만 추가하는 경우 각 작업이 개별 줄인지 확인하는 것이 더 쉽습니다.

```
[
 { "Action": { "Operation": "REMOVE_VALUES", "Parameters": { "sourceColumn": "black_rating" } }, "ConditionExpressions": [ { "Condition": "LESS_THAN", "Value": "1800", "TargetColumn": "black_rating" } ] },
 { "Action": { "Operation": "REMOVE_VALUES", "Parameters": { "sourceColumn": "white_rating" } }, "ConditionExpressions": [ { "Condition": "LESS_THAN", "Value": "1800", "TargetColumn": "white_rating" } ] },
 { "Action": { "Operation": "GROUP_BY", "Parameters": { "groupByAggFunctionOptions": "[{\"sourceColumnName\":\"winner\",\"targetColumnName\":\"winner_count\",\"targetColumnDataType\":\"int\",\"functionName\":\"COUNT\"}]", "sourceColumns": "[\"winner\",\"victory_status\"]", "useNewDataFrame": "true" } } },
 { "Action": { "Operation": "REMOVE_VALUES", "Parameters": { "sourceColumn": "winner" } }, "ConditionExpressions": [ { "Condition": "IS", "Value": "[\"draw\"]", "TargetColumn": "winner" } ] },
 { "Action": { "Operation": "REPLACE_TEXT", "Parameters": { "pattern": "mate", "sourceColumn": "victory_status", "value": "checkmate" } } },
 { "Action": { "Operation": "REPLACE_TEXT", "Parameters": { "pattern": "resign", "sourceColumn": "victory_status", "value": "other player resigned" } } },
 { "Action": { "Operation": "REPLACE_TEXT", "Parameters": { "pattern": "outoftime", "sourceColumn": "victory_status", "value": "ran out of time" } } }
]
```

작업은 파일에서와 동일한 순서로 순차적으로 수행됩니다.
+ `REMOVE_VALUES` - 플레이어의 평점이 1,800 미만인 모든 게임을 필터링하려면 클래스 A 체스 플레이어에 필요한 최소 평점이 필요합니다. 이 작업에는 두 가지가 있습니다. 하나는 적어도 클래스 A 플레이어가 아닌 검은색 측의 플레이어를 제거하는 것이고 다른 하나는이 레벨에 있지 않은 흰색 측의 플레이어를 제거하는 것입니다.
+ `GROUP_BY` - 데이터를 요약합니다. 이 경우 GROUP\_BY는 `winner` (`black` 및 ) 값을 기준으로 행을 그룹으로 정렬합니다`white`. 그런 다음 각 그룹을 더 세분화하여 `victory_status` (, `mate`, `resign` `outoftime`및 ) 값을 기반으로 행을 하위 그룹으로 정렬합니다`draw`. 마지막으로 각 하위 그룹에 대한 발생 횟수가 계산됩니다. 그러면 결과 요약이 원본 데이터 샘플을 대체합니다.
+ `REMOVE_VALUES` - 로 종료된 게임의 결과를 삭제합니다`draw`.
+ `REPLACE_TEXT` -의 값을 수정합니다`victory_status`. 이 작업에는 `mate`, `resign`및에 대해 각각 하나씩 세 가지 발생이 있습니다`oufoftime`.

대화형 DataBrew 프로젝트 세션에서 각는 데이터 샘플에 적용하는 데이터 변환에 `RecipeAction` 해당합니다.

DataBrew는 200개 이상의 레시피 작업을 제공합니다. 자세한 내용은 [레시피 단계 및 함수 참조](recipe-actions-reference.md) 단원을 참조하십시오.

### 조건 사용
<a name="recipe-actions.conditions"></a>

*조건을* 사용하여 레시피 작업의 범위를 좁힐 수 있습니다. 조건은 특정 열 값을 기반으로 원치 않는 행을 제거하는 등 데이터를 필터링하는 변환에 사용됩니다.

의 레시피 작업을 자세히 살펴보겠습니다`chess-project-recipe`.

```
  {
    "Action": {
      "Operation": "REMOVE_VALUES",
      "Parameters": {
        "sourceColumn": "black_rating"
      }
    },
    "ConditionExpressions": [
      {
        "Condition": "LESS_THAN",
        "Value": "1800",
        "TargetColumn": "black_rating"
      }
    ]
  }
```

이 변환은 `black_rating` 열의 값을 읽습니다. `ConditionExpressions` 목록에 따라 필터링 기준이 결정됩니다. `black_rating` 값이 1,800 미만인 행은 데이터 세트에서 제거됩니다.

레시피의 후속 변환은에 대해 동일한 작업을 수행합니다`white_rating`. 이러한 방식으로 데이터는 각 플레이어(검은색 또는 흰색)가 클래스 A 이상으로 평가되는 게임으로 제한됩니다.

다음은 문자 데이터 열에 적용되는 조건의 또 다른 예입니다.

```
  {
    "Action": {
      "Operation": "REMOVE_VALUES",
      "Parameters": {
        "sourceColumn": "winner"
      }
    },
    "ConditionExpressions": [
      {
        "Condition": "IS",
        "Value": "[\"draw\"]",
        "TargetColumn": "winner"
      }
    ]
  }
```

이 변환은 `winner` 열의 값을 읽고 값을 찾아 해당 행을 `draw` 제거합니다. 이러한 방식으로 데이터는 명백한 우승자가 있는 게임으로만 제한됩니다.

DataBrew는 다음 조건을 지원합니다.
+ `IS` - 열의 값은 조건에 제공된 값과 동일합니다.
+ `IS_NOT` - 열의 값이 조건에 제공된 값과 동일하지 않습니다.
+ `IS_BETWEEN` - 열의 값은 `GREATER_THAN_EQUAL`와 `LESS_THAN_EQUAL` 파라미터 사이입니다.
+ `CONTAINS` - 열의 문자열 값에는 조건에 제공된 값이 포함됩니다.
+ `NOT_CONTAINS` - 열의 값에 조건에 제공된 문자열이 포함되지 않습니다.
+ `STARTS_WITH` - 열의 값은 조건에 제공된 문자열로 시작합니다.
+ `NOT_STARTS_WITH` - 열의 값은 조건에 제공된 문자열로 시작하지 않습니다.
+ `ENDS_WITH` - 열의 값은 조건에 제공된 문자열로 끝납니다.
+ `NOT_ENDS_WITH` - 열의 값은 조건에 제공된 문자열로 끝나지 않습니다.
+ `LESS_THAN` - 열의 값이 조건에 제공된 값보다 작습니다.
+ `LESS_THAN_EQUAL` - 열의 값이 조건에 제공된 값보다 작거나 같습니다.
+ `GREATER_THAN` - 열의 값이 조건에 제공된 값보다 큽니다.
+ `GREATER_THAN_EQUAL` - 열의 값이 조건에 제공된 값보다 크거나 같습니다.
+ `IS_INVALID` - 열의 값에 잘못된 데이터 형식이 있습니다.
+ `IS_MISSING` - 열에 값이 없습니다.