View a markdown version of this page

AWS Glue DataBrew레시피 생성 및 사용 - AWS Glue DataBrew개발자 안내서

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

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 프로젝트 세션에 새 버전의 레시피를 게시합니다.

새 레시피 버전을 게시하려면
  1. 레시피 창에서 게시를 선택합니다.

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

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

레시피 구조 정의

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

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

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

레시피 가져오기, YAML로 다운로드, JSON으로 다운로드 옵션을 보여주는 추가 메뉴가 확장되었습니다.

다운로드한 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개 이상의 레시피 작업을 제공합니다. 자세한 내용은 레시피 단계 및 함수 참조 단원을 참조하십시오.

조건 사용

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

의 레시피 작업을 자세히 살펴보겠습니다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_EQUALLESS_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 - 열에 값이 없습니다.