기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
AWS Glue DataBrew레시피 생성 및 사용
DataBrew에서 레시피는 데이터 변환 단계 세트입니다. 이러한 단계를 데이터 샘플에 적용하거나 데이터 세트에 동일한 레시피를 적용할 수 있습니다.
레시피를 개발하는 가장 쉬운 방법은 데이터 샘플로 대화식으로 작업할 수 있는 DataBrew 프로젝트를 생성하는 것입니다. 자세한 내용은 섹션을 참조하세요AWS Glue DataBrew프로젝트 생성 및 사용. 프로젝트 생성 워크플로의 일부로 새 (비어 있는) 레시피가 생성되어 프로젝트에 연결됩니다. 그런 다음 데이터 변환을 추가하여 레시피 빌드를 시작할 수 있습니다.
참고
단일 DataBrew 레시피에 최대 100개의 데이터 변환을 포함할 수 있습니다.
레시피 개발을 진행하면서 레시피를 게시하여 작업을 저장할 수 있습니다. DataBrew는 레시피에 대해 게시된 버전 목록을 유지합니다. 레시피 작업에서 게시된 버전을 사용하여 레시피(레시피 작업)를 실행하여 데이터 세트를 변환할 수 있습니다. 레시피 단계의 사본을 다운로드하여 다른 프로젝트 또는 다른 데이터 세트 변환에서 레시피를 재사용할 수도 있습니다.
AWS Command Line Interface(AWS CLI) 또는 SDK 중 하나를 사용하여 프로그래밍 방식으로 DataBrew 레시피를 개발할 수도 있습니다.AWS SDKs DataBrew API에서 변환을 레시피 작업이라고 합니다.
참고
대화형 DataBrew 프로젝트 세션에서 적용하는 각 데이터 변환은 DataBrew API를 호출합니다. 이러한 API 호출은 behind-the-scenes 세부 정보를 알 필요 없이 자동으로 수행됩니다.
프로그래머가 아니더라도 레시피의 구조와 DataBrew가 레시피 작업을 구성하는 방법을 이해하는 것이 좋습니다.
새 레시피 버전 게시
대화형 DataBrew 프로젝트 세션에 새 버전의 레시피를 게시합니다.
새 레시피 버전을 게시하려면
-
레시피 창에서 게시를 선택합니다.
-
레시피의이 버전에 대한 설명을 입력하고 게시를 선택합니다.
탐색 창에서 PROJECTS를 선택하여 게시된 모든 레시피와 해당 버전을 볼 수 있습니다.
레시피 구조 정의
DataBrew 콘솔을 사용하여 프로젝트를 처음 생성할 때 해당 프로젝트와 연결할 레시피를 정의합니다. 기존 레시피가 없는 경우 콘솔에서 레시피를 생성합니다.
콘솔에서 프로젝트를 작업할 때 변환 도구 모음을 사용하여 데이터 세트의 샘플 데이터에 작업을 적용합니다. 레시피를 계속 빌드하면 콘솔에 레시피 단계와 해당 단계의 순서가 표시됩니다. 단계에 만족할 때까지 레시피를 반복하고 구체화할 수 있습니다.
에서는 레시피를 시작하기AWS Glue DataBrew빌드하여 유명한 체스 게임 데이터 세트를 변환합니다. 다음 스크린샷과 같이 JSON으로 다운로드 또는 YAML로 다운로드를 선택하여 레시피 단계의 사본을 다운로드할 수 있습니다.
다운로드한 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,resignoutoftime및 ) 값을 기반으로 행을 하위 그룹으로 정렬합니다draw. 마지막으로 각 하위 그룹에 대한 발생 횟수가 계산됩니다. 그러면 결과 요약이 원본 데이터 샘플을 대체합니다. -
REMOVE_VALUES- 로 종료된 게임의 결과를 삭제합니다draw. -
REPLACE_TEXT-의 값을 수정합니다victory_status. 이 작업에는mate,resign및에 대해 각각 하나씩 세 가지 발생이 있습니다oufoftime.
대화형 DataBrew 프로젝트 세션에서 각는 데이터 샘플에 적용하는 데이터 변환에 RecipeAction 해당합니다.
DataBrew는 200개 이상의 레시피 작업을 제공합니다. 자세한 내용은 레시피 단계 및 함수 참조 단원을 참조하십시오.
조건 사용
조건을 사용하여 레시피 작업의 범위를 좁힐 수 있습니다. 조건은 특정 열 값을 기반으로 원치 않는 행을 제거하는 등 데이터를 필터링하는 변환에 사용됩니다.
의 레시피 작업을 자세히 살펴보겠습니다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- 열에 값이 없습니다.