

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

# Amazon SageMaker Data Wrangler로 ML 데이터 준비하기
<a name="data-wrangler"></a>

**중요**  
Amazon SageMaker Data Wrangler가 Amazon SageMaker Canvas에 통합되었습니다. SageMaker Canvas의 새로운 Data Wrangler 경험에서는 자연어 인터페이스를 사용하여 시각적 인터페이스 외에도 데이터를 탐색하고 변환할 수 있습니다. SageMaker Canvas의 Data Wrangler에 대한 자세한 내용은 [데이터 준비](canvas-data-prep.md) 섹션을 참조하세요.

Amazon SageMaker Data Wrangler(Data Wrangler)는 데이터 가져오기, 준비, 변환, 특성화, 분석에 대한 엔드투엔드 솔루션을 제공하는 Amazon SageMaker Studio Classic의 기능입니다. 사용자는 Data Wrangler 데이터 준비 플로우를 기계 학습(ML) 워크플로에 통합하여 코딩을 거의 또는 전혀 사용하지 않고도 데이터 사전 처리 및 특성 추출을 단순화하고 간소화할 수 있습니다. 나만의 Python 스크립트와 변환을 추가하여 워크플로를 사용자 지정할 수도 있습니다.

Data Wrangler는 기계 학습 애플리케이션에 사용할 데이터를 분석하고 준비하는 데 도움이 되는 다음과 같은 핵심 기능을 제공합니다.
+ **가져오기** - Amazon Simple Storage Service(Amazon S3), Amazon Athena (Athena), Amazon Redshift, Snowflake 및 Databricks에 연결하고 데이터를 가져옵니다.
+ **데이터 플로우** - 데이터 플로우를 생성하여 일련의 ML 데이터 준비 단계를 정의합니다. 사용자는 플로우를 사용하여 다양한 데이터 소스의 데이터세트를 결합하고, 데이터세트에 적용할 변환의 수와 유형을 식별하고, ML 파이프라인에 통합할 수 있는 데이터 준비 워크플로를 정의할 수 있습니다.
+ **변환** - 문자열, 벡터, 숫자 데이터 형식 지정 도구와 같은 표준 변환을 사용하여 데이터세트를 정리하고 변환합니다.** 텍스트, 날짜/시간 임베딩, 범주형 인코딩과 같은 변환을 사용하여 데이터를 특징화할 수 있습니다.
+ **데이터 인사이트 생성** - Data Wrangler Data Insights 및 Quality Report를 사용하여 데이터 품질을 자동으로 확인하고 데이터의 이상 항목을 감지합니다.
+ **분석** - 플로우의 어느 시점에서든 데이터세트의 특징을 분석할 수 있습니다. Data Wrangler에는 산점 및 히스토그램과 같은 기본 제공 데이터 시각화 도구뿐만 아니라 대상 누 분석 및 특징 상관 관계를 파악하기 위한 빠른 모델링과 같은 데이터 분석 도구가 포함되어 있습니다.
+ **내보내기** - 데이터 준비 워크플로를 다른 위치로 내보냅니다. 다음은 예제 위치입니다.
  + Amazon Simple Storage Service(S3) 버킷
  + Amazon SageMaker Pipelines - Pipelines을 사용하여 모델 배포를 자동화할 수 있습니다. 사용자는 변환한 데이터를 파이프라인으로 직접 내보낼 수 있습니다.
  + Amazon SageMaker Feature Store - 기능과 해당 데이터를 중앙 집중식 스토어에 저장합니다.
  + Python 스크립트 - 사용자 지정 워크플로를 위해 데이터와 해당 변환을 Python 스크립트에 저장합니다.

Data Wrangler 사용을 시작하려면 [Data Wrangler 시작하기](data-wrangler-getting-started.md)을 참고하세요.

**중요**  
Data Wrangler는 더 이상 Jupyter Lab 버전 1(JL1)을 지원하지 않습니다. 최신 기능 및 업데이트를 이용하려면 Jupyter Lab 버전 3으로 업데이트하세요. 업그레이드에 대한 자세한 내용은 [콘솔에서 JupyterLab 버전의 애플리케이션 보기 및 업데이트](studio-jl.md#studio-jl-view) 섹션을 참조하세요.

**중요**  
이 설명서의 정보 및 절차는 Amazon SageMaker Studio Classic의 최신 버전을 사용합니다. Studio Classic을 최신 버전으로 업데이트하는 방법에 대한 자세한 정보는 [Amazon SageMaker Studio Classic UI 개요](studio-ui.md) 섹션을 참조하세요.

Studio Classic 버전은 1.3.0 이상을 사용해야 합니다. 다음 절차를 사용하여 Amazon SageMaker Studio Classic을 열고 실행 중인 버전을 확인하세요.

Studio Classic을 열고 버전을 확인하려면 다음 절차를 참조하세요.

1. [사전 조건](data-wrangler-getting-started.md#data-wrangler-getting-started-prerequisite)의 단계를 사용하여 Amazon SageMaker Studio Classic을 통해 Data Wrangler에 액세스할 수 있습니다.

1. Studio Classic 시작 시 사용하고자 하는 사용자 옆에서 **앱 시작**을 선택합니다.

1. **Studio**를 선택합니다.

1. Studio Classic이 로드되면 **파일**, **새로 만들기**, **터미널** 순서로 선택합니다.  
![\[4단계에 설명된 Studio Classic 컨텍스트 메뉴 옵션입니다.\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/images/studio/mohave/terminal.png)

1. Studio Classic을 시작한 후 **파일**, **새로 만들기**, **터미널** 순서로 선택합니다.

1. Studio Classic 인스턴스의 버전을 인쇄하려면 `cat /opt/conda/share/jupyter/lab/staging/yarn.lock | grep -A 1 "@amzn/sagemaker-ui-data-prep-plugin@"`을 입력합니다. Snowflake를 사용하려면 먼저 Studio Classic 버전 1.3.0이 있어야 합니다.  
![\[6단계의 명령을 복사하여 붙여넣어 Studio Classic에서 열린 터미널 창입니다.\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/images/studio/mohave/cat-command.png)

사용자는 AWS Management Console에서 Amazon SageMaker Studio Classic을 업데이트할 수 있습니다. Studio Classic에 대한 자세한 내용은 [Amazon SageMaker Studio Classic UI 개요](studio-ui.md) 섹션을 참조하세요.

**Topics**
+ [Data Wrangler 시작하기](data-wrangler-getting-started.md)
+ [가져오기](data-wrangler-import.md)
+ [Data Wrangler 흐름을 생성합니다.](data-wrangler-data-flow.md)
+ [데이터 및 데이터 품질에 대한 인사이트 확보](data-wrangler-data-insights.md)
+ [데이터 플로우에서 모델 자동 훈련하기](data-wrangler-autopilot.md)
+ [데이터 변환하기](data-wrangler-transform.md)
+ [분석 및 시각화](data-wrangler-analyses.md)
+ [다양한 데이터세트에 데이터 흐름 재사용](data-wrangler-parameterize.md)
+ [내보내기](data-wrangler-data-export.md)
+ [데이터 인사이트를 얻기 위해 Amazon SageMaker Studio Classic 노트북의 대화형 데이터 준비 위젯 사용](data-wrangler-interactively-prepare-data-notebook.md)
+ [보안 및 권한](data-wrangler-security.md)
+ [릴리스 정보](data-wrangler-release-notes.md)
+ [문제 해결](data-wrangler-trouble-shooting.md)
+ [Amazon EC2 인스턴스 제한 상향](data-wrangler-increase-instance-limit.md)
+ [Data Wrangler 업데이트](data-wrangler-update.md)
+ [Data Wrangler 종료](data-wrangler-shut-down.md)

# Data Wrangler 시작하기
<a name="data-wrangler-getting-started"></a>

Amazon SageMaker Data Wrangler는 Amazon SageMaker Studio Classic의 기능입니다. 이 섹션을 통해 Data Wrangler에 액세스하고 Data Wrangler를 시작하는 방법을 알아보세요. 해결 방법:

1. [사전 조건](#data-wrangler-getting-started-prerequisite)의 각 단계를 완료합니다.

1. [Data Wrangler 액세스](#data-wrangler-getting-started-access)에 있는 절차에 따라 Data Wrangler 사용을 시작하세요.

## 사전 조건
<a name="data-wrangler-getting-started-prerequisite"></a>

Data Wrangler를 사용하기 전에 다음과 같은 사전 조건을 완료해야 합니다.

1. Data Wrangler를 사용하기 위해서는 Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스에 액세스할 수 있어야 합니다. 사용할 수 있는 Amazon EC2 인스턴스에 대한 자세한 내용은 [인스턴스](data-wrangler-data-flow.md#data-wrangler-data-flow-instances) 섹션을 참조하세요. 할당량을 확인하고, 필요한 경우, 할당량 증가를 요청하는 방법을 알아보려면 [AWS 서비스 할당량](https://docs.aws.amazon.com/general/latest/gr/aws_service_limits.html)을 참조하세요.

1. [보안 및 권한](data-wrangler-security.md)에 설명된 필요한 권한을 구성합니다.

1. 조직에서 인터넷 트래픽을 차단하는 방화벽을 사용하는 경우 다음 URL에 액세스할 수 있어야 합니다.
   + `https://ui.prod-1.data-wrangler.sagemaker.aws/`
   + `https://ui.prod-2.data-wrangler.sagemaker.aws/`
   + `https://ui.prod-3.data-wrangler.sagemaker.aws/`
   + `https://ui.prod-4.data-wrangler.sagemaker.aws/`

Data Wrangler를 사용하려면 활성 Studio Classic 인스턴스가 필요합니다. 새 인스턴스를 시작하는 방법을 알아보려면 [Amazon SageMaker AI 도메인 개요](gs-studio-onboard.md)을 참조하세요. Studio Classic 인스턴스가 **준비 완료** 상태이면 [Data Wrangler 액세스](#data-wrangler-getting-started-access)의 지침을 사용하세요.

## Data Wrangler 액세스
<a name="data-wrangler-getting-started-access"></a>

다음 절차는 이미 [사전 조건](#data-wrangler-getting-started-prerequisite)을 완료한 것으로 가정합니다.

Studio Classic에서 Data Wrangler에 액세스하려면 다음을 수행하세요.

1. Studio Classic에 로그인합니다. 자세한 내용은 [Amazon SageMaker AI 도메인 개요](gs-studio-onboard.md) 단원을 참조하십시오.

1. **Studio**를 선택합니다.

1. **Launch app**(앱 시작)을 선택합니다.

1. 드롭다운 목록에서 **Studio를** 선택합니다.

1. 홈 아이콘을 선택합니다.

1. **Data**(데이터)를 선택합니다.

1. **Data Wrangler**를 선택합니다.

1. 또한 다음을 수행하여 Data Wrangler 흐름을 만들 수도 있습니다.

   1. 상단의 탐색 모음에서 **File**(파일)을 선택합니다.

   1. **New**(새 파일)를 선택합니다.

   1. **Data Wrangler Flow**를 선택합니다.  
![\[Studio Classic 콘솔의 홈 탭입니다.\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/images/studio/mohave/new-flow-file-menu.png)

1. (선택 사항) 새 디렉터리와 .flow 파일의 이름을 변경합니다.

1. Studio Classic에서 새 .flow 파일을 만들면 Data Wrangler를 소개하는 캐러셀이 표시될 수 있습니다.

   **몇 분 정도 소요될 수 있습니다.**

   이 메시지는 **User Details**(사용자 세부 정보) 페이지의 **KernelGateway** 앱이 **보류 중인 한** 지속됩니다. 이 앱의 상태를 확인하려면 **Amazon SageMaker Studio Classic** 페이지의 SageMaker AI 콘솔에서 Studio Classic에 액세스하는 데 사용하는 사용자 이름을 선택합니다. **User Details**(사용자 세부 정보) 페이지에서 **Apps**(앱) 아래에 **KernelGateway** 앱이 있습니다. 이 앱 상태가 Data Wrangler 사용을 시작할 **Ready**(준비) 될 때까지 기다리세요. Data Wrangler를 처음 시작할 때는 5분 정도 걸릴 수 있습니다.  
![\[사용자 세부 정보 페이지에서 KernelGateway 앱 상태가 준비 완료임을 보여주는 예시입니다.\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/images/studio/mohave/gatewayKernel-ready.png)

1. 시작하려면 데이터 소스를 선택하고 이를 사용하여 데이터세트를 가져오세요. 자세한 내용은 [가져오기](data-wrangler-import.md) 섹션을 참조하세요.

   데이터세트를 가져오면 데이터 흐름에 나타납니다. 자세한 내용은 [Data Wrangler 흐름을 생성합니다.](data-wrangler-data-flow.md) 섹션을 참조하세요.

1. 데이터세트를 가져오면 Data Wrangler는 각 열의 데이터 유형을 자동으로 유추합니다. **Data types**(데이터 유형) 단계 옆의 **\$1**를 선택하고 **Edit data types**(데이터 유형 편집)을 선택합니다.
**중요**  
**Data types**(데이터 유형) 단계에 변환을 추가한 후에는 **Update types**(유형 업데이트)을 사용하여 열 유형을 일괄 업데이트할 수 없습니다.

1. 데이터 흐름을 사용하여 변환과 분석을 추가할 수 있습니다. 자세한 내용은 [데이터 변환하기](data-wrangler-transform.md) 및 [분석 및 시각화](data-wrangler-analyses.md) 섹션을 참조하세요.

1. 전체 데이터 흐름을 내보내려면 **Export**(내보내기)를 선택하고 내보내기 옵션을 선택합니다. 자세한 내용은 [내보내기](data-wrangler-data-export.md) 섹션을 참조하세요.

1. 마지막으로 **Components and registries**(구성 요소 및 레지스트리) 아이콘을 선택하고 드롭다운 목록에서 **Data Wrangler**를 선택하여 생성한 모든 .flow 파일을 확인합니다. 이 메뉴를 사용하여 데이터 흐름을 찾고 데이터 흐름 간에 이동할 수 있습니다.

Data Wrangler를 시작한 후에는 다음 섹션을 사용하여 Data Wrangler를 사용하여 ML 데이터 준비 흐름을 만드는 방법을 살펴볼 수 있습니다.

## Data Wrangler 업데이트
<a name="data-wrangler-update-studio-app"></a>

Data Wrangler Studio Classic 앱을 정기적으로 업데이트하여 최신 기능 및 업데이트에 액세스하는 것이 좋습니다. Data Wrangler 앱 이름은 **sagemaker-data-wrang**으로 시작합니다. Studio Classic 앱을 업데이트하는 방법을 알아보려면 [Amazon SageMaker Studio Classic 앱 종료 및 업데이트](studio-tasks-update-apps.md) 섹션을 참조하세요.

## 데모: Data Wrangler 타이타닉 데이터세트 둘러보기
<a name="data-wrangler-getting-started-demo"></a>

다음 섹션에서는 Data Wrangler 사용을 시작하는 데 도움이 되는 설명을 제공합니다. 이 연습에서는 사용자가 이미 [Data Wrangler 액세스](#data-wrangler-getting-started-access)에 있는 단계를 수행했고 데모에 사용할 새 데이터 흐름 파일이 열려 있다고 가정합니다. 이 .flow 파일의 이름을 `titanic-demo.flow`와 비슷한 이름으로 바꿀 수도 있습니다.

이 안내에서는 [Titanic 데이터세트](https://s3.us-west-2.amazonaws.com/amazon-sagemaker-data-wrangler-documentation-artifacts/walkthrough_titanic.csv)를 사용합니다. 이는 [Titanic 데이터세트](https://www.openml.org/d/40945)의 수정된 버전으로, Data Wrangler 플로우로 더 쉽게 가져올 수 있습니다. 이 데이터세트에는 1912년의 *RMS Titanic*(타이타닉호)의 첫 항해에 탑승한 승객의 생존 상태, 연령, 성별, 등급(경제적 지위를 나타내는 지표)이 포함되어 있습니다.

이 자습서에서는 다음 단계를 수행합니다.

1. 다음 중 하나를 수행하세요.
   + Data Wrangler 플로우를 열고 **Use Sample Dataset**(샘플 데이터세트 사용)을 선택합니다.
   + [Titanic Dataset](https://s3.us-west-2.amazonaws.com/amazon-sagemaker-data-wrangler-documentation-artifacts/walkthrough_titanic.csv)(타이타닉 데이터세트)를 Amazon Simple S3(Amazon S3)에 업로드한 이 데이터세트를 Data Wrangler로 가져옵니다.

1. Data Wrangler analyses(분석)을 사용하여 이 데이터세트를 분석하세요.

1. Data Wrangler data transforms(데이터 변환)을 사용하여 데이터 흐름을 정의합니다.

1. 흐름을 Jupyter Notebook으로 내보내 Data Wrangler 작업을 생성하는 데 사용할 수 있습니다.

1. 데이터를 처리하고 SageMaker 훈련 작업을 시작하여 XGBoost Binary Classifier(바이너리 분류기)를 훈련시키세요.

### 데이터세트를 S3에 업로드하고 가져오기
<a name="data-wrangler-getting-started-demo-import"></a>

시작하려면 다음 방법 중 하나를 사용하여 타이타닉 데이터세트를 Data Wrangler로 가져올 수 있습니다.
+ Data Wrangler 플로우에서 직접 데이터세트 가져오기
+ Amazon S3에 데이터세트를 업로드한 다음 Data Wrangler로 가져오기

데이터세트를 Data Wrangler로 직접 가져오려면 흐름을 열고 **Use Sample Dataset**(샘플 데이터세트 사용)을 선택합니다.

Amazon S3에 데이터세트를 업로드하고 Data Wrangler로 가져오는 것은 자체 데이터를 가져오는 것과 비슷합니다. 다음 정보는 데이터세트를 업로드하고 가져오는 방법을 알려줍니다.

Data Wrangler로 데이터를 가져오기 전에 [타이타닉 데이터세트](https://s3.us-west-2.amazonaws.com/amazon-sagemaker-data-wrangler-documentation-artifacts/walkthrough_titanic.csv)를 다운로드하고 이 데모를 완료하려는 AWS 지역의 Amazon S3 (Amazon S3) 버킷에 업로드하세요.

Amazon S3를 처음 사용하는 경우 Amazon S3 콘솔에서 드래그 앤 드롭을 사용하여 이 작업을 수행할 수 있습니다. 방법을 알아보려면 Simple Storage Service User Guide 사용 설명서의 [Uploading Files and Folders by Using Drag and Drop](https://docs.aws.amazon.com/AmazonS3/latest/user-guide/upload-objects.html#upload-objects-by-drag-and-drop)(드래그 앤 드롭을 사용한 파일 및 폴더 업로드)를 참조하세요.

**중요**  
이 데모를 완료하는 데 사용할 리전과 동일한 AWS 리전의 S3 버킷에 데이터 세트를 업로드합니다.

데이터세트가 Amazon S3에 성공적으로 업로드되면 Data Wrangler로 가져올 수 있습니다.

**타이타닉 데이터세트를 Data Wrangler로 가져오기**

1. **Data flow**(데이터 흐름) 탭에서 **Import data**(데이터 가져오기) 버튼을 선택하거나 **Import**(가져오기) 탭을 선택합니다.

1. **Amazon S3**를 선택합니다.

1. **Import a dataset from S3**(S3에서 데이터세트 가져오기) 테이블을 사용하여 타이타닉 데이터세트를 추가한 버킷을 찾을 수 있습니다. 타이타닉 데이터세트 CSV 파일을 선택하여 **Details**(세부 정보) 창을 엽니다.

1. **Derails**(세부 정보)에서 **File type**(파일 유형)은 CSV여야 합니다. **First row is header**(첫 번째 행 헤더)를 지정하여 데이터세트의 첫 번째 행이 헤더인지 확인합니다. **Titanic-train**와 같이 데이터세트에 좀 더 친숙한 이름을 지정할 수도 있습니다.

1. **Import**(가져오기) 버튼을 선택합니다.

데이터세트를 Data Wrangler로 가져오면 **Data Flow**(데이터 흐름) 탭에 나타납니다. 노드를 두 번 클릭하여 변환 또는 분석을 추가할 수 있는 노드 세부 정보 보기로 들어갈 수 있습니다. 더하기 아이콘을 사용하여 탐색에 빠르게 액세스할 수 있습니다. 다음 섹션에서는 이 데이터 흐름을 사용하여 분석 및 변환 단계를 추가합니다.

### 데이터 흐름
<a name="data-wrangler-getting-started-demo-data-flow"></a>

데이터 흐름 섹션에서 데이터 흐름의 유일한 단계는 최근에 가져온 데이터세트와 **Data type**(데이터 유형) 단계입니다. 변환을 적용한 후 이 탭으로 돌아와서 데이터 흐름이 어떻게 되는지 확인할 수 있습니다. 이제 **Prepare**(준비) 및 **Analyze**(분석) 탭 아래에서 몇 가지 기본 변환을 추가합니다.

#### 준비 및 시각화
<a name="data-wrangler-getting-started-demo-prep-visualize"></a>

Data Wrangler에는 데이터를 분석, 정리 및 변환하는 데 사용할 수 있는 변환 및 시각화 기능이 내장되어 있습니다.

노드 세부 정보 보기의 **Data**(데이터) 탭에는 오른쪽 패널에 모든 내장 변환이 나열되며, 이 패널에는 사용자 지정 변환을 추가할 수 있는 영역도 포함되어 있습니다. 다음 사용 사례는 이러한 변환을 사용하는 방법을 보여줍니다.

데이터 탐색과 기능 엔지니어링에 도움이 될 만한 정보를 얻으려면 데이터 품질 및 인사이트 보고서를 만드세요. 보고서의 정보는 데이터를 정리하고 처리하는 데 도움이 될 수 있습니다. 이는 누락된 값의 갯수, 이상치 수 등의 정보를 제공합니다. 대상 누출 또는 불균형과 같은 데이터 관련 문제가 있는 경우 인사이트 보고서를 통해 이러한 문제를 파악할 수 있습니다. 보고서 생성에 대한 자세한 내용은 [데이터 및 데이터 품질에 대한 인사이트 확보](data-wrangler-data-insights.md) 섹션을 참조하세요.

##### 데이터 탐색
<a name="data-wrangler-getting-started-demo-explore"></a>

먼저 분석을 사용하여 데이터 요약 표를 생성합니다. 해결 방법:

1. 데이터 흐름의 **Data types**(데이터 유형) 옆에 있는 **\$1**를 선택하고 **Add analysis**(분석 추가)를 선택합니다.

1. **Analysis**(분석) 영역의 드롭다운 목록에서 **Table summary**(표 요약)을 선택합니다.

1. 표 요약에 **Naame**(이름)을 지정합니다.

1. 생성될 테이블을 미리 보려면 **Preview**(미리보기)를 선택합니다.

1. **Save**(저장)을 선택하여 데이터 흐름에 저장합니다. 표 요약이 **All Analyses**(모든 분석)에 표시됩니다.

표시되는 통계를 사용하여 이 데이터세트에 대해 다음과 유사한 관찰을 할 수 있습니다.
+ 평균 운임(평균)은 약 33달러이고, 최고 요금은 500달러를 넘습니다. 이 열에는 특이치가 있을 수 있습니다.
+ 이 데이터세트는 *?*를 사용하여 누락된 값을 표시합니다. *cabin*(객실), *embarked*(승선 여부), *home.dest*(집.목적지) 등 여러 열에 누락된 값이 있습니다
+ age(연령) 카테고리에 250개 이상의 값이 누락되었습니다.

다음으로, 이러한 통계에서 얻은 인사이트를 사용하여 데이터를 정리합니다.

##### 미사용 열 삭제
<a name="data-wrangler-getting-started-demo-drop-unused"></a>

이전 섹션의 분석을 바탕으로 데이터세트를 정리하여 훈련에 사용할 준비를 합니다. 데이터 흐름에 새 변환을 추가하려면 데이터 흐름에서 **Data type**(데이터 유형) 단계 옆에 있는 **\$1**를 선택하고 **Add transform**(변환 추가)를 선택합니다.

먼저 훈련에 사용하지 않을 열을 삭제합니다. [pandas](https://pandas.pydata.org/) 데이터 분석 라이브러리를 사용하여 이 작업을 수행하거나 내장된 변환 중 하나를 사용할 수 있습니다.

다음 절차에 따라 미사용 열을 삭제합니다.

사용하지 않는 열을 삭제하려면.

1. Data Wrangler 흐름을 엽니다.

1. Data Wrangler 흐름에는 두 개의 노드가 있습니다. **Data types**(데이터 유형) 노드 오른쪽에 있는 **\$1**를 선택합니다.

1. **변환 추가(Add transform)**를 선택합니다.

1. **All steps**(모든 단계) 열에서 **Add step**(단계 추가)를 선택합니다.

1. **Stanard**(표준) 변환 목록에서 **Manage Columns**(열 관리)를 선택합니다. 표준 변환은 미리 만들어진 기본 제공 변환입니다. **Drop column**(열 삭제)가 선택되어 있는지 확인하세요.

1. **Columns to drop**(삭제할 열)에서 다음 열 이름을 확인합니다.
   + cabin(객실)
   + ticket(티켓)
   + name(이름)
   + sibsp
   + parch(파치)
   + home.dest(집.목적지)
   + boat(보트)
   + body(시신)

1. **Preview**(미리 보기)를 선택합니다.

1. 열이 삭제되었는지 확인한 다음 **Add**(추가)를 선택합니다.

pandas를 이용하여 이를 실행하려면 다음 단계를 따릅니다.

1. **All steps**(모든 단계) 열에서 **Add step**(단계 추가)를 선택합니다.

1. **Custom transform**(사용자 지정) 변환 목록에서 **Custom transform**(사용자 지정 변환)을 선택합니다.

1. 변환의 이름을 입력하고 드롭다운 목록에서 **Python (Pandas)**을 선택합니다.

1. 코드 상자에 다음 Python 스크립트를 입력합니다.

   ```
   cols = ['name', 'ticket', 'cabin', 'sibsp', 'parch', 'home.dest','boat', 'body']
   df = df.drop(cols, axis=1)
   ```

1. **Preview**(미리 보기)를 선택하여 변경 내용을 미리 본 다음 **Add**(추가)를 선택하여 변환을 추가합니다.

##### 누락된 값 정리
<a name="data-wrangler-getting-started-demo-missing-vals"></a>

이제 누락된 값을 정리합니다. **Handling missing values**(누락된 값 처리) 변환 그룹을 사용하여 이 작업을 수행할 수 있습니다.

여러 열에 누락된 값이 있습니다. 나머지 열 중 *age*(연령) 및 *fare*(운임)에 누락된 값이 있습니다. **Custom Transform**(사용자 지정 변환)을 사용하여 이를 검사합니다.

**Python(Pandas)** 옵션을 사용 시 다음을 사용하여 각 열의 항목 수를 빠르게 검토할 수 있습니다.

```
df.info()
```

![\[각 열의 항목 수 미리 보기 예시입니다.\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/images/studio/mohave/inspect-missing-pandas.png)


*age*(연령) 카테고리에서 누락된 값이 있는 행을 삭제하려면 다음과 같이 하세요.

1. **누락 처리(Handle missing)**를 선택합니다.

1. **트랜스포머**에서 **누락 시 삭제**를 선택합니다.

1. *age*(연령)을 **input column**(입력 열)로 선택합니다.

1. **Preview**(미리 보기)를 선택하여 새 데이터 프레임을 확인한 다음 **Add**(추가)를 선택하여 흐름에 변환을 추가합니다.

1. *fare*(운임)에 동일한 프로세스를 반복합니다.

**Custom transform**(사용자 지정 변환) 섹션의 `df.info()`을/를 사용하여 행에 모두 1,045개의 값이 있는지 확인할 수 있습니다.

##### 사용자 지정 Pandas: 인코딩
<a name="data-wrangler-getting-started-demo-encode"></a>

Pandas를 사용하여 플랫 인코딩을 시도해 보세요. 카테고리 데이터 인코딩은 범주를 수치로 표현하는 과정입니다. 예를 들어, 범주가 `Dog`과 `Cat`인 경우, 이 정보를 `Dog`를 대표하는 `[1,0]`으로 그리고 `Cat`을 대표하는 `[0,1]`의 두 벡터로 인코딩할 수 있습니다.

1. **Custom Transform**(사용자 지정 변환) 섹션의 드롭다운 목록에서 **Python (Pandas)**를 선택합니다.

1. 코드 상자에 다음을 입력합니다.

   ```
   import pandas as pd
   
   dummies = []
   cols = ['pclass','sex','embarked']
   for col in cols:
       dummies.append(pd.get_dummies(df[col]))
       
   encoded = pd.concat(dummies, axis=1)
   
   df = pd.concat((df, encoded),axis=1)
   ```

1. 변경 내용을 미리 보려면 **Preview**(미리 보기)를 선택합니다. 각 열의 인코딩된 버전이 데이터세트에 추가됩니다.

1. **Add**(추가)를 선택하여 변환을 추가합니다.

#### 사용자 지정 SQL: 열 선택
<a name="data-wrangler-getting-started-demo-sql"></a>

이제 SQL을 계속 사용하려는 열을 선택합니다. 이 데모에서는 다음의 `SELECT` 설명문에 나열된 열을 선택하세요. *survived*(생존)은 훈련 대상 열이므로 이 열을 먼저 넣으세요.

1. **Custom Transform**(사용자 지정 변환) 섹션의 드롭다운 목록에서 **SQL (PySpark SQL)**을 선택합니다.

1. 코드 상자에 다음을 입력합니다.

   ```
   SELECT survived, age, fare, 1, 2, 3, female, male, C, Q, S FROM df;
   ```

1. 변경 내용을 미리 보려면 **Preview**(미리 보기)를 선택합니다. `SELECT` 설명문에 나열된 열만 남아 있습니다.

1. **Add**(추가)를 선택하여 변환을 추가합니다.

### Data Wrangler 노트북으로 내보내기
<a name="data-wrangler-getting-started-export"></a>

데이터 흐름 생성을 완료하면 다양한 내보내기 옵션을 사용할 수 있습니다. 다음 섹션에서는 Data Wrangler 작업 노트북으로 내보내는 방법을 설명합니다. Data Wrangler 작업은 데이터 흐름에 정의된 단계를 사용하여 데이터를 처리하는 데 사용됩니다. 모든 내보내기 옵션에 대한 자세한 내용은 [내보내기](data-wrangler-data-export.md) 섹션을 참조하세요.

#### Data Wrangler 작업 노트북으로 내보내기
<a name="data-wrangler-getting-started-export-notebook"></a>

**Data Wrangler job**(Data Wrangler 작업)을 사용하여 데이터 흐름을 내보내면 프로세스에서 자동으로 Jupyter notebook을 만듭니다. 이 노트북은 Studio Classic 인스턴스에서 자동으로 열리고 SageMaker Processing 작업을 실행하여 Data Wrangler 데이터 흐름을 실행하도록 구성되어 있으며, 이를 Data Wrangler 작업이라고 합니다.

1. 데이터 흐름을 저장합니다. **File**(파일)을 선택한 다음 **Save Data Wrangler Flow**(Data Wrangler 플로우 저장)을 선택합니다.

1. **Data Flow**(데이터 흐름) 탭으로 돌아가서 데이터 흐름(SQL)의 마지막 단계를 선택한 다음 **\$1**를 선택하여 탐색을 엽니다.

1. **Export**(내보내기)를 선택하고 **Amazon S3 (via Jupyter Notebook)**(Jupyter notebook 사용)을 선택합니다. Jupyter notebook이 열립니다.  
![\[Data Wrangler 콘솔의 데이터 흐름 탭에서 탐색을 여는 방법을 보여주는 예시입니다.\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/images/studio/mohave/export-select-step.png)

1. **Kernel**(커널)에 사용할 **Python 3 (Data Science)**(데이터 과학) 커널을 선택합니다.

1. 커널이 시작되면 **Kick off SageMaker Training Job**(SageMaker 훈련 작업 시작)(선택 사항)까지 노트북 북의 셀을 실행합니다.

1. 선택적으로, XGBoost 분류자를 훈련하기 위한 SageMaker AI 훈련 작업을 생성하려는 경우 **SageMaker 훈련 작업 시작**(선택 사항)의 셀을 실행할 수 있습니다. [Amazon SageMaker Pricing](https://aws.amazon.com/sagemaker/pricing/)(요금)에서 SageMaker 훈련 작업을 실행하는 데 드는 비용을 확인할 수 있습니다.

   또는 노트북에 있는 [XGBoost 분류자 훈련시키기](#data-wrangler-getting-started-train-xgboost)의 코드 블록을 추가하고 이를 실행하여 [XGBoost](https://xgboost.readthedocs.io/en/latest/) 오픈 소스 라이브러리를 사용하여 XGBoost 분류자를 훈련할 수 있습니다.

1. **Cleanup**(클린업) 셀의 주석 처리를 제거하고 실행합니다. 이를 실행하여 SageMaker Python SDK를 원래 버전으로 되돌립니다.

SageMaker 콘솔의 **처리 중** 탭에서 Data Wrangler 작업 상태를 모니터링할 수 있습니다. 또한 Amazon CloudWatch를 사용하여 Data Wrangler 작업을 모니터링할 수 있습니다. 자세한 내용은 [CloudWatch 로그 및 지표를 사용하여 Amazon SageMaker 처리 중 작업 모니터링](https://docs.aws.amazon.com/sagemaker/latest/dg/processing-job.html#processing-job-cloudwatch)을 참조하세요.

훈련 작업을 시작한 경우 SageMaker 콘솔에서 **훈련 섹션**의 **훈련 작업** 아래에서 작업 상태를 모니터링할 수 있습니다.

#### XGBoost 분류자 훈련시키기
<a name="data-wrangler-getting-started-train-xgboost"></a>

Jupyter notebook 또는 Amazon SageMaker Autopilot을 사용하여 XGBoost 바이너리 분류자를 훈련시킬 수 있습니다. Autopilot을 사용하면 Data Wrangler 흐름에서 직접 변환한 데이터를 기반으로 모델을 자동으로 훈련시키고 조정할 수 있습니다. Autopilot에 대한 자세한 내용은 [데이터 플로우에서 모델 자동 훈련하기](data-wrangler-autopilot.md) 섹션을 참조하세요.

Data Wrangler 작업을 시작한 동일한 노트북에서 최소한의 데이터 준비로 준비된 데이터를 이용해 XGBoost 바이너리 분류자를 훈련시킬 수 있습니다.

1. 먼저 필요한 모듈을 `pip`를 이용해 업그레이드하고 \$1SUCCESS 파일을 제거합니다 (이 마지막 파일은 `awswrangler`의 사용 시 문제가 됩니다).

   ```
   ! pip install --upgrade awscli awswrangler boto sklearn
   ! aws s3 rm {output_path} --recursive  --exclude "*" --include "*_SUCCESS*"
   ```

1. Amazon S3에서 데이터 읽기. `awswrangler`를 사용하여 S3 접두사를 가진 모든 CSV 파일을 반복적으로 읽을 수 있습니다. 그런 다음 데이터가 기능과 레이블로 분할됩니다. 레이블은 데이터프레임의 첫 번째 열입니다.

   ```
   import awswrangler as wr
   
   df = wr.s3.read_csv(path=output_path, dataset=True)
   X, y = df.iloc[:,:-1],df.iloc[:,-1]
   ```
   + 마지막으로 DMatrices(데이터에 대한 XGBoost 기본 구조)를 만들고 XGBoost 바이너리 분류자를 사용하여 교차 검증을 수행합니다.

     ```
     import xgboost as xgb
     
     dmatrix = xgb.DMatrix(data=X, label=y)
     
     params = {"objective":"binary:logistic",'learning_rate': 0.1, 'max_depth': 5, 'alpha': 10}
     
     xgb.cv(
         dtrain=dmatrix, 
         params=params, 
         nfold=3,
         num_boost_round=50,
         early_stopping_rounds=10,
         metrics="rmse", 
         as_pandas=True, 
         seed=123)
     ```

#### Data Wrangler 종료
<a name="data-wrangler-getting-started-shut-down"></a>

Data Wrangler 사용을 마치면 추가 요금이 발생하지 않도록 Data Wrangler가 실행되는 인스턴스를 종료하는 것이 좋습니다. Data Wrangler 앱 및 관련 인스턴스를 종료하는 방법을 알아보려면 [Data Wrangler 종료](data-wrangler-shut-down.md) 섹션을 참조하세요.

# 가져오기
<a name="data-wrangler-import"></a>

Amazon SageMaker Data Wrangler로 데이터를 가져올 수 있는 데이터 소스는 Amazon Simple Storage Service(S3), Amazon Athena, Amazon Redshift, Snowflake입니다.** 가져오는 데이터세트는 최대 1000개의 열을 포함할 수 있습니다.

**Topics**
+ [Amazon S3에서 데이터 가져오기](#data-wrangler-import-s3)
+ [Athena에서 데이터 가져오기](#data-wrangler-import-athena)
+ [Amazon Redshift에서 데이터 가져오기](#data-wrangler-import-redshift)
+ [Amazon EMR에서 데이터 가져오기](#data-wrangler-emr)
+ [Data Bricks에서 데이터 가져오기(JDBC)](#data-wrangler-databricks)
+ [Salesforce 데이터 클라우드에서 데이터를 가져옵니다.](#data-wrangler-import-salesforce-data-cloud)
+ [Snowflake에서 데이터 가져오기](#data-wrangler-snowflake)
+ [서비스형 소프트웨어(SaaS) 플랫폼에서 데이터 가져오기](#data-wrangler-import-saas)
+ [가져온 데이터 스토리지](#data-wrangler-import-storage)

일부 데이터 소스에서는 여러 데이터 연결을 추가할 수 있습니다.**
+ 여러 Amazon Redshift 클러스터에 연결할 수 있습니다. 각 클러스터는 데이터 소스가 됩니다.
+ 사용자 계정의 Athena 데이터베이스를 쿼리하여 해당 데이터베이스에서 데이터를 가져올 수 있습니다.



데이터 소스에서 가져온 데이터세트는 데이터 흐름에 나타납니다. Data Wrangler는 데이터세트에 있는 각 열의 데이터 유형을 자동으로 유추합니다. 데이터 유형을 수정하려면, **데이터 유형(Data types)** 단계를 선택하고 **데이터 유형 편집(Edit data types)**을 선택합니다.

Athena 또는 Amazon Redshift에서 데이터를 가져오면 가져온 데이터가 Studio Classic을 사용하는 AWS 리전의 기본 SageMaker AI S3 버킷에 자동으로 저장됩니다. 또한 Athena는 Data Wrangler에서 미리 보는 데이터를 이 버킷에 저장합니다. 자세한 내용은 [가져온 데이터 스토리지](#data-wrangler-import-storage) 단원을 참조하세요.

**중요**  
기본 Amazon S3 버킷에는 버킷 정책, 서버측 암호화(SSE)와 같은 최소 허용 보안 설정이 없을 수 있습니다. [Data Wrangler로 가져온 데이터세트에 대한 액세스를 제한하는 버킷 정책을 추가](https://docs.aws.amazon.com/sagemaker/latest/dg/data-wrangler-security.html#data-wrangler-security-bucket-policy)할 것을 적극 권장합니다.

**중요**  
또한 SageMaker AI용 관리형 정책을 사용하는 경우, 사용 사례를 수행할 수 있는 가장 제한적인 정책으로 범위를 좁힐 것을 적극 권장합니다. 자세한 내용은 [Data Wrangler를 사용할 수 있는 IAM 역할 권한 부여](data-wrangler-security.md#data-wrangler-security-iam-policy) 단원을 참조하십시오.

Amazon Simple Storage Service(S3)를 제외한 모든 데이터 소스에서는 데이터를 가져오기 위해 SQL 쿼리를 지정해야 합니다. 개별 쿼리에 대해 다음을 지정해야 합니다.
+ **데이터 카탈로그**
+ **데이터베이스**
+ **표**

드롭다운 메뉴나 쿼리 내에서 데이터베이스 또는 데이터 카탈로그 이름을 지정할 수 있습니다. 다음은 쿼리 예제입니다.
+ `select * from example-data-catalog-name.example-database-name.example-table-name` - 이 쿼리는 사용자 인터페이스(UI)의 드롭다운 메뉴에 지정된 항목을 사용하여 실행하지 않습니다. `example-table-name`을(를) `example-database-name` 내(`example-data-catalog-name` 내)에서 쿼리합니다.
+ `select * from example-database-name.example-table-name` - 이 쿼리는 **데이터 카탈로그** 드롭다운 메뉴에서 실행하도록 지정한 데이터 카탈로그를 사용합니다. 지정한 데이터 카탈로그 내에서 `example-table-name`을(를) `example-database-name` 내에서 쿼리합니다.
+ `select * from example-table-name` - 이 쿼리를 실행하려면 **데이터 카탈로그**와 **데이터베이스 이름** 드롭다운 메뉴 모두에 대한 필드를 선택해야 합니다. `example-table-name`을 데이터베이스 내 데이터 카탈로그와 지정한 데이터 카탈로그 내에서 쿼리합니다.

Data Wrangler와 데이터 소스 간 링크는 연결입니다.** 연결을 사용하여 데이터 소스에서 데이터를 가져올 수 있습니다.

연결 유형은 다음과 같습니다.
+ 직접
+ 카탈로그화

Data Wrangler는 항상 직접 연결을 통해 최신 데이터에 액세스할 수 있습니다. 데이터 소스의 데이터가 업데이트된 경우, 연결을 사용하여 데이터를 가져올 수 있습니다. 예를 들어, Amazon S3 버킷 중 하나에 파일을 추가한 경우 파일을 가져올 수 있습니다.

카탈로그화 연결은 데이터 전송의 결과입니다. 카탈로그화 연결의 데이터가 반드시 최신 데이터를 포함할 필요는 없습니다. 예를 들어, Salesforce와 Amazon S3 간에 데이터 전송을 설정할 수 있습니다. Salesforce 데이터가 업데이트된 경우 데이터를 다시 전송해야 합니다. 데이터 전송 프로세스를 자동화할 수 있습니다. 데이터 전송에 대한 자세한 내용은 [서비스형 소프트웨어(SaaS) 플랫폼에서 데이터 가져오기](#data-wrangler-import-saas) 섹션을 참조하세요.

## Amazon S3에서 데이터 가져오기
<a name="data-wrangler-import-s3"></a>

Amazon Simple Storage Service(S3)를 사용하면 인터넷을 통해 언제 어디서든 원하는 양의 데이터를 저장하고 검색할 수 있습니다. 간단하고 직관적인 웹 인터페이스 AWS Management Console인 및 Amazon S3 API를 사용하여 이러한 작업을 수행할 수 있습니다. 데이터세트를 로컬에 저장한 경우, Data Wrangler로 가져오기 위해 S3 버킷에 추가할 것을 권장합니다. 추가 방법은 Amazon Simple Storage Service 사용 설명서에 있는 [버킷에 객체 업로드하기](https://docs.aws.amazon.com/AmazonS3/latest/gsg/PuttingAnObjectInABucket.html)에서 확인하세요.

Data Wrangler에서 [S3 Select](https://aws.amazon.com/s3/features/#s3-select)를 사용하면 Data Wrangler에 있는 Amazon S3 파일을 미리 볼 수 있습니다. 미리보기한 파일 별로 표준 요금이 부과됩니다. 요금에 대한 자세한 내용은 **요청 및 데이터 검색** 탭([Amazon S3 요금](https://aws.amazon.com/s3/pricing/))에서 확인하세요.

**중요**  
데이터 흐름을 내보내고 Data Wrangler 작업을 시작하거나, SageMaker AI 특성 저장소로 데이터를 수집하거나, SageMaker AI 파이프라인을 생성하려는 경우 이러한 통합을 위해서는 Amazon S3 입력 데이터가 동일한 AWS 리전에 있어야 합니다.

**중요**  
CSV 파일을 가져오는 경우 다음 요구 사항을 충족하는지 확인하세요.  
데이터세트에 있는 레코드는 한 줄을 초과할 수 없습니다.
백슬래시(`\`)가 유일한 유효 이스케이프 문자입니다.
데이터세트는 다음 구분자 중 하나를 사용해야 합니다.  
쉼표 - `,`
콜론 - `:`
세미콜론 - `;`
파이프 - `|`
탭 - `[TAB]`
공간을 절약하기 위해 압축된 CSV 파일을 가져올 수 있습니다.

Data Wrangler로 전체 데이터 세트를 가져오거나 일부만 샘플링할 수 있습니다. Amazon S3의 샘플링 옵션은 다음과 같습니다.
+ 없음(None) - 전체 데이터 세트 가져오기.
+ 첫 K(First K) - 데이터세트의 첫 K개 행 샘플링. K는 사용자가 지정한 정수.
+ 무작위(Randomized) - 지정된 크기의 무작위 샘플 추출.
+ 계층화(Stratified) - 계층화된 무작위 샘플 추출. 계층화된 샘플은 열의 값 비율을 유지합니다.

데이터를 가져온 후 샘플링 변환기로 전체 데이터세트에서 하나 이상의 데이터를 취할 수 있습니다. 샘플링 변환기에 대한 자세한 내용은 [샘플링](data-wrangler-transform.md#data-wrangler-transform-sampling) 섹션을 참조하세요.

다음 리소스 식별자 중 하나로 데이터를 가져올 수 있습니다.
+ Amazon S3 버킷이나 Amazon S3 액세스 포인트를 사용하는 Amazon S3 URI
+ Amazon S3 액세스 포인트 별칭
+ Amazon S3 액세스 포인트나 Amazon S3 버킷을 사용하는 Amazon 리소스 이름(ARN)

Amazon S3 액세스 포인트는 버킷에 연결된 명명된 네트워크 엔드포인트입니다. 각 액세스 포인트에는 사용자 구성 가능한 고유한 권한 및 네트워크 제어가 있습니다. 액세스 포인트에 대한 자세한 정보는 [Amazon S3 액세스 포인트로 데이터 액세스 관리하기](https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-points.html)에서 확인하세요.

**중요**  
Amazon 리소스 이름(ARN)을 사용하여 데이터를 가져오는 경우 Amazon SageMaker Studio Classic에 액세스하는 데 사용하는 AWS 리전 것과 동일한에 있는 리소스에 대한 것이어야 합니다.

단일 파일 또는 다중 파일을 데이터세트로 가져올 수 있습니다. 데이터세트가 별도 파일로 파티셔닝된 경우 다중 파일 가져오기가 가능합니다. Amazon S3 디렉터리에 있는 모든 파일을 단일 데이터세트로 가져옵니다. 가져올 수 있는 파일 유형과 파일을 가져오는 방법에 대한 정보는 다음에서 확인하세요.

------
#### [ Single File Import ]

단일 파일은 다음 형식으로 가져올 수 있습니다.
+ 쉼표로 구분된 값(CSV)
+ PARQUET
+ JavaScript Object Notation(JSON)
+ Optimized Row Columnar(ORC)
+ 이미지 - Data Wrangler는 OpenCV를 사용하여 이미지를 가져옵니다. 지원되는 이미지 형식에 대한 자세한 정보는 [이미지 파일 읽기 및 쓰기](https://docs.opencv.org/3.4/d4/da8/group__imgcodecs.html#ga288b8b3da0892bd651fce07b3bbd3a56)에서 확인하세요.

JSON으로 포맷된 파일의 경우 Data Wrangler는 JSON 라인(.jsonl)과 JSON 문서(.json)를 모두 지원합니다. 데이터를 미리 보면 자동으로 JSON이 표 형식으로 표시됩니다. 5MB를 초과하는 중첩된 JSON 문서의 경우 Data Wrangler는 구조 스키마와 배열을 데이터세트 값으로 표시합니다. **구조화 평탄화(Flatten structured)** 및 **배열 분해(Explode array)** 연산자로 중첩된 값을 표 형식으로 표시할 수 있습니다. 자세한 내용은 [JSON 데이터 중첩 해제](data-wrangler-transform.md#data-wrangler-transform-flatten-column) 및 [배열 분해](data-wrangler-transform.md#data-wrangler-transform-explode-array) 섹션을 참조하세요.

데이터세트를 선택하여 이름을 바꾸고, 파일 유형을 지정하고, 첫 번째 행을 헤더로 식별할 수 있습니다.

Amazon S3 버킷에서 여러 파일로 파티셔닝한 데이터세트를 한 번의 가져오기 단계로 가져올 수 있습니다.

**Amazon S3에 저장한 단일 파일에서 데이터세트를 Data Wrangler로 가져오려면**

1. 현재 위치가 **가져오기(Import)** 탭이 아닌 경우, **가져오기**를 선택합니다.

1. **사용 가능(Available)** 아래에서 **Amazon S3**를 선택합니다.

1. **S3에서 표, 이미지, 시계열 데이터 가져오기(Import tabular, image, or time-series data from S3)**에서 다음 중 한 가지를 실행합니다.
   + 표 형식 보기에서 Amazon S3 버킷을 선택하고 가져오려는 파일로 이동합니다.
   + **S3 원본(S3 source)**에서 Amazon S3 버킷 또는 Amazon S3 URI를 지정하고 **이동(Go)**을 선택합니다. Amazon S3 URI의 형식은 다음 중 하나일 수 있습니다.
     + `s3://amzn-s3-demo-bucket/example-prefix/example-file`
     + *example-access-point*-*aqfqprnstn7aefdfbarligizwgyfouse1a*-s3alias/datasets/*example-file*
     + `s3://arn:aws:s3:AWS-Region:111122223333:accesspoint/example-prefix/example-file`

1. 데이터세트를 선택하여 **가져오기 설정(Import settings)** 창을 엽니다.

1. CSV 파일에 헤더가 있는 경우, **표에 헤더 추가(Add header to table)** 옆 확인란을 선택합니다.

1. **미리보기(Preview)** 표로 데이터세트를 미리 볼 수 있습니다. 이 테이블에는 최대 100개의 행이 표시됩니다.

1. **세부정보(Details)** 창에서 데이터 세트 **이름(Name)** 및 **파일 유형(File Type)**을 확인하거나 변경합니다. 공백이 포함된 **이름** 추가 시, 데이터세트를 가져올 때 공백이 밑줄로 바뀝니다.

1. 사용하려는 샘플링 구성을 지정합니다.

1. **가져오기**를 선택합니다.

------
#### [ Multifile Import ]

다음은 다중 파일 가져오기에 대한 요구 사항입니다.
+ 파일은 Amazon S3 버킷과 동일한 폴더에 있어야 합니다.
+ 파일은 동일한 헤더를 공유하거나 헤더가 없어야 합니다.

개별 파일은 다음 중 한 가지 형식이어야 합니다.
+ CSV
+ PARQUET
+ Optimized Row Columnar(ORC)
+ 이미지 - Data Wrangler는 OpenCV를 사용하여 이미지를 가져옵니다. 지원되는 이미지 형식에 대한 자세한 정보는 [이미지 파일 읽기 및 쓰기](https://docs.opencv.org/3.4/d4/da8/group__imgcodecs.html#ga288b8b3da0892bd651fce07b3bbd3a56)에서 확인하세요.

다음 절차에 따라 다중 파일을 가져옵니다.

**Amazon S3 디렉터리에 저장한 다중 파일에서 데이터세트를 Data Wrangler로 가져오려면**

1. 현재 위치가 **가져오기(Import)** 탭이 아닌 경우, **가져오기**를 선택합니다.

1. **사용 가능(Available)** 아래에서 **Amazon S3**를 선택합니다.

1. **S3에서 표, 이미지, 시계열 데이터 가져오기(Import tabular, image, or time-series data from S3)**에서 다음 중 한 가지를 실행합니다.
   + 표 형식 보기에서 Amazon S3 버킷을 선택하고 가져오려는 파일을 포함한 폴더로 이동합니다.
   + **S3 원본(S3 source)**에서 파일이 있는 Amazon S3 버킷 또는 Amazon S3 URI를 지정하고 **이동(Go)**을 선택합니다. 유효한 URI는 다음과 같습니다.
     + `s3://amzn-s3-demo-bucket/example-prefix/example-prefix`
     + `example-access-point-aqfqprnstn7aefdfbarligizwgyfouse1a-s3alias/example-prefix/`
     + `s3://arn:aws:s3:AWS-Region:111122223333:accesspoint/example-prefix`

1. 가져오고자 하는 파일이 포함된 폴더를 선택합니다. 개별 파일은 다음 중 한 가지 지원 형식이어야 합니다. 파일은 동일한 데이터 형식이어야 합니다.

1. 폴더에 헤더가 있는 CSV 파일이 있는 경우, **첫 번째 행이 헤더(First row is header)** 옆 확인란을 선택합니다.

1. 파일이 다른 폴더에 중첩되어 있는 경우, **중첩된 디렉터리 포함(Include nested directories)** 옆 확인란을 선택합니다.

1. (선택 사항) **파일명 열 추가(Add filename column)**를 선택하여 데이터세트에 개별 관측치의 파일명을 표시하는 열을 추가합니다.

1. (선택 사항) 기본적으로 Data Wrangler는 폴더 미리보기를 표시하지 않습니다. 파란색 **미리보기 끄기(Preview off)** 버튼을 선택하여 미리보기를 활성화할 수 있습니다. 미리보기에는 폴더에 있는 첫 10개 파일의 첫 10개 행이 표시됩니다.

1. **세부정보(Details)** 창에서 데이터세트 **이름(Name)** 및 **파일 유형(File Type)**을 확인하거나 변경합니다. 공백이 포함된 **이름** 추가 시, 데이터세트를 가져올 때 공백이 밑줄로 바뀝니다.

1. 사용하려는 샘플링 구성을 지정합니다.

1. **Import dataset(데이터세트 가져오기)**을 선택합니다.

------

파라미터로 패턴과 일치하는 파일의 하위 집합을 가져올 수도 있습니다. 파라미터는 가져올 파일을 보다 선별적으로 고르는데 도움이 됩니다. 파라미터 적용을 시작하려면, 데이터 소스를 편집하고 데이터를 가져올 때 사용하는 경로에 파라미터를 적용합니다. 자세한 내용은 [다양한 데이터세트에 데이터 흐름 재사용](data-wrangler-parameterize.md) 단원을 참조하십시오.

## Athena에서 데이터 가져오기
<a name="data-wrangler-import-athena"></a>

Amazon Athena로 Amazon Simple Storage Service(Amazon S3 에서 Data Wrangler로 데이터를 가져올 수 있습니다. Athena에서는 표준 SQL 쿼리를 작성하여 Amazon S3에서 가져오는 데이터를 선택합니다. 자세한 정보는 [Amazon Athena란 무엇입니까?](https://docs.aws.amazon.com/athena/latest/ug/what-is.html)에서 확인하세요.

를 사용하여 Amazon Athena AWS Management Console 를 설정할 수 있습니다. 쿼리 실행을 시작하기 전에 Athena에 데이터베이스를 하나 이상 생성해야 합니다. Athena 시작 방법에 대한 자세한 정보는 [시작하기](https://docs.aws.amazon.com/athena/latest/ug/getting-started.html)에서 확인하세요.

Athena는 Data Wrangler와 직접 통합됩니다. Data Wrangler UI를 종료하지 않고도 Athena 쿼리를 작성할 수 있습니다.

Data Wrangler에서 간단한 Athena 쿼리를 작성하는 것 외에 다음을 사용할 수 있습니다.
+ 쿼리 결과 관리용 Athena 작업 그룹 작업 그룹에 대한 자세한 내용은 [쿼리 결과 관리](#data-wrangler-import-manage-results) 섹션을 참조하세요.
+ 데이터 보존 기간 설정을 위한 수명 주기 구성. 보존 기간에 대한 자세한 내용은 [데이터 보존 기간 설정](#data-wrangler-import-athena-retention) 섹션을 참조하세요.

### Data Wrangler에서 Athena 쿼리하기
<a name="data-wrangler-import-athena-query"></a>

**참고**  
Data Wrangler는 연합 쿼리를 지원하지 않습니다.

Athena AWS Lake Formation 와 함께를 사용하는 경우 Lake Formation IAM 권한이 데이터베이스에 대한 IAM 권한을 재정의하지 않는지 확인합니다`sagemaker_data_wrangler`.

Data Wrangler로 전체 데이터세트를 가져오거나 일부만 샘플링할 수 있습니다. Athena의 샘플링 옵션은 다음과 같습니다.
+ 없음(None) - 전체 데이터 세트 가져오기.
+ 첫 K(First K) - 데이터세트의 첫 K개 행 샘플링. K는 사용자가 지정한 정수.
+ 무작위(Randomized) - 지정된 크기의 무작위 샘플 추출.
+ 계층화(Stratified) - 계층화된 무작위 샘플 추출. 계층화된 샘플은 열의 값 비율을 유지합니다.

다음 절차에서는 Athena에서 Data Wrangler로 데이터세트를 가져오는 방법을 볼 수 있습니다.

**Athena에서 Data Wrangler로 데이터세트를 가져오려면**

1. [Amazon SageMaker AI 콘솔](https://console.aws.amazon.com/sagemaker)에 로그인합니다.

1. **Studio**를 선택합니다.

1. **Launch app**(앱 시작)을 선택합니다.

1. 드롭다운 목록에서 **Studio를** 선택합니다.

1. 홈 아이콘을 선택합니다.

1. **Data**(데이터)를 선택합니다.

1. **Data Wrangler**를 선택합니다.

1. **데이터 가져오기(Import data)**을 선택합니다.

1. **사용 가능(Available)** 아래에서 **Amazon Athena**를 선택합니다.

1. **데이터 카탈로그(Data Catalog)**에서 데이터 카탈로그를 선택합니다.

1. **데이터베이스(Database)** 드롭다운 목록에서 쿼리하려는 데이터베이스를 선택합니다. 데이터베이스를 선택하면 **표(Tables)**(**세부정보(Details)** 아래)에서 전체 표를 미리보기할 수 있습니다.

1. (선택 사항) **고급 구성(Advanced configuration)**을 선택합니다.

   1. **작업 그룹(Workgroup)**을 선택합니다.

   1. 작업 그룹이 Amazon S3 출력 위치를 적용하지 않았거나 작업 그룹을 사용하지 않는 경우, **쿼리 결과의 Amazon S3 위치(Amazon S3 location of query results)** 값을 지정합니다.

   1. (선택 사항) **데이터 보존 기간(Data retention period)**에서 확인란을 선택하여 데이터 보존 기간을 설정하고 삭제 전까지 저장할 일수를 지정합니다.

   1. (선택 사항) 기본적으로 Data Wrangler는 연결을 저장합니다. 확인란 선택을 해제하여 연결을 저장하지 않을 수 있습니다.

1. **샘플링(Sampling)**에서 샘플링 메서드를 선택합니다. 샘플링을 비활성화하려면 **없음(None)**을 선택합니다.

1. 쿼리 편집기에 쿼리를 입력하고 **실행(Run)** 버튼을 사용하여 쿼리를 실행합니다. 쿼리가 성공하면 편집기에서 결과를 미리 볼 수 있습니다.
**참고**  
Salesforce 데이터는 `timestamptz` 유형을 사용합니다. Salesforce에서 Athena로 가져온 타임스탬프 열을 쿼리하는 경우 열의 데이터를 `timestamp` 유형으로 캐스팅합니다. 다음 쿼리는 타임스탬프 열을 올바른 유형으로 캐스팅합니다.  

   ```
   # cast column timestamptz_col as timestamp type, and name it as timestamp_col
   select cast(timestamptz_col as timestamp) as timestamp_col from table
   ```

1. 쿼리 결과를 가져오려면 **가져오기(Import)**를 선택합니다.

위 절차를 완료하면 쿼리하여 가져온 데이터세트가 Data Wrangler 흐름에 나타납니다.

기본적으로 Data Wrangler는 연결 설정을 새 연결로 저장합니다. 데이터를 가져오면 이미 지정한 쿼리가 새 연결로 나타납니다. 저장된 연결에는 사용 중인 Athena 작업 그룹 및 Amazon S3 버킷에 대한 정보가 저장됩니다. 데이터 소스에 다시 연결할 때 저장된 연결을 선택할 수 있습니다.

### 쿼리 결과 관리
<a name="data-wrangler-import-manage-results"></a>

Data Wrangler는 Athena 작업 그룹으로 AWS 계정에서 쿼리 결과를 관리할 수 있도록 지원합니다. 개별 작업 그룹의 Amazon S3 출력 위치를 지정할 수 있습니다. 또한 쿼리 출력을 다른 Amazon S3 위치로 보낼 수 있는지 여부도 지정할 수 있습니다. 자세한 정보는 [작업 그룹으로 쿼리 액세스 및 비용 제어하기](https://docs.aws.amazon.com/athena/latest/ug/manage-queries-control-costs-with-workgroups.html)에서 확인하세요.

Amazon S3 쿼리 출력 위치를 적용하도록 작업 그룹을 구성할 수 있습니다. 해당 작업 그룹에 대한 쿼리 결과의 출력 위치는 변경할 수 없습니다.

작업 그룹을 사용하지 않거나 쿼리의 출력 위치를 지정하지 않으면 Data Wrangler는 Studio Classic 인스턴스가 위치한 리전과 동일한 AWS 리전에 있는 기본 Amazon S3 버킷을 사용하여 Athena 쿼리 결과를 저장합니다. 이 데이터베이스에 임시 테이블을 생성하여 쿼리 출력을 이 Amazon S3 버킷으로 이동합니다. 데이터를 가져온 후에는 테이블이 삭제되지만 `sagemaker_data_wrangler` 데이터베이스는 계속 유지됩니다. 자세한 내용은 [가져온 데이터 스토리지](#data-wrangler-import-storage) 단원을 참조하세요.

Athena 작업 그룹을 사용하려면 작업 그룹 액세스 권한을 부여하는 IAM 정책을 설정합니다. `SageMaker AI-Execution-Role` 사용 시, 역할에 정책을 추가할 것을 권장합니다. 작업 그룹용 IAM 정책에 대한 자세한 정보는 [작업 그룹 액세스용 IAM 정책](https://docs.aws.amazon.com/athena/latest/ug/workgroups-iam-policy.html)에서 확인하세요. 작업 그룹 정책 예제는 [작업 그룹 예제 정책](https://docs.aws.amazon.com/athena/latest/ug/example-policies-workgroup.html)에서 확인하세요.

### 데이터 보존 기간 설정
<a name="data-wrangler-import-athena-retention"></a>

Data Wrangler는 쿼리 결과의 데이터 보존 기간을 자동으로 설정합니다. 보관 기간이 지나면 결과는 삭제됩니다. 예를 들어, 기본 보존 기간은 5일입니다. 쿼리 결과는 5일 후에 삭제됩니다. 이 구성은 더 이상 사용하지 않는 데이터를 정리하는 데 도움이 되도록 설계되었습니다. 데이터를 정리하면 권한이 없는 사용자의 액세스를 방지할 수 있습니다. 또한 Amazon S3에 데이터를 저장하는 데 드는 비용을 관리하는 데도 도움이 됩니다.

보존 기간을 설정하지 않으면 Amazon S3 수명 주기 구성에 따라 객체 저장 기간이 결정됩니다. 수명 주기 구성에 대해 지정한 데이터 보존 정책은 지정한 수명 주기 구성보다 오래된 쿼리 결과를 모두 제거합니다. 자세한 내용은 [버킷에 대한 수명 주기 구성 설정](https://docs.aws.amazon.com/AmazonS3/latest/userguide/how-to-set-lifecycle-configuration-intro.html)을 참조하세요.

Data Wrangler는 Amazon S3 수명 주기 구성으로 데이터 보존 및 만료를 관리합니다. Amazon SageMaker Studio Classic IAM 실행 역할 권한을 부여하여 버킷 수명 주기 구성을 관리해야 합니다. 다음 절차에 따라 권한을 부여합니다.

수명 주기 구성 관리 권한을 부여하는 방법은 다음과 같습니다.

1. 에 로그인 AWS Management Console 하고 [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) IAM 콘솔을 엽니다.

1. **역할**을 선택합니다.

1. 검색 창에서 Amazon SageMaker Studio Classic이 사용하는 Amazon SageMaker AI 실행 역할을 지정합니다.

1.  역할을 선택합니다.

1. **권한 추가**를 선택합니다.

1. **인라인 정책 생성(Create inline policy)**을 선택합니다.

1. **서비스(Service)**에서 **S3**를 지정하고 선택합니다.

1. **읽기(Read)** 섹션 아래에서 **GetLifecycleConfiguration**을 선택합니다.

1. **쓰기(Write)** 섹션 아래에서 **PutLifecycleConfiguration**을 선택합니다.

1. **리소스**에서 **특정 항목**을 선택합니다.

1. **작업(Actions)**에서 **권한 관리(Permissions management)** 옆 화살표 아이콘을 선택합니다.

1. **PutResourcePolicy**를 선택합니다.

1. **리소스**에서 **특정 항목**을 선택합니다.

1. **이 계정에서 모두(Any in this account)** 옆 확인란을 선택합니다.

1. **정책 검토**를 선택합니다.

1. **이름(Name)**에서 이름을 지정합니다.

1. **정책 생성(Create policy)**을 선택합니다.

## Amazon Redshift에서 데이터 가져오기
<a name="data-wrangler-import-redshift"></a>

Amazon Redshift는 클라우드에서 완전히 관리되는 페타바이트급 데이터 웨어하우스 서비스입니다. 데이터 웨어하우스를 생성할 때는 먼저 Amazon Redshift 클러스터라는 노드 집합을 시작하는 것이 첫 번째 단계입니다. 클러스터 프로비저닝을 마치면 데이터세트를 업로드하여 데이터 분석 쿼리를 실행할 수 있습니다.

Data Wrangler에서 하나 이상의 Amazon Redshift 클러스터에 연결하여 쿼리할 수 있습니다. 이 가져오기 옵션을 사용하려면 Amazon Redshift에서 하나 이상의 클러스터를 생성해야 합니다. 생성 방법은 [Amazon Redshift 시작하기](https://docs.aws.amazon.com/redshift/latest/gsg/getting-started.html)에서 확인하세요.

다음 중 하나의 위치에서 Amazon Redshift 쿼리 결과를 출력할 수 있습니다.
+ 기본 Amazon S3 버킷
+ 사용자가 지정하는 Amazon S3 출력 위치

전체 데이터 세트를 가져오거나 데이터 세트의 일부를 샘플링할 수 있습니다. Amazon Redshift의 샘플링 옵션은 다음과 같습니다.
+ 없음(None) - 전체 데이터 세트 가져오기.
+ 첫 K(First K) - 데이터세트의 첫 K개 행 샘플링. K는 사용자가 지정한 정수.
+ 무작위(Randomized) - 지정된 크기의 무작위 샘플 추출.
+ 계층화(Stratified) - 계층화된 무작위 샘플 추출. 계층화된 샘플은 열의 값 비율을 유지합니다.

기본 Amazon S3 버킷은 Amazon Redshift 쿼리 결과를 저장하기 위해 Studio Classic 인스턴스가 위치한 리전과 동일한 AWS 리전에 있습니다. 자세한 내용은 [가져온 데이터 스토리지](#data-wrangler-import-storage) 단원을 참조하십시오.

기본 Amazon S3 버킷 또는 지정한 버킷에 대해 다음과 같은 암호화 옵션을 사용할 수 있습니다.
+ Amazon S3 관리형 키를 사용한 기본 AWS 서비스 측 암호화(SSE-S3)
+  지정한 AWS Key Management Service (AWS KMS) 키

 AWS KMS 키는 사용자가 생성하고 관리하는 암호화 키입니다. KMS 키에 대한 자세한 정보는 [AWS Key Management Service](https://docs.aws.amazon.com//kms/latest/developerguide/overview.html)에서 확인하세요.

계정의 AWS KMS 키 ARN 또는 ARN을 사용하여 키를 지정할 수 있습니다 AWS .

IAM 관리형 정책 `AmazonSageMakerFullAccess`로 Studio Classic 내 역할에 Data Wrangler 사용 권한을 부여하려면 **데이터베이스 사용자** 이름에 접두사 `sagemaker_access`가 있어야 합니다.

다음 절차에 따라 새 클러스터를 추가하는 방법을 알아봅니다.

**참고**  
Data Wrangler는 임시 자격 증명이 있는 Amazon Redshift Data API를 사용합니다. 이 API에 대한 자세한 내용은 Amazon Redshift 관리 안내서에 있는 [Amazon Redshift 데이터 API 사용하기](https://docs.aws.amazon.com//redshift/latest/mgmt/data-api.html)에서 확인하세요.

**Amazon Redshift 클러스터에 연결하려면**

1. [Amazon SageMaker AI 콘솔](https://console.aws.amazon.com/sagemaker)에 로그인합니다.

1. **Studio**를 선택합니다.

1. **Launch app**(앱 시작)을 선택합니다.

1. 드롭다운 목록에서 **Studio를** 선택합니다.

1. 홈 아이콘을 선택합니다.

1. **Data**(데이터)를 선택합니다.

1. **Data Wrangler**를 선택합니다.

1. **데이터 가져오기(Import data)**을 선택합니다.

1. **사용 가능(Available)** 아래에서 **Amazon Athena**를 선택합니다.

1. **Amazon Redshift**를 선택합니다.

1. **임시 자격 증명(IAM)(Temporary credentials (IAM))**을 **유형(Type)**으로 선택합니다.

1. **연결 이름(Connection Name)**을 입력합니다. 이 이름은 Data Wrangler가 연결을 식별할 때 사용됩니다.

1. **클러스터 식별자(Cluster Identifier)**를 입력하여 연결하려는 클러스터를 지정합니다. 참고: Amazon Redshift 클러스터의 전체 엔드포인트는 제외하고 클러스터 식별자만 입력합니다.

1. 연결할 데이터베이스의 **데이터베이스 이름(Database Name)**을 입력합니다.

1. **데이터베이스 사용자(Database User)**를 입력하여 데이터베이스 연결 시 사용할 사용자를 식별합니다.

1. **UNLOAD IAM Role**에 Amazon Redshift 클러스터가 Amazon S3로 데이터를 이동 및 쓰기 위해 맡아야 역할의 IAM 역할 ARN을 입력합니다. 이 역할에 대한 자세한 내용은 [Amazon Redshift 관리 안내서의 Amazon Redshift가 사용자를 대신하여 다른 AWS 서비스에 액세스하도록 권한 부여](https://docs.aws.amazon.com/redshift/latest/mgmt/authorizing-redshift-service.html)를 참조하세요.

1. **연결**을 선택합니다.

1. (선택 사항) **Amazon S3 출력 위치(Amazon S3 output location)**에서 쿼리 결과를 저장할 S3 URI를 지정합니다.

1. (선택 사항) **KMS 키 ID(KMS key ID)**에서 AWS KMS 키 또는 별칭의 ARN을 지정합니다. 다음 이미지에서 AWS Management Console에서 두 키 중 하나를 찾을 수 있는 위치를 볼 수 있습니다.  
![\[AWS KMS 콘솔에서 AWS KMS 별칭 ARN, 별칭 이름 및 키 ARN의 위치입니다.\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/images/studio/mohave/kms-alias-redacted.png)

다음 이미지에서 이전 절차의 모든 필드를 볼 수 있습니다.

![\[Amazon Redshift 연결 추가 패널입니다.\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/images/studio/mohave/redshift-connection.png)


연결이 성공적으로 설정되면 **데이터 가져오기(Data Import)** 아래에 데이터 소스로 표시됩니다. 이 데이터 소스를 선택하여 데이터베이스를 쿼리하고 데이터를 가져옵니다.

**Amazon Redshift에서 데이터 쿼리 및 가져오기**

1. **데이터 소스(Data Source)**에서 쿼리할 연결을 선택합니다.

1. **스키마(Schema)**를 선택합니다. Amazon Redshift 스키마에 대한 자세한 내용은 Amazon Redshift 데이터베이스 개발 안내서에 있는 [스키마](https://docs.aws.amazon.com/redshift/latest/dg/r_Schemas_and_tables.html)에서 확인하세요.

1. (선택 사항) **고급 구성(Advanced configuration)** 아래에서 사용하려는 **샘플링(Sampling)** 메서드를 지정합니다.

1. 쿼리 편집기에서 쿼리를 입력한 다음 **실행(Run)**을 선택하여 쿼리를 실행합니다. 쿼리가 성공하면 편집기에서 결과를 미리 볼 수 있습니다.

1. **데이터세트 가져오기(Import dataset)**를 선택하여 쿼리된 데이터세트를 가져옵니다.

1. **데이터세트 이름(Dataset name)**을 입력합니다. 공백이 포함된 **데이터세트 이름** 추가 시, 데이터세트를 가져올 때 공백이 밑줄로 바뀝니다.

1. **추가**를 선택합니다.

데이터세트를 편집하는 방법은 다음과 같습니다.

1. Data Wrangler 흐름으로 이동합니다.

1. **원본 - 샘플 추출(Source - Sampled)** 옆 \$1를 선택합니다.

1. 가져오려는 데이터를 변경합니다.

1. **적용**을 선택합니다

## Amazon EMR에서 데이터 가져오기
<a name="data-wrangler-emr"></a>

Amazon EMR을 Amazon SageMaker Data Wrangler 흐름의 데이터 소스로 사용할 수 있습니다. Amazon EMR은 대량 데이터를 사용, 처리, 분석할 수 있는 관리형 클러스터 플랫폼입니다. Amazon EMR에 대한 자세한 정보는 [Amazon EMR이란 무엇인가요?](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-what-is-emr.html)에서 확인하세요. EMR에서 데이터세트를 가져오려면 연결하고 쿼리해야 합니다.

**중요**  
Amazon EMR 클러스터에 연결하려면 다음 필수 조건을 충족해야 합니다.  
Amazon SageMaker Studio Classic 및 Amazon EMR 시작 시 사용하는 Amazon VPC가 리전에 있어야 합니다.
Amazon EMR과 Amazon SageMaker Studio Classic은 모두 프라이빗 서브넷에서 시작되어야 합니다. 둘 다 같은 서브넷에 있거나 다른 서브넷에 있을 수 있습니다.
Amazon SageMaker Studio Classic이 VPC 전용 모드여야 합니다.  
VPC 생성에 대한 자세한 정보는 [VPC 생성하기](https://docs.aws.amazon.com/vpc/latest/userguide/working-with-vpcs.html#Create-VPC)에서 확인하세요.  
VPC 만들기에 대한 자세한 정보는 [Connect SageMaker Studio Classic Notebooks in a VPC to External Resources](https://docs.aws.amazon.com/vpc/latest/userguide/studio-notebooks-and-internet-access.html)에서 확인하세요.
실행 중인 Amazon EMR 클러스터는 동일한 Amazon VPC에 있어야 합니다.
Amazon EMR 클러스터와 Amazon VPC는 동일한 AWS 계정에 있어야 합니다.
Amazon EMR 클러스터는 Hive 또는 Presto를 실행합니다.  
Hive 클러스터는 포트 10000을 통해 Studio Classic 보안 그룹의 인바운드 트래픽을 허용해야 합니다.
Presto 클러스터는 포트 8889을 통해 Studio Classic 보안 그룹의 인바운드 트래픽을 허용해야 합니다.  
IAM 역할을 사용하는 Amazon EMR 클러스터의 포트 번호는 다릅니다. 자세한 내용은 필수 조건 끝부분에서 확인하세요.
Amazon SageMaker Studio Classic은 Jupyter Lab 버전 3을 실행해야 합니다. Jupyter Lab 버전 업데이트에 대한 정보는 [콘솔에서 JupyterLab 버전의 애플리케이션 보기 및 업데이트](studio-jl.md#studio-jl-view)에서 확인하세요.
Amazon SageMaker Studio Classic에는 사용자 액세스를 제어하는 IAM 역할이 있습니다. Amazon SageMaker Studio Classic 실행 시 사용하는 기본 IAM 역할에는 Amazon EMR 클러스터 액세스를 허용하는 정책이 없습니다. IAM 역할에 권한을 부여하는 정책을 연결해야 합니다. 자세한 내용은 [Amazon EMR 클러스터 나열 구성](studio-notebooks-configure-discoverability-emr-cluster.md) 단원을 참조하십시오.
또한 IAM 역할에는 다음과 같은 `secretsmanager:PutResourcePolicy` 정책도 연결되어야 합니다.
이미 만든 Studio Classic 도메인을 사용하는 경우, `AppNetworkAccessType`이 VPC 전용 모드인지 확인하세요. VPC 전용 모드로 도메인을 업데이트하는 방법에 대한 정보는 [Amazon SageMaker Studio Classic 종료 및 업데이트](studio-tasks-update-studio.md)에서 확인하세요.
클러스터에 Hive 또는 Presto가 설치되어 있어야 합니다.
Amazon EMR 릴리스가 버전 5.5.0 이상이어야 합니다.  
Amazon EMR은 자동 종료를 지원합니다. 자동 종료는 유휴 클러스터의 실행을 중지하고 비용 발생을 방지합니다. 자동 종료를 지원하는 릴리스는 다음과 같습니다.  
6.x 릴리스 버전 6.1.0 이상.
5.x 릴리스 버전 5.30.0 이상.
다음 페이지에서 Amazon EMR 클러스터의 IAM 런타임 역할을 설정합니다. 런타임 역할을 사용하는 경우 전송 중 암호화를 활성화해야 합니다.  
[런타임 역할로 Amazon EMR 클러스터를 시작하기 위한 필수 조건](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-steps-runtime-roles.html#emr-steps-runtime-roles-configure)
[역할 기반 액세스 제어로 Amazon EMR 클러스터 시작하기](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-steps-runtime-roles.html#emr-steps-runtime-roles-launch)
Lake Formation을 데이터베이스 내 데이터에 대한 거버넌스 도구로 사용해야 합니다. 또한 액세스 제어를 위해 외부 데이터 필터링을 적용해야 합니다.  
Lake Formation에 대한 자세한 내용은 [란 무엇입니까 AWS Lake Formation?](https://docs.aws.amazon.com/lake-formation/latest/dg/what-is-lake-formation.html)를 참조하세요.
Lake Formation을 Amazon EMR에 통합하는 방법에 대한 자세한 정보는 [타사 서비스와 Lake Formation 통합하기](https://docs.aws.amazon.com/lake-formation/latest/dg/Integrating-with-LakeFormation.html)에서 확인하세요.
클러스터의 버전이 6.9.0 이상이어야 합니다.
에 대한 액세스 AWS Secrets Manager. Secrets Manager에 대한 자세한 정보는 [AWS Secrets Manager(이)란 무엇입니까?](https://docs.aws.amazon.com/secretsmanager/latest/userguide/intro.html)에서 확인하세요.
Hive 클러스터는 포트 10000을 통해 Studio Classic 보안 그룹의 인바운드 트래픽을 허용해야 합니다.

Amazon VPC는 AWS 클라우드의 다른 네트워크와 논리적으로 격리된 가상 네트워크입니다. Amazon SageMaker Studio Classic과 Amazon EMRR 클러스터는 Amazon VPC 내에서만 존재합니다.

다음 절차에 따라 Amazon VPC에서 Amazon SageMaker Studio Classic을 실행합니다.

VPC에서 Studio Classic을 실행하는 방법은 다음과 같습니다.

1. [https://console.aws.amazon.com/sagemaker/](https://console.aws.amazon.com/sagemaker/)에서 SageMaker AI 콘솔로 이동합니다.

1. **SageMaker Studio Classic 시작**을 선택합니다.

1. **표준 설정**을 선택합니다.

1. **기본 실행 역할**에서 Studio Classic 설정 시 필요한 IAM 역할을 선택합니다.

1. Amazon EMR 클러스터를 시작한 VPC를 선택합니다.

1. **Subnet(서브넷)**에서 프라이빗 서브넷을 선택합니다.

1. **보안 그룹(Security group(s))**에서 VPC 간 제어 시 사용하는 보안 그룹을 지정합니다.

1. **VPC 전용(VPC Only)**을 선택합니다.

1. (선택 사항)기본 암호화 키를 AWS 사용합니다. AWS Key Management Service 키를 지정하여 데이터를 암호화할 수도 있습니다.

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

1. **Studio 설정(Studio settings)**에서 본인에게 가장 적합한 구성을 선택합니다.

1. **다음**을 선택하여 SageMaker Canvas 설정을 건너뜁니다.

1. **다음**을 선택하여 RStudio 설정을 건너뜁니다.

Amazon EMR 클러스터가 준비되지 않은 경우, 다음 절차에 따라 생성할 수 있습니다. Amazon EMR에 대한 자세한 정보는 [Amazon EMR이란 무엇입니까?](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-what-is-emr.html)에서 확인하세요.

클러스터를 생성하는 방법은 다음과 같습니다.

1.  AWS Management Console로 이동합니다.

1. 검색창에서 **Amazon EMR**을 지정합니다.

1. **클러스터 생성**을 선택합니다.

1. **클러스터 이름(Cluster name)**에 클러스터의 이름을 입력합니다.

1. **릴리스(Release)**에서 클러스터의 릴리스 버전을 선택합니다.
**참고**  
Amazon EMR은 다음 릴리스에 대해 자동 종료를 지원합니다.  
6.x 릴리스 버전 6.1.0 이상.
5.x 릴리스 버전 5.30.0 이상.
자동 종료는 유휴 클러스터의 실행을 중지하고 비용 발생을 방지합니다.

1. (선택 사항) **애플리케이션(Applications)**에서 **Presto**를 선택합니다.

1. 클러스터에서 실행 중인 애플리케이션을 선택합니다.

1. **네트워킹(Networking)** 아래 **하드웨어 구성(Hardware configuration)**에서 하드웨어 구성 설정을 지정합니다.
**중요**  
**네트워킹**에서 Amazon SageMaker Studio Classic을 실행하는 VPC를 선택하고 프라이빗 서브넷을 선택합니다.

1. **보안 및 액세스(Security and access)**에서 보안 설정을 지정합니다.

1. **생성(Create)**을 선택합니다.

Amazon EMR 클러스터 생성 방법은 [Amazon EMR 시작하기](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-gs.html)에서 확인하세요. 클러스터 구성 모범 사례에 대한 정보는 [고려 사항 및 모범 사례](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-plan-ha-considerations.html)에서 확인하세요.

**참고**  
보안상 Data Wrangler는 프라이빗 서브넷에 있는 VPC에만 연결할 수 있습니다. Amazon EMR 인스턴스에를 사용하지 않는 한 마스터 노드 AWS Systems Manager 에 연결할 수 없습니다. 자세한 정보는 [AWS Systems Manager으(로) EMR 클러스터 액세스 보안 확립하기](https://aws.amazon.com/blogs/big-data/securing-access-to-emr-clusters-using-aws-systems-manager/)에서 확인하세요.

현재 다음 방법을 사용하여 Amazon EMR 클러스터에 액세스할 수 있습니다.
+ 미 인증
+ LDAP(Lightweight Directory Access Protocol)
+ IAM(런타임 역할)

인증을 사용하지 않거나 LDAP를 사용하려면 여러 클러스터와 Amazon EC2 인스턴스 프로필을 생성해야 할 수 있습니다. 관리자인 경우, 사용자 그룹에 데이터에 대한 다양한 수준의 액세스 권한을 제공해야 할 수 있습니다. 이러한 메서드를 사용하면 관리 오버헤드가 발생하여 사용자 관리가 더 어려워질 수 있습니다.

여러 사용자에게 동일한 Amazon EMR 클러스터 연결 권한을 제공하는 IAM 런타임 역할을 적용할 것을 권장합니다. 런타임 역할은 Amazon EMR 클러스터에 연결하는 사용자에게 할당할 수 있는 IAM 역할입니다. 각 사용자 그룹이 특정한 권한을 갖도록 런타임 IAM 역할을 구성할 수 있습니다.

다음 섹션에 따라 LDAP가 활성화된 Presto 또는 Hive 클러스터를 생성합니다.

------
#### [ Presto ]

**중요**  
를 Presto 테이블의 메타스토어 AWS Glue 로 사용하려면 **Presto 테이블 메타데이터**에 **사용을** 선택하여 EMR 클러스터를 시작할 때 Amazon EMR 쿼리의 결과를 AWS Glue 데이터 카탈로그에 저장합니다. 쿼리 결과를 AWS Glue 데이터 카탈로그에 저장하면 요금이 발생하지 않을 수 있습니다.  
Amazon EMR 클러스터에서 대규모 데이터세트를 쿼리하려면 Amazon EMR 클러스터의 Presto 구성 파일에 다음 속성을 추가해야 합니다.  

```
[{"classification":"presto-config","properties":{
"http-server.max-request-header-size":"5MB",
"http-server.max-response-header-size":"5MB"}}]
```
Amazon EMR 클러스터를 시작할 때 구성 설정을 수정할 수도 있습니다.  
Amazon EMR 클러스터의 구성 파일은 `/etc/presto/conf/config.properties` 경로 아래에 있습니다.

다음 절차에 따라 LDAP가 활성화된 Presto 클러스터를 생성합니다.

클러스터를 생성하는 방법은 다음과 같습니다.

1.  AWS Management Console로 이동합니다.

1. 검색창에서 **Amazon EMR**을 지정합니다.

1. **클러스터 생성**을 선택합니다.

1. **클러스터 이름(Cluster name)**에 클러스터의 이름을 입력합니다.

1. **릴리스(Release)**에서 클러스터의 릴리스 버전을 선택합니다.
**참고**  
Amazon EMR은 다음 릴리스에 대해 자동 종료를 지원합니다.  
6.x 릴리스 버전 6.1.0 이상.
5.x 릴리스 버전 5.30.0 이상.
자동 종료는 유휴 클러스터의 실행을 중지하고 비용 발생을 방지합니다.

1. 클러스터에서 실행 중인 애플리케이션을 선택합니다.

1. **네트워킹(Networking)** 아래 **하드웨어 구성(Hardware configuration)**에서 하드웨어 구성 설정을 지정합니다.
**중요**  
**네트워킹**에서 Amazon SageMaker Studio Classic을 실행하는 VPC를 선택하고 프라이빗 서브넷을 선택합니다.

1. **보안 및 액세스(Security and access)**에서 보안 설정을 지정합니다.

1. **생성(Create)**을 선택합니다.

------
#### [ Hive ]

**중요**  
를 Hive 테이블의 메타스토어 AWS Glue 로 사용하려면 EMR 클러스터를 시작할 때 **Hive 테이블 메타데이터**에 **사용을** 선택하여 Amazon EMR 쿼리의 결과를 AWS Glue 데이터 카탈로그에 저장합니다. 쿼리 결과를 AWS Glue 데이터 카탈로그에 저장하면 요금이 발생하지 않을 수 있습니다.  
Amazon EMR 클러스터에서 대규모 데이터세트를 쿼리하려면 Amazon EMR 클러스터의 Hive 구성 파일에 다음 속성을 추가해야 합니다.  

```
[{"classification":"hive-site", "properties"
:{"hive.resultset.use.unique.column.names":"false"}}]
```
Amazon EMR 클러스터를 시작할 때 구성 설정을 수정할 수도 있습니다.  
Amazon EMR 클러스터의 구성 파일은 `/etc/hive/conf/hive-site.xml` 경로 아래에 있습니다. 다음 속성을 지정하고 클러스터를 다시 시작할 수 있습니다.  

```
<property>
    <name>hive.resultset.use.unique.column.names</name>
    <value>false</value>
</property>
```

다음 절차에 따라 LDAP가 활성화된 Hive 클러스터를 생성합니다.

LDAP가 활성화된 Hive 클러스터를 생성하는 방법은 다음과 같습니다.

1.  AWS Management Console로 이동합니다.

1. 검색창에서 **Amazon EMR**을 지정합니다.

1. **클러스터 생성**을 선택합니다.

1. **Go to advanced options(고급 옵션으로 이동)**를 선택합니다.

1. **릴리스(Release)**에서 Amazon EMR 릴리스 버전을 선택합니다.

1. **Hive** 구성 옵션은 기본적으로 선택됩니다. **Hive** 옵션 옆 확인란이 있는지 확인합니다.

1. (선택 사항) **Presto**를 구성 옵션으로 선택하여 클러스터에서 Hive와 Presto를 모두 활성화할 수도 있습니다.

1. (선택 사항) **Hive 테이블 메타데이터에 사용을** 선택하여 Amazon EMR 쿼리 결과를 AWS Glue 데이터 카탈로그에 저장합니다. 쿼리 결과를 AWS Glue 카탈로그에 저장하면 요금이 발생하지 않을 수 있습니다. 자세한 내용은 [AWS Glue 데이터 카탈로그를 Hive의 메타스토어로 사용을 참조하세요](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-hive-metastore-glue.html).
**참고**  
쿼리 결과를 데이터 카탈로그에 저장하려면 Amazon EMR 버전 5.8.0 이상이 필요합니다.

1. **구성 입력(Enter configuration)** 아래에서 다음 JSON을 지정합니다.

   ```
   [
     {
       "classification": "hive-site",
       "properties": {
         "hive.server2.authentication.ldap.baseDN": "dc=example,dc=org",
         "hive.server2.authentication": "LDAP",
         "hive.server2.authentication.ldap.url": "ldap://ldap-server-dns-name:389"
       }
     }
   ]
   ```
**참고**  
보안상 이전 hive-site JSON에 몇 가지 속성을 추가하여 HiveServer용 SSL을 활성화할 것을 권장합니다. 자세한 정보는 [HiveServer2에서 SSL 활성화하기](https://docs.cloudera.com/HDPDocuments/HDP3/HDP-3.0.1/configuring-wire-encryption/content/enable_ssl_on_hiveserver2.html)에서 확인하세요.

1. 나머지 클러스터 설정을 지정하고 클러스터를 생성합니다.

------

다음 섹션에 따라 이미 생성한 Amazon EMR 클러스터에 LDAP 인증을 적용합니다.

------
#### [ LDAP for Presto ]

Presto를 실행하는 클러스터에서 LDAP를 사용하려면 HTTPS를 통해 Presto 코디네이터에 액세스해야 합니다. 액세스 권한을 부여하는 방법은 다음과 같습니다.
+ 포트 636에서 액세스를 활성화
+ Presto 코디네이터용 SSL 활성화

다음 템플릿에 따라 Presto를 구성합니다.

```
- Classification: presto-config
     ConfigurationProperties:
        http-server.authentication.type: 'PASSWORD'
        http-server.https.enabled: 'true'
        http-server.https.port: '8889'
        http-server.http.port: '8899'
        node-scheduler.include-coordinator: 'true'
        http-server.https.keystore.path: '/path/to/keystore/path/for/presto'
        http-server.https.keystore.key: 'keystore-key-password'
        discovery.uri: 'http://master-node-dns-name:8899'
- Classification: presto-password-authenticator
     ConfigurationProperties:
        password-authenticator.name: 'ldap'
        ldap.url: !Sub 'ldaps://ldap-server-dns-name:636'
        ldap.user-bind-pattern: "uid=${USER},dc=example,dc=org"
        internal-communication.authentication.ldap.user: "ldap-user-name"
        internal-communication.authentication.ldap.password: "ldap-password"
```

Presto에서 LDAP를 설정하는 방법은 다음 리소스에서 확인하세요.
+ [LDAP 인증](https://prestodb.io/docs/current/security/ldap.html)
+ [Amazon EMR에서 LDAP 인증을 Presto에 적용하기](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-presto-ldap.html)

**참고**  
보안상 Presto용 SSL 활성화를 권장합니다. 자세한 정보는 [보안 내부 통신](https://prestodb.io/docs/current/security/internal-communication.html)에서 확인하세요.

------
#### [ LDAP for Hive ]

생성한 클러스터에 대해 Hive용 LDAP를 사용하려면, 다음 절차에 따라 [콘솔 내 인스턴스 그룹을 재구성합니다.](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-configure-apps-running-cluster.html#emr-configure-apps-running-cluster-considerations)

연결 중인 클러스터의 이름을 지정하고 있습니다.

```
[
  {
    "classification": "hive-site",
    "properties": {
      "hive.server2.authentication.ldap.baseDN": "dc=example,dc=org",
      "hive.server2.authentication": "LDAP",
      "hive.server2.authentication.ldap.url": "ldap://ldap-server-dns-name:389"
    }
  }
]
```

------

다음 절차에 따라 클러스터에서 데이터를 가져옵니다.

클러스터에서 데이터를 가져오는 방법은 다음과 같습니다.

1. Data Wrangler 흐름을 엽니다.

1. **연결 생성**을 선택합니다.

1. **Amazon EMR**을 선택합니다.

1. 다음 중 하나를 수행하세요.
   + (선택 사항) **보안 암호 ARN(Secrets ARN)**에서 클러스터 내 데이터베이스의 Amazon 리소스 번호(ARN)를 지정합니다. 보안 암호는 보안을 강화합니다. 보안 암호에 대한 자세한 내용은 [란 무엇입니까 AWS Secrets Manager?](https://docs.aws.amazon.com/secretsmanager/latest/userguide/intro.html)를 참조하십시오. 클러스터용 보안 암호 생성에 대한 자세한 정보는 [클러스터의 AWS Secrets Manager 보안 암호 생성](#data-wrangler-emr-secrets-manager)에서 확인하세요.
**중요**  
인증 시 IAM 런타임 역할을 사용하는 경우 보안 암호를 지정해야 합니다.
   + 드롭다운 테이블에서 클러스터를 선택합니다.

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

1. ***example-cluster-name* 클러스터 엔드포인트 선택**에서 쿼리 엔진을 선택합니다.

1. (선택 사항) **연결 저장(Save connection)**을 선택합니다.

1. **다음, 로그인** 선택 후 다음 중 하나를 선택합니다.
   + 미 인증
   + LDAP
   + IAM

1. ***example-cluster-name* 클러스터 로그인**에서 클러스터 **사용자명**과 **비밀번호**를 지정합니다.

1. **연결**을 선택합니다.

1. 쿼리 편집기에서 SQL 쿼리를 지정합니다.

1. **실행**을 선택합니다.

1. **가져오기**를 선택합니다.

### 클러스터의 AWS Secrets Manager 보안 암호 생성
<a name="data-wrangler-emr-secrets-manager"></a>

IAM 런타임 역할로 Amazon EMR 클러스터에 액세스하는 경우, Amazon EMR 액세스 시 사용하는 자격 증명을 Secrets Manager 보안 암호로 저장해야 합니다. 클러스터 액세스 시 사용하는 모든 자격 증명을 보안 암호에 저장합니다.

보안 암호에는 다음 정보를 저장해야 합니다.
+ JDBC 엔드포인트 - `jdbc:hive2://`
+ DNS 이름 - Amazon EMR 클러스터의 DNS 이름. 기본 노드의 엔드포인트 또는 호스트 이름.
+ 포트 - `8446`

보안 암호에 다음과 같은 추가 정보를 저장할 수도 있습니다.
+ IAM 역할 - 클러스터 액세스 시 사용하는 IAM 역할. Data Wrangler는 기본적으로 SageMaker AI 실행 역할을 사용합니다.
+ 신뢰 저장소 경로 - 기본적으로 Data Wrangler는 신뢰 저장소 경로를 생성합니다. 자체 신뢰 저장소 경로를 사용할 수도 있습니다. 신뢰 저장소 경로에 대한 자세한 정보는 [HiveServer2 내 전송 중 암호화](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/hs2-encryption-intransit.html)에서 확인하세요.
+ 신뢰 저장소 비밀번호 - 기본적으로 Data Wrangler는 신뢰 저장소 비밀번호를 생성합니다. 자체 신뢰 저장소 경로를 사용할 수도 있습니다. 신뢰 저장소 경로에 대한 자세한 정보는 [HiveServer2 내 전송 중 암호화](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/hs2-encryption-intransit.html)에서 확인하세요.

다음 절차에 따라 Secrets Manager 보안 암호에 자격 증명을 저장합니다.

자격 증명을 보안 암호로 저장하는 방법은 다음과 같습니다.

1.  AWS Management Console로 이동합니다.

1. 검색 창에 Secrets Manager를 지정합니다.

1. **AWS Secrets Manager**을 선택합니다.

1. **새 보안 암호 저장**을 선택합니다.

1. **보안 암호 유형**에서 **다른 유형의 보안 암호**를 선택합니다.

1. **키/값(Key/value)** 쌍 아래에서 **일반 텍스트(Plaintext)**를 선택합니다.

1. Hive 실행 클러스터의 경우, IAM 인증에 다음 템플릿을 사용할 수 있습니다.

   ```
   {"jdbcURL": ""
    "iam_auth": {"endpoint": "jdbc:hive2://", #required
                   "dns": "ip-xx-x-xxx-xxx.ec2.internal", #required 
                   "port": "10000", #required
                 "cluster_id": "j-xxxxxxxxx", #required
                 "iam_role": "arn:aws:iam::xxxxxxxx:role/xxxxxxxxxxxx", #optional
                 "truststore_path": "/etc/alternatives/jre/lib/security/cacerts", #optional
                 "truststore_password": "changeit" #optional
                 
                 }}
   ```
**참고**  
데이터를 가져온 후 해당 데이터에 변환을 적용합니다. 그런 다음 변환한 데이터를 특정 위치로 내보냅니다. Jupyter notebook으로 변환된 데이터를 Amazon S3로 내보내는 경우, 이전 예제에서 지정된 신뢰 저장소 경로를 사용해야 합니다.

Secrets Manager 보안 암호는 Amazon EMR 클러스터의 JDBC URL을 보안 암호로 저장합니다. 보안 암호를 사용하는 것이 자격 증명을 직접 입력하는 것보다 안전합니다.

다음 절차에 따라 JDBC URL을 보안 암호로 저장합니다.

JDBC URL을 보안 암호로 저장하는 방법은 다음과 같습니다.

1.  AWS Management Console로 이동합니다.

1. 검색 창에 Secrets Manager를 지정합니다.

1. **AWS Secrets Manager**을 선택합니다.

1. **새 보안 암호 저장**을 선택합니다.

1. **보안 암호 유형**에서 **다른 유형의 보안 암호**를 선택합니다.

1. **키/값 쌍(Key/value pairs)**에서 `jdbcURL`을(를) 키로, 유효한 JDBC URL을 값으로 지정합니다.

   유효한 JDBC URL의 형식은 인증 사용 여부 및 쿼리 엔진으로 Hive 또는 Presto 사용 여부에 따라 달라집니다. 다음 목록에는 가능한 여러 구성에 사용할 수 있는 유효한 JBDC URL 형식이 있습니다.
   + Hive, 미 인증 – `jdbc:hive2://emr-cluster-master-public-dns:10000/;`
   + Hive, LDAP 인증 - `jdbc:hive2://emr-cluster-master-public-dns-name:10000/;AuthMech=3;UID=david;PWD=welcome123;`
   + SSL이 활성화된 Hive의 경우 JDBC URL 형식은 TLS 구성에 Java Keystore File 사용 여부에 따라 달라집니다. Java Keystore File은 Amazon EMR 클러스터의 마스터 노드 ID를 확인하는 데 도움이 됩니다. Java Keystore File을 사용하려면 EMR 클러스터에서 파일을 생성하고 Data Wrangler에 업로드합니다. 파일을 생성하려면 Amazon EMR 클러스터 `keytool -genkey -alias hive -keyalg RSA -keysize 1024 -keystore hive.jks`에서 다음 명령을 사용합니다. Amazon EMR 클러스터에서 명령을 실행하는 방법은 [AWS Systems Manager(으)로 EMR 클러스터 액세스 보안 확립하기](https://aws.amazon.com/blogs/big-data/securing-access-to-emr-clusters-using-aws-systems-manager/)에서 확인하세요. 파일을 업로드하려면 Data Wrangler UI 왼쪽 탐색창에서 위쪽 화살표를 선택합니다.

     SSL이 활성화된 Hive에 사용할 수 있는 유효한 JDBC URL 형식은 다음과 같습니다.
     + Java Keystore File이 없는 경우 - `jdbc:hive2://emr-cluster-master-public-dns:10000/;AuthMech=3;UID=user-name;PWD=password;SSL=1;AllowSelfSignedCerts=1;`
     + Java Keystore File이 있는 경우 - `jdbc:hive2://emr-cluster-master-public-dns:10000/;AuthMech=3;UID=user-name;PWD=password;SSL=1;SSLKeyStore=/home/sagemaker-user/data/Java-keystore-file-name;SSLKeyStorePwd=Java-keystore-file-passsword;`
   + Presto, 미 인증 – jdbc:presto://*emr-cluster-master-public-dns*:8889/;
   + LDAP 인증 및 SSL 활성화 Presto의 경우 JDBC URL 형식은 TLS 구성에 Java Keystore File 사용 여부에 따라 달라집니다. Java Keystore File은 Amazon EMR 클러스터의 마스터 노드 ID를 확인하는 데 도움이 됩니다. Java Keystore File을 사용하려면 EMR 클러스터에서 파일을 생성하고 Data Wrangler에 업로드합니다. 파일을 업로드하려면 Data Wrangler UI 왼쪽 탐색창에서 위쪽 화살표를 선택합니다. Presto용 Java Keystore File 생성 방법은 [TLS용 Java Keystore File](https://prestodb.io/docs/current/security/tls.html#server-java-keystore)에서 확인하세요. Amazon EMR 클러스터에서 명령을 실행하는 방법은 [AWS Systems Manager(으)로 EMR 클러스터 액세스 보안 확립하기](https://aws.amazon.com/blogs/big-data/securing-access-to-emr-clusters-using-aws-systems-manager/)에서 확인하세요.
     + Java Keystore File이 없는 경우 - `jdbc:presto://emr-cluster-master-public-dns:8889/;SSL=1;AuthenticationType=LDAP Authentication;UID=user-name;PWD=password;AllowSelfSignedServerCert=1;AllowHostNameCNMismatch=1;`
     + Java Keystore File이 있는 경우 - `jdbc:presto://emr-cluster-master-public-dns:8889/;SSL=1;AuthenticationType=LDAP Authentication;SSLTrustStorePath=/home/sagemaker-user/data/Java-keystore-file-name;SSLTrustStorePwd=Java-keystore-file-passsword;UID=user-name;PWD=password;`

Amazon EMR 클러스터에서 데이터를 가져오는 과정에서 문제가 발생할 수 있습니다. 문제 해결 방법은 [Amazon EMR 관련 문제 해결](data-wrangler-trouble-shooting.md#data-wrangler-trouble-shooting-emr)에서 확인하세요.

## Data Bricks에서 데이터 가져오기(JDBC)
<a name="data-wrangler-databricks"></a>

Databricks를 Amazon SageMaker Data Wrangler 흐름의 데이터 소스로 사용할 수 있습니다. Databricks에서 데이터세트를 가져오려면 JDBC(Java Database Connectivity) 가져오기 기능으로 Databricks 데이터베이스에 액세스합니다. 데이터베이스에 액세스한 후 데이터를 확보하고 가져오기 위한 SQL 쿼리를 지정합니다.

Databricks 클러스터를 실행 중이고 해당 클러스터에 JDBC 드라이버를 구성했다고 가정합니다. 자세한 정보는 다음 Databricks 설명서에서 확인하세요.
+ [JDBC 드라이버](https://docs.databricks.com/integrations/bi/jdbc-odbc-bi.html#jdbc-driver)
+ [JDBC 구성 및 연결 파라미터](https://docs.databricks.com/integrations/bi/jdbc-odbc-bi.html#jdbc-configuration-and-connection-parameters)
+ [인증 파라미터](https://docs.databricks.com/integrations/bi/jdbc-odbc-bi.html#authentication-parameters)

Data Wrangler는 JDBC URL을에 저장합니다 AWS Secrets Manager. Amazon SageMaker Studio Classic IAM 실행 역할 권한을 부여해야 Secrets Manager를 사용할 수 있습니다. 다음 절차에 따라 권한을 부여합니다.

Secrets Manager에게 권한을 부여하는 방법은 다음과 같습니다.

1. 에 로그인 AWS Management Console 하고 [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) IAM 콘솔을 엽니다.

1. **역할**을 선택합니다.

1. 검색 창에서 Amazon SageMaker Studio Classic이 사용하는 Amazon SageMaker AI 실행 역할을 지정합니다.

1.  역할을 선택합니다.

1. **권한 추가**를 선택합니다.

1. **인라인 정책 생성(Create inline policy)**을 선택합니다.

1. **서비스(Service)**에서 **Secrets Manager**를 지정하고 선택합니다.

1. **작업(Actions)**에서 **권한 관리(Permissions management)** 옆 화살표 아이콘을 선택합니다.

1. **PutResourcePolicy**를 선택합니다.

1. **리소스**에서 **특정 항목**을 선택합니다.

1. **이 계정에서 모두(Any in this account)** 옆 확인란을 선택합니다.

1. **정책 검토**를 선택합니다.

1. **이름(Name)**에서 이름을 지정합니다.

1. **정책 생성(Create policy)**을 선택합니다.

파티션으로 데이터를 더 빠르게 가져올 수 있습니다. Data Wrangler는 파티션으로 데이터를 병렬 처리할 수 있습니다. 기본적으로 Data Wrangler는 2개의 파티션을 사용합니다. 대부분의 사용 사례에서 2개의 파티션은 거의 최적의 데이터 처리 속도를 제공합니다.

파티션을 2개 이상 지정하기로 선택한 경우 데이터를 파티셔닝할 열을 지정할 수도 있습니다. 열의 값 유형은 숫자 또는 날짜여야 합니다.

데이터 구조와 처리 방식을 이해하는 경우에만 파티션을 적용할 것을 권장합니다.

전체 데이터세트를 가져오거나 데이터세트의 일부를 샘플링할 수 있습니다. Databricks 데이터베이스의 샘플링 옵션은 다음과 같습니다.
+ 없음(None) - 전체 데이터세트 가져오기.
+ 첫 K(First K) - 데이터세트의 첫 K개 행 샘플링. K는 사용자가 지정한 정수.
+ 무작위(Randomized) - 지정된 크기의 무작위 샘플 추출.
+ 계층화(Stratified) - 계층화된 무작위 샘플 추출. 계층화된 샘플은 열의 값 비율을 유지합니다.

다음 절차에 따라 Databricks 데이터베이스에서 데이터를 가져옵니다.

Databricks에서 데이터를 가져오는 방법은 다음과 같습니다.

1. [Amazon SageMaker AI 콘솔](https://console.aws.amazon.com/sagemaker)에 로그인합니다.

1. **Studio**를 선택합니다.

1. **Launch app**(앱 시작)을 선택합니다.

1. 드롭다운 목록에서 **Studio**를 선택합니다.

1. Data Wrangler 흐름의 **데이터 가져오기(Import data)** 탭에서 **Databricks**를 선택합니다.

1. 다음 필드를 지정합니다.
   + **데이터세트 이름(Dataset name)** - Data Wrangler 흐름에 있는 데이터세트에 사용할 이름.
   + **드라이버(Driver)** – **com.simba.spark.jdbc.Driver**.
   + **JDBC URL** – Databricks 데이터베이스의 URL. URL 형식은 Databricks 인스턴스마다 다를 수 있습니다. URL을 찾고 그 내부에서 파라미터를 지정하는 방법은 [JDBC 구성 및 연결 파라미터](https://docs.databricks.com/integrations/bi/jdbc-odbc-bi.html#jdbc-configuration-and-connection-parameters)에서 확인하세요. 다음은 URL 형식을 지정하는 방법에 대한 예제입니다. jdbc:spark://aws-sagemaker-datawrangler.cloud.databricks.com:443/default;transportMode=http;ssl=1;httpPath=sql/protocolv1/o/3122619508517275/0909-200301-cut318;AuthMech=3;UID=*token*;PWD=*personal-access-token*.
**참고**  
JDBC URL 자체를 지정하는 대신 JDBC URL이 포함된 보안 ARN을 지정할 수 있습니다. 보안 암호에는 `jdbcURL:JDBC-URL` 형식의 키-값 쌍이 포함되어야 합니다. 자세한 정보는 [Secrets Manager란 무엇입니까?](https://docs.aws.amazon.com/secretsmanager/latest/userguide/intro.html)에서 확인하세요.

1. SQL SELECT 문을 지정합니다.
**참고**  
Data Wrangler는 쿼리 내의 공통 테이블 표현식(CTE) 또는 임시 테이블을 지원하지 않습니다.

1. **샘플링(Sampling)**에서 샘플링 메서드를 선택합니다.

1. **실행**을 선택합니다.

1. (선택 사항) **미리보기(PREVIEW)**에서 기어 모양 아이콘을 선택하여 **파티션 설정(Partition settings)**을 엽니다.

   1. 파티션 수를 지정합니다. 파티션 수를 지정하면 열별로 파티션을 나눌 수 있습니다.
     + **파티션 수 입력(Enter number of partitions)** - 2보다 큰 값을 지정합니다.
     + (선택 사항) **열별 파티셔닝(Partition by column)** - 다음 필드를 지정합니다. **파티션 수 입력** 값을 지정한 경우에만 열별 파티셔닝이 가능합니다.
       + **열 선택(Select column)** - 데이터 파티션에 사용할 열을 선택합니다. 열의 데이터 유형은 숫자 또는 날짜여야 합니다.
       + **상한(Upper bound)** - 지정한 열 값 중에서 상한은 파티션에서 사용하는 값입니다. 지정하는 값은 가져오는 데이터를 변경하지 않습니다. 가져오기 속도에만 영향을 줍니다. 최상의 성능을 위해 열의 최대값에 가깝게 상한을 지정합니다.
       + **하한(Lower bound)** - 지정한 열 값 중에서 하한은 파티션에서 사용하는 값입니다. 지정하는 값은 가져오는 데이터를 변경하지 않습니다. 가져오기 속도에만 영향을 줍니다. 최상의 성능을 위해 열의 최소값에 가깝게 하한을 지정합니다.

1. **가져오기**를 선택합니다.

## Salesforce 데이터 클라우드에서 데이터를 가져옵니다.
<a name="data-wrangler-import-salesforce-data-cloud"></a>

Salesforce 데이터 클라우드를 Amazon SageMaker Data Wrangler의 데이터 소스로 사용하여 기계 학습용 Salesforce 데이터 클라우드 데이터를 준비할 수 있습니다.

Salesforce 데이터 클라우드를 Data Wrangler 데이터 소스로 사용하면 코드를 한 줄도 작성하지 않고도 Salesforce 데이터에 빠르게 연결할 수 있습니다. Salesforce 데이터를 Data Wrangler에 있는 다른 데이터 소스 데이터와 조인할 수 있습니다.

데이터 클라우드 연결 후 다음을 수행할 수 있습니다.
+ 내장된 시각화로 데이터 시각화
+ 데이터 파악 및 잠재적 오류와 극값 식별
+ 300개 이상의 내장 변환으로 데이터 변환
+ 변환한 데이터 내보내기

**Topics**
+ [관리자 설정](#data-wrangler-import-salesforce-data-cloud-administrator)
+ [데이터 사이언티스트 안내서](#data-wrangler-salesforce-data-cloud-ds)

### 관리자 설정
<a name="data-wrangler-import-salesforce-data-cloud-administrator"></a>

**중요**  
시작하기 전에 사용자가 Amazon SageMaker Studio Classic 버전 1.3.0 이상을 사용하고 있는지 확인하세요. Studio Classic 버전을 확인하고 업데이트하는 방법은 [Amazon SageMaker Data Wrangler로 ML 데이터 준비하기](data-wrangler.md)에서 확인하세요.

Salesforce Data Cloud 액세스 설정 시 다음 작업을 완료해야 합니다.
+ Salesforce 도메인 URL 가져오기. Salesforce는 도메인 URL을 조직 URL로 참조.
+ Salesforce에서 OAuth 자격 증명 가져오기.
+ Salesforce 도메인의 인증 URL 및 토큰 URL 가져오기.
+ OAuth 구성을 사용하여 AWS Secrets Manager 보안 암호를 생성합니다.
+ Data Wrangler가 보안 암호에서 자격 증명을 읽을 때 사용하는 수명 주기 구성 생성.
+ Data Wrangler에 보안 암호 읽기 권한 부여.

이전 작업 수행 후 사용자는 OAuth를 사용하여 Salesforce 데이터 클라우드에 로그인할 수 있습니다.

**참고**  
전체 설정이 완료된 후에도 사용자에게 문제가 발생할 수 있습니다. 문제 해결 방법은 [Salesforce 관련 문제 해결](data-wrangler-trouble-shooting.md#data-wrangler-troubleshooting-salesforce-data-cloud)에서 확인하세요.

다음 절차에 따라 도메인 URL을 가져옵니다.

1. [Salesforce](login.salesforce.com) 로그인 페이지로 이동합니다.

1. **빠른 찾기(Quick find)**에서 **내 도메인(My Domain)**을 지정합니다.

1. **현재 내 도메인 URL(Current My Domain URL)** 값을 텍스트 파일에 복사합니다.

1. `https://`를 URL 시작 부분에 추가합니다.

Salesforce 도메인 URL을 가져온 후 다음 절차에 따라 Salesforce 로그인 자격 증명을 가져와서 Data Wrangler의 Salesforce 데이터 액세스를 허용할 수 있습니다.

Salesforce에서 로그인 자격 증명을 가져와 Data Wrangler에 액세스 권한을 부여하는 방법은 다음과 같습니다.

1. Salesforce 도메인 URL로 이동하여 사용자 계정에 로그인합니다.

1. 기어 모양 아이콘을 선택합니다.

1. 표시되는 검색 창에서 **앱 관리자(App Manager)**를 지정합니다.

1. **새로 연결된 앱(New Connected App)**을 선택합니다.

1. 다음 필드를 지정합니다.
   + 연결된 앱 이름(Connected App Name) - 이름은 마음대로 지정할 수 있으나, Data Wrangler가 포함된 이름을 선택할 것을 권장합니다. 예를 들어, **Salesforce 데이터 클라우드 Data Wrangler 통합**으로 지정할 수 있습니다.
   + API 이름(API name) - 기본값을 사용합니다.
   + 연락 이메일 주소(Contact Email) - 이메일 주소를 지정합니다.
   + **API 헤딩(OAuth 설정 활성화)(API heading(Enable OAuth Settings))** 아래 확인란을 선택하여 OAuth 설정을 활성화합니다.
   + **콜백 URL**에서 Amazon SageMaker Studio Classic URL을 지정합니다. Studio Classic의 URL을 가져오려면에서 URL에 액세스 AWS Management Console 하고 URL을 복사합니다.

1. **선택한 OAuth 범위(Selected OAuth Scopes)** 아래에서 다음을 **사용 가능한 OAuth 범위(Available OAuth Scopes)**에서 **선택한 OAuth 범위**로 옮깁니다.
   + API로 사용자 데이터 관리(`api`)
   + 언제든지 요청 수행(`refresh_token`, `offline_access`)
   + Salesforce 데이터 클라우드 데이터에 대해 ANSI SQL 쿼리 수행(`cdp_query_api`)
   + Salesforce 고객 데이터 플랫폼 프로필 데이터 관리(`cdp_profile_api`)

1. **저장**을 선택합니다. 변경 내용을 저장하면 Salesforce에서 새 페이지가 열립니다.

1. **Continue**를 선택합니다

1. **소비자 키 및 보안 암호(Consumer Key and Secret)**로 이동합니다.

1. **소비자 세부 정보 관리(Manage Consumer Details)**를 선택합니다. Salesforce에서 2단계 인증을 통과해야 할 수도 있는 새 페이지로 리디렉션합니다.

1. 
**중요**  
소비자 키와 고객 보안키를 텍스트 편집기에 복사합니다. 데이터 클라우드를 Data Wrangler에 연결하려면 이 정보가 필요합니다.

1. **연결된 앱 관리(Manage Connected Apps)**로 돌아옵니다.

1. **연결된 앱 이름**과 애플리케이션 이름으로 이동합니다.

1. **관리**를 선택합니다.

   1. **정책 편집(Edit Policies)**을 선택합니다.

   1. **IP 완화(IP Relaxation)**를 **IP 제한 완화(Relax IP restrictions)**로 변경합니다.

   1. **저장**을 선택합니다.

Salesforce 데이터 클라우드에 액세스 권한을 부여한 후에는 사용자에게 권한을 부여해야 합니다. 다음 절차에 따라 권한을 부여합니다.

사용자에게 권한을 부여하는 방법은 다음과 같습니다.

1. 설정 홈페이지로 이동합니다.

1. 왼쪽 탐색창에서 **사용자(Users)**로 검색하고 **사용자** 메뉴 항목을 선택합니다.

1. 사용자 이름이 포함된 하이퍼링크를 선택합니다.

1. **권한 세트 할당(Permission Set Assignments)**으로 이동합니다.

1. **할당 편집(Edit Assignments)**을 선택합니다.

1. 다음 권한을 추가합니다.
   + **고객 데이터 플랫폼 관리자(Customer Data Platform Admin)**
   + **고객 데이터 플랫폼 데이터 인지 전문가(Customer Data Platform Data Aware Specialist)**

1. **저장**을 선택합니다.

Salesforce 도메인에 대한 정보를 가져온 후에는 생성 중인 AWS Secrets Manager 보안 암호의 권한 부여 URL과 토큰 URL을 가져와야 합니다.

다음 절차에 따라 권한 부여 URL과 토큰 URL을 가져옵니다.

**인증 URL 및 토큰 URL을 가져오려면**

1. Salesforce 도메인 URL로 이동합니다.

1. 다음 중 한 가지 방법으로 URL을 가져옵니다. `curl`과 `jq`이(가) 설치된 Linux 배포판에 있는 경우, Linux에서만 작동하는 메서드를 사용할 것을 권장합니다.
   + (Linux 전용) 터미널에서 다음 명령을 지정합니다.

     ```
     curl salesforce-domain-URL/.well-known/openid-configuration | \
     jq '. | { authorization_url: .authorization_endpoint, token_url: .token_endpoint }' | \
     jq '.  += { identity_provider: "SALESFORCE", client_id: "example-client-id", client_secret: "example-client-secret" }'
     ```
   + 

     1. 브라우저에서 **example-org-URL*/.well-known/openid-configuration*으로 이동합니다.

     1. `authorization_endpoint`과 `token_endpoint`을(를) 텍스트 편집기에 복사합니다.

     1. 다음 JSON 객체를 생성합니다.

        ```
        {
          "identity_provider": "SALESFORCE",
          "authorization_url": "example-authorization-endpoint", 
          "token_url": "example-token-endpoint",
          "client_id": "example-consumer-key",
          "client_secret": "example-consumer-secret"
        }
        ```

OAuth 구성 객체를 생성한 후 이를 저장하는 AWS Secrets Manager 보안 암호를 생성할 수 있습니다. 다음 절차에 따라 보안 암호를 생성합니다.

보안 암호를 생성하는 방법은 다음과 같습니다.

1. [AWS Secrets Manager 콘솔](https://console.aws.amazon.com/secretsmanager/)로 이동합니다.

1. **새 보안 암호 저장(Store a new secret)**을 선택합니다.

1. **다른 유형의 보안 암호(Other type of secrets)**를 선택합니다.

1. **키/값(Key/value)** 쌍 아래에서 **일반 텍스트(Plaintext)**를 선택합니다.

1. 빈 JSON을 다음 구성 설정으로 바꿉니다.

   ```
   {
     "identity_provider": "SALESFORCE",
     "authorization_url": "example-authorization-endpoint", 
     "token_url": "example-token-endpoint",
     "client_id": "example-consumer-key",
     "client_secret": "example-consumer-secret"
   }
   ```

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

1. **보안 암호 이름(Secret Name)**에서 보안 암호 이름을 지정합니다.

1. **태그(Tags)** 아래에서 **추가(Add)**를 선택합니다.

   1. **키(Key)**에서 **sagemaker:partner**를 지정합니다. **값(Value)**은 사용 사례에서 유용할 수 있는 값을 지정할 것을 권장합니다. 어떤 값이든 지정 가능합니다.
**중요**  
키를 생성해야 합니다. 키를 생성하지 않으면 Salesforce에서 데이터를 가져올 수 없습니다.

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

1. **저장(Store)**을 선택합니다.

1. 생성한 보안 암호를 선택합니다.

1. 다음 필드를 기록해 둡니다.
   + 보안 암호의 Amazon 리소스 이름(ARN)
   + 보안 암호 이름

보안 암호 생성 후, Data Wrangler가 보안 암호를 읽을 수 있는 권한을 추가해야 합니다. 다음 절차에 따라 권한을 추가합니다.

Data Wrangler에 읽기 권한을 추가하는 방법은 다음과 같습니다.

1. [Amazon SageMaker AI 콘솔](https://console.aws.amazon.com/sagemaker/)로 이동합니다.

1. **도메인**을 선택합니다.

1. Data Wrangler 액세스 시 사용하는 도메인을 선택합니다.

1. 본인의 **사용자 프로필(User Profile)**을 선택합니다.

1. **세부 정보(Details)** 아래에서 **실행 역할(Execution role)**을 찾습니다. ARN 형식은 `arn:aws:iam::111122223333:role/example-role`입니다. SageMaker AI 실행 역할을 기록해 두세요. ARN 내에서는 모든 것이 `role/` 뒤에 옵니다.

1. [IAM 콘솔](https://console.aws.amazon.com/iam)로 이동합니다.

1. **IAM 검색** 검색 창에서 SageMaker AI 실행 역할 이름을 지정합니다.

1.  역할을 선택합니다.

1. **권한 추가**를 선택합니다.

1. **인라인 정책 생성(Create inline policy)**을 선택합니다.

1. JSON 탭을 선택합니다.

1. 편집기에서 다음 정책을 지정합니다.

------
#### [ JSON ]

****  

   ```
   {
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "secretsmanager:GetSecretValue",
                "secretsmanager:PutSecretValue"
            ],
            "Resource": "arn:aws:secretsmanager:*:*:secret:*",
            "Condition": {
                "ForAnyValue:StringLike": {
                    "aws:ResourceTag/sagemaker:partner": "*"
                }
            }
        },
        {
            "Effect": "Allow",
            "Action": [
                "secretsmanager:UpdateSecret"
            ],
            "Resource": "arn:aws:secretsmanager:*:*:secret:AmazonSageMaker-*"
        }
    ]
   }
   ```

------

1. **정책 검토**를 선택합니다.

1. **이름(Name)**에서 이름을 지정합니다.

1. **정책 생성**을 선택합니다.

Data Wrangler에 보안 암호 읽기 권한을 부여한 후에는 Amazon SageMaker Studio Classic 사용자 프로필에 Secrets Manager 보안 암호를 사용하는 수명 주기 구성을 추가해야 합니다.

다음 절차에 따라 수명 주기 구성을 만들고 Studio Classic 프로필에 추가합니다.

수명 주기 구성을 만들고 Studio Classic 프로필에 추가하는 방법은 다음과 같습니다.

1. [Amazon SageMaker AI 콘솔](console.aws.amazon.com/sagemaker)로 이동합니다.

1. **도메인**을 선택합니다.

1. Data Wrangler 액세스 시 사용하는 도메인을 선택합니다.

1. 본인의 **사용자 프로필(User Profile)**을 선택합니다.

1. 다음과 같은 애플리케이션이 보이면 삭제합니다.
   + KernelGateway
   + JupyterKernel
**참고**  
애플리케이션을 삭제하면 Studio Classic이 업데이트됩니다. 업데이트 완료 시까지 시간이 걸릴 수 있습니다.

1. 업데이트 대기중에 **수명 주기 구성(Lifecycle configurations)**을 선택합니다.

1. 현재 페이지에 **Studio Classic 수명 주기 구성**이 명시되어 있는지 확인합니다.

1. **구성 생성**을 선택합니다.

1. **Jupyter 서버 앱(Jupyter server app)** 선택 여부를 확인합니다.

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

1. **이름(Name)**에서 구성 이름을 지정합니다.

1. **스크립트(Scripts)**에서 다음 스크립트를 지정합니다.

   ```
   #!/bin/bash
   set -eux
   
   cat > ~/.sfgenie_identity_provider_oauth_config <<EOL
   {
       "secret_arn": "secrets-arn-containing-salesforce-credentials"
   }
   EOL
   ```

1. **제출**을 선택합니다.

1. 왼쪽 탐색창에서 **도메인**을 선택합니다.

1. 도메인을 선택합니다.

1. **환경**을 선택합니다.

1. **개인용 Studio Classic 앱의 수명 주기 구성**에서 **연결**을 선택합니다.

1. **기존 구성(Existing configuration)**을 선택합니다.

1. **Studio Classic 수명 주기 구성** 아래에서 만든 수명 주기 구성을 선택합니다.

1. **도메인에 연결(Attach to domain)**을 선택합니다.

1. 연결한 수명 주기 구성 옆 확인란을 선택합니다.

1. **기본값으로 설정(Set as default)**을 선택합니다.

수명 주기 구성 설정 시 문제가 발생할 수 있습니다. 디버깅 방법은 [Amazon SageMaker Studio Classic의 수명 주기 구성 디버깅](studio-lcc-debug.md)에서 확인하세요.

### 데이터 사이언티스트 안내서
<a name="data-wrangler-salesforce-data-cloud-ds"></a>

Salesforce 데이터 클라우드를 연결하고 Data Wrangler에 있는 데이터에 액세스하는 방법은 다음과 같습니다.

**중요**  
관리자는 이전 섹션의 정보를 사용하여 Salesforce 데이터 클라우드를 설정해야 합니다. 문제 발생 시 관리자에게 문의하여 문제 해결 지원을 받으세요.

Studio Classic을 열고 버전을 확인하려면 다음 절차를 참조하세요.

1. [사전 조건](data-wrangler-getting-started.md#data-wrangler-getting-started-prerequisite)의 단계를 사용하여 Amazon SageMaker Studio Classic을 통해 Data Wrangler에 액세스할 수 있습니다.

1. Studio Classic 시작 시 사용하고자 하는 사용자 옆에서 **앱 시작**을 선택합니다.

1. **Studio**를 선택합니다.

**Salesforce 데이터 클라우드의 데이터로 Data Wrangler에서 데이터세트를 생성하려면**

1. [Amazon SageMaker AI 콘솔](https://console.aws.amazon.com/sagemaker)에 로그인합니다.

1. **Studio**를 선택합니다.

1. **Launch app**(앱 시작)을 선택합니다.

1. 드롭다운 목록에서 **Studio를** 선택합니다.

1. 홈 아이콘을 선택합니다.

1. **Data**(데이터)를 선택합니다.

1. **Data Wrangler**를 선택합니다.

1. **데이터 가져오기(Import data)**을 선택합니다.

1. **사용 가능(Available)** 아래에서 **Salesforce 데이터 클라우드(Salesforce Data Cloud)**를 선택합니다.

1. **연결 이름(Connection name)**에서 Salesforce 데이터 클라우드 연결 이름을 지정합니다.

1. **조직 URL(Org URL)**에서 Salesforce 계정의 조직 URL을 지정합니다. URL은 관리자로부터 받을 수 있습니다.

1. **연결**을 선택합니다.

1. Salesforce 로그인 자격 증명을 지정합니다.

연결 후 Salesforce 데이터 클라우드의 데이터로 데이터세트를 생성할 수 있습니다.

테이블을 선택한 후 쿼리를 작성하고 실행할 수 있습니다. 쿼리 출력은 **쿼리 결과(Query results)** 아래에 표시됩니다.

쿼리 출력 결정 후 쿼리 결과를 Data Wrangler 흐름으로 가져와 데이터 변환을 수행할 수 있습니다.

데이터세트 생성 후 **데이터 흐름(Data flow)** 화면으로 이동하여 데이터 변환을 시작합니다.

## Snowflake에서 데이터 가져오기
<a name="data-wrangler-snowflake"></a>

SageMaker Data Wrangler에서 Snowflake를 데이터 소스로 사용하여 Snowflake에서 기계 학습용 데이터를 준비할 수 있습니다.

Data Wrangler에서 Snowflake를 데이터 소스로 사용하면 단 한 줄의 코드도 작성하지 않고도 Snowflake에 빠르게 연결할 수 있습니다. Snowflake 데이터를 Data Wrangler에 있는 다른 데이터 소스 데이터와 조인할 수 있습니다.

연결 후, Snowflake에 저장된 데이터를 대화식으로 쿼리하고, 300개 이상의 미리 구성된 데이터 변환으로 데이터를 변환하고, 미리 구성된 강력한 시각화 템플릿 세트로 데이터를 파악하고 잠재적 오류와 극값을 식별하고, 데이터 준비 워크플로의 불일치를 신속하게 식별하고, 모델을 프로덕션에 배포하기 전에 문제를 진단할 수 있습니다. 마지막으로, 데이터 준비 워크플로를 Amazon S3로 내보내 Amazon SageMaker Autopilot, Amazon SageMaker Feature Store, Amazon SageMaker Pipelines 등 다른 SageMaker AI 기능과 함께 사용할 수 있습니다.

생성한 AWS Key Management Service 키를 사용하여 쿼리의 출력을 암호화할 수 있습니다. 에 대한 자세한 내용은 단원을 AWS KMS참조하십시오[AWS Key Management Service](https://docs.aws.amazon.com//kms/latest/developerguide/overview.html).

**Topics**
+ [관리자 안내서](#data-wrangler-snowflake-admin)
+ [데이터 사이언티스트 안내서](#data-wrangler-snowflake-ds)

### 관리자 안내서
<a name="data-wrangler-snowflake-admin"></a>

**중요**  
세분화된 액세스 제어 및 모범 사례에 대한 자세한 내용은 [보안 액세스 제어](https://docs.snowflake.com/en/user-guide/security-access-control.html)에서 확인하세요.

이 섹션은 SageMaker Data Wrangler에서 Snowflake 액세스 설정을 담당하는 Snowflake 관리자를 대상으로 합니다.

**중요**  
관리자는 Snowflake 내 액세스 제어의 관리 및 모니터링을 담당합니다. Data Wrangler는 Snowflake와 관련된 액세스 제어 계층을 추가하지 않습니다.  
액세스 제어에는 다음이 포함됩니다.  
사용자 액세스 데이터
(선택 사항) Snowflake에 Amazon S3 버킷에 쿼리 결과를 쓸 수 있는 기능을 제공하는 스토리지 통합
사용자가 실행할 수 있는 쿼리

#### (선택 사항) Snowflake 데이터 가져오기 권한 구성
<a name="data-wrangler-snowflake-admin-config"></a>

기본적으로 Data Wrangler는 Amazon S3 위치에 데이터 사본을 생성하지 않고 Snowflake 데이터를 쿼리합니다. Snowflake와 스토리지 통합을 구성하는 경우 다음 정보를 사용합니다. 사용자는 스토리지 통합을 통해 쿼리 결과를 Amazon S3 위치에 저장할 수 있습니다.

사용자마다 민감한 데이터 액세스 수준이 다를 수 있습니다. 데이터 보안 최적화를 위해 개별 사용자에게 자체 스토리지 통합을 제공합니다. 개별 스토리지 통합에는 자체 데이터 거버넌스 정책이 있어야 합니다.

현재 이 기능은 옵트인 리전에서는 사용할 수 없습니다.

Snowflake는 S3 버킷 및 디렉터리에 대해 다음과 같은 권한이 있어야 디렉터리 내 파일에 액세스할 수 있습니다.
+ `s3:GetObject`
+ `s3:GetObjectVersion`
+ `s3:ListBucket`
+ `s3:ListObjects`
+ `s3:GetBucketLocation`

**IAM 정책 생성**

Snowflake가 Amazon S3 버킷에서 데이터를 로드 및 언로드하는 액세스 권한을 구성하려면 IAM 정책을 생성해야 합니다.

다음은 정책 생성 시 사용하는 JSON 정책 문서입니다.

```
# Example policy for S3 write access
# This needs to be updated
{
"Version": "2012-10-17",		 	 	 
"Statement": [
  {
    "Effect": "Allow",
    "Action": [
        "s3:PutObject",
        "s3:GetObject",
        "s3:GetObjectVersion",
        "s3:DeleteObject",
        "s3:DeleteObjectVersion"
    ],
    "Resource": "arn:aws:s3:::bucket/prefix/*"
  },
  {
    "Effect": "Allow",
    "Action": [
        "s3:ListBucket"
    ],
    "Resource": "arn:aws:s3:::bucket/",
    "Condition": {
        "StringLike": {
            "s3:prefix": ["prefix/*"]
        }
    }
  }
 ]
}
```

정책 문서로 정책을 생성하는 방법과 절차는 [IAM 정책 생성하기](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html)에서 확인하세요.

Snowflake에서 IAM 권한을 사용하는 방법에 대한 개요가 있는 설명서는 다음 리소스에서 확인하세요.
+ [IAM이란 무엇입니까?](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html)
+ [에서 IAM 역할 생성 AWS](https://docs.snowflake.com/en/user-guide/data-load-s3-config-storage-integration.html#step-2-create-the-iam-role-in-aws)
+ [Snowflake에서 클라우드 스토리지 통합 생성하기](https://docs.snowflake.com/en/user-guide/data-load-s3-config-storage-integration.html#step-3-create-a-cloud-storage-integration-in-snowflake)
+ [Snowflake 계정의 AWS IAM 사용자 검색](https://docs.snowflake.com/en/user-guide/data-load-s3-config-storage-integration.html#step-4-retrieve-the-aws-iam-user-for-your-snowflake-account)
+ [IAM 사용자에게 버킷 액세스 권한 부여하기](https://docs.snowflake.com/en/user-guide/data-load-s3-config-storage-integration.html#step-5-grant-the-iam-user-permissions-to-access-bucket-objects)

데이터 사이언티스트의 Snowflake 역할 사용 권한을 스토리지 통합에 부여하려면 `GRANT USAGE ON INTEGRATION integration_name TO snowflake_role;`을 실행해야 합니다.
+ `integration_name`은 스토리지 통합의 이름입니다.
+ `snowflake_role`은 데이터 사이언티스트 사용자에게 부여되는 기본 [Snowflake 역할](https://docs.snowflake.com/en/user-guide/security-access-control-overview.html#roles)의 이름입니다.

#### Snowflake OAuth 액세스 설정하기
<a name="data-wrangler-snowflake-oauth-setup"></a>

사용자가 Data Wrangler에 자격 증명을 직접 입력하도록 하는 대신, ID 제공업체를 통해 Snowflake에 액세스하도록 할 수 있습니다. 다음은 Data Wrangler가 지원하는 ID 제공업체에 대한 Snowflake 설명서로 연결되는 링크입니다.
+ [Azure AD](https://docs.snowflake.com/en/user-guide/oauth-azure.html)
+ [Okta](https://docs.snowflake.com/en/user-guide/oauth-okta.html)
+ [Ping Federate](https://docs.snowflake.com/en/user-guide/oauth-pingfed.html)

이전 링크의 설명서를 사용하여ID 제공업체 액세스를 설정합니다. 이 섹션의 정보와 절차는 설명서를 사용하여 Data Wrangler에서 Snowflake에 액세스하는 방법을 이해하는 데 도움이 됩니다.

ID 제공업체는 Data Wrangler를 애플리케이션으로 인식해야 합니다. 다음 절차에 따라 Data Wrangler를 ID 제공업체 내 애플리케이션으로 등록합니다.

1. Data Wrangler를 애플리케이션으로 등록하는 프로세스를 시작하는 구성을 선택합니다.

1. ID 제공업체 사용자에게 Data Wrangler 액세스 권한을 부여합니다.

1. 클라이언트 자격 증명을 AWS Secrets Manager 보안 암호로 저장하여 OAuth 클라이언트 인증을 켭니다.

1. https://*domain-ID*.studio.*AWS 리전*.sagemaker.aws/jupyter/default/lab 형식으로 리디렉션 URL을 지정합니다.
**중요**  
Amazon SageMaker AI 도메인 ID를 지정하고 Data Wrangler를 실행하는 데 AWS 리전 사용하는를 지정합니다.
**중요**  
각 Amazon SageMaker AI 도메인과 Data Wrangler를 실행하는 AWS 리전 위치에 대한 URL을 등록해야 합니다. 도메인에서 리디렉션 URLs이 설정되지 AWS 리전 않은 사용자는 자격 증명 공급자를 통해 인증하여 Snowflake 연결에 액세스할 수 없습니다.

1. 권한 부여 코드 및 토큰 권한 새로 고침 유형이 Data Wrangler 애플리케이션에서 허용되는지 확인하세요.

ID 제공업체 내에서 사용자 수준에서 OAuth 토큰을 Data Wrangler에 전송하는 서버를 설정해야 합니다. 서버는 Snowflake를 대상으로 토큰을 전송합니다.

Snowflake는 IAM 역할이 사용하는 고유한 역할의 개념을 사용합니다 AWS. Snowflake 계정과 연결된 기본 역할을 사용하려면 어떤 역할이든 사용할 수 있도록 ID 제공업체를 구성해야 합니다. 예를 들어, 사용자의 Snowflake 프로필 내 기본 역할이 `systems administrator`인 경우, Data Wrangler에서 Snowflake로의 연결 역할은 `systems administrator`이(가) 됩니다.

다음 절차에 따라 서버를 설정합니다.

서버 설정 방법은 다음과 같습니다. 마지막 단계를 제외한 모든 단계는 Snowflake 내에서 실행됩니다.

1. 서버 또는 API 설정을 시작합니다.

1. 권한 부여 코드 및 토큰 권한 새로 고침 유형을 사용하도록 권한 부여 서버를 구성합니다.

1. 액세스 토큰 전체 기간을 지정합니다.

1. 새로 고침 토큰 유휴 제한 시간을 설정합니다. 유휴 제한 시간은 새로 고침 토큰을 사용하지 않을 경우 만료되는 시간입니다.
**참고**  
Data Wrangler에서 작업을 예약하는 경우, 유휴 제한 시간을 처리 작업 빈도보다 길게 설정할 것을 권장합니다. 그렇지 않으면 새로 고침 토큰이 실행되기 전에 만료되어 일부 처리 작업이 실패할 수 있습니다. 새로 고침 토큰이 만료되면 사용자는 Data Wrangler를 통해 Snowflake 연결에 액세스하여 다시 인증해야 합니다.

1. `session:role-any`을(를) 새 범위로 지정합니다.
**참고**  
Azure AD에서 범위의 고유 식별자를 복사합니다. Data Wrangler에 해당 식별자를 입력해야 합니다.

1. 
**중요**  
Snowflake용 외부 OAuth 보안 통합에서 `external_oauth_any_role_mode`을(를) 활성화합니다.

**중요**  
Data Wrangler는 교대식 새로 고침 토큰을 지원하지 않습니다. 교대식 새로 고침 토큰을 사용하면 액세스가 실패하거나 사용자가 자주 로그인해야 할 수 있습니다.

**중요**  
새로 고침 토큰이 만료되면 사용자는 Data Wrangler를 통해 Snowflake 연결에 액세스하여 다시 인증해야 합니다.

OAuth 공급자 설정 후, 공급자 연결 시 필요한 정보를 Data Wrangler에 입력합니다. ID 제공업체의 설명서를 사용하여 다음 필드의 값을 가져올 수 있습니다.
+ 토큰 URL(Token URL) - ID 제공업체가 Data Wrangler에 보내는 토큰의 URL.
+ 권한 부여 URL(Authorization URL) - ID 제공업체의 권한 부여 서버 URL.
+ 클라이언트 ID(Client ID) - ID 제공업체의 ID.
+ 클라이언트 보안 암호(Client secret) - 권한 부여 서버 또는 API만 인식하는 보안 암호.
+ (Azure AD 전용) 복사한 OAuth 범위 자격 증명다.

필드와 값을 AWS Secrets Manager 보안 암호에 저장하고 Data Wrangler에 사용 중인 Amazon SageMaker Studio Classic 수명 주기 구성에 추가합니다. 수명 주기 구성은 쉘 스크립트입니다. 이것으로 Data Wrangler가 보안 암호의 Amazon 리소스 이름(ARN)에 액세스할 수 있게 합니다. 보안 암호 생성에 대한 자세한 내용은 [하드 코딩된 보안 암호를 다음으로 이동을 참조하세요 AWS Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/hardcoded.html). Studio Classic에서 수명 주기 구성을 적용하는 방법은 [수명 주기 구성을 사용하여 Amazon SageMaker Studio Classic 사용자 지정](studio-lcc.md)에서 확인하세요.

**중요**  
Secrets Manager 보안 암호를 만들기 전에 Amazon SageMaker Studio Classic에서 사용하는 SageMaker AI 실행 역할에 Secrets Manager에서 보안 암호를 만들고 업데이트할 수 있는 권한이 있는지 확인하세요. 권한 추가에 대한 자세한 정보는 [예: 보안 암호 생성 권한](https://docs.aws.amazon.com/secretsmanager/latest/userguide/auth-and-access_examples.html#auth-and-access_examples_create)에서 확인하세요.

Okta 및 Ping Federate의 보안 암호 형식은 다음과 같습니다.

```
{
    "token_url":"https://identityprovider.com/oauth2/example-portion-of-URL-path/v2/token",
    "client_id":"example-client-id",
    "client_secret":"example-client-secret",
    "identity_provider":"OKTA"|"PING_FEDERATE",
    "authorization_url":"https://identityprovider.com/oauth2/example-portion-of-URL-path/v2/authorize"
}
```

Azure AD의 보안 암호 형식은 다음과 같습니다.

```
{
    "token_url":"https://identityprovider.com/oauth2/example-portion-of-URL-path/v2/token",
    "client_id":"example-client-id",
    "client_secret":"example-client-secret",
    "identity_provider":"AZURE_AD",
    "authorization_url":"https://identityprovider.com/oauth2/example-portion-of-URL-path/v2/authorize",
    "datasource_oauth_scope":"api://appuri/session:role-any)"
}
```

생성한 Secrets Manager 보안 암호를 사용하는 수명 주기 구성이 있어야 합니다. 수명 주기 구성을 생성하거나 이미 생성된 구성을 수정할 수 있습니다. 구성에는 다음 스크립트를 사용해야 합니다.

```
#!/bin/bash

set -eux

## Script Body

cat > ~/.snowflake_identity_provider_oauth_config <<EOL
{
    "secret_arn": "example-secret-arn"
}
EOL
```

수명 주기 구성 설정 방법은 [수명 주기 구성 생성 및 Amazon SageMaker Studio Classic과 연결](studio-lcc-create.md)에서 확인하세요. 설정 프로세스를 진행하는 방법은 다음과 같습니다.
+ 구성의 애플리케이션 유형을 `Jupyter Server`(으)로 설정합니다.
+ 사용자가 있는 Amazon SageMaker AI 도메인에 구성을 연결합니다.
+ 구성이 기본적으로 실행하도록 합니다. 사용자가 Studio Classic에 로그인할 때마다 실행되어야 합니다. 그렇지 않으면 사용자가 Data Wrangler를 사용할 때 구성에 저장된 자격 증명을 사용할 수 없습니다.
+ 수명 주기 구성은 사용자의 홈 폴더에서 `snowflake_identity_provider_oauth_config`(이)라는 이름의 파일을 생성합니다. 이 파일에는 Secrets Manager 보안 암호가 있습니다. Jupyter 서버 인스턴스가 초기화될 때마다 해당 파일이 사용자의 홈 폴더에 있는지 확인하세요.

#### 를 통한 Data Wrangler와 Snowflake 간의 프라이빗 연결 AWS PrivateLink
<a name="data-wrangler-security-snowflake-vpc"></a>

이 섹션에서는를 AWS PrivateLink 사용하여 Data Wrangler와 Snowflake 간에 프라이빗 연결을 설정하는 방법을 설명합니다. 다음 섹션에 단계별 설명이 있습니다.

##### VPC 생성
<a name="data-wrangler-snowflake-snowflake-vpc-setup"></a>

VPC를 설정하지 않은 경우, [새 VPC 생성](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/gsg_create_vpc.html#create_vpc) 지침에 따라 생성합니다.

프라이빗 연결 설정 시 사용할 VPC를 선택한 후, Snowflake 관리자에게 다음 자격 증명을 제공하여 AWS PrivateLink을(를) 활성화합니다.
+ VPC ID
+ AWS 계정 ID
+ Snowflake 액세스 시 사용하는 관련 계정 URL

**중요**  
Snowflake 설명서의 설명대로 Snowflake 계정 활성화는 최대 2영업일이 소요될 수 있습니다.

##### Snowflake AWS PrivateLink 통합 설정
<a name="data-wrangler-snowflake-snowflake-vpc-privatelink-setup"></a>

 AWS PrivateLink 가 활성화되면 Snowflake 워크시트에서 다음 명령을 실행하여 리전의 AWS PrivateLink 구성을 검색합니다. Snowflake 콘솔에 로그인하고 **워크시트(Worksheets)** 아래에 `select SYSTEM$GET_PRIVATELINK_CONFIG();`을(를) 입력합니다.

1. 결과 JSON 객체에서 `privatelink-account-name`, `privatelink_ocsp-url`, `privatelink-account-url`, `privatelink_ocsp-url` 값을 검색합니다. 개별 값의 예는 다음 코드 조각에 있습니다. 이 값을 저장했다가 나중에 사용합니다.

   ```
   privatelink-account-name: xxxxxxxx.region.privatelink
   privatelink-vpce-id: com.amazonaws.vpce.region.vpce-svc-xxxxxxxxxxxxxxxxx
   privatelink-account-url: xxxxxxxx.region.privatelink.snowflakecomputing.com
   privatelink_ocsp-url: ocsp.xxxxxxxx.region.privatelink.snowflakecomputing.com
   ```

1.  AWS 콘솔로 전환하고 VPC 메뉴로 이동합니다.

1. 왼쪽 창에서 **엔드포인트(Endpoints)** 링크를 선택하여 **VPC 엔드포인트(VPC Endpoints)** 설정으로 이동합니다.

   그 곳에서 **엔드포인트 생성(Create Endpoint)**을 선택합니다.

1. 다음 스크린샷과 같이 **이름별 서비스 찾기(Find service by name)** 라디오 버튼을 선택합니다.  
![\[콘솔의 엔드포인트 만들기 섹션입니다.\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/images/studio/mohave/snowflake-radio.png)

1. **서비스 이름(Service Name)** 필드에 이전 단계에서 검색한 `privatelink-vpce-id` 값을 붙여넣고 **검증(Verify)**을 선택합니다.

   정상적으로 연결되면 다음 스크린샷과 같이 **서비스 이름 찾음(Service name found)**이라는 녹색 알림 메시지가 화면에 나타나고 **VPC** 및 **서브넷(Subnet)** 옵션이 자동으로 확장됩니다. 대상 리전에 따라 결과 화면에 다른 AWS 리전 이름이 표시될 수 있습니다.  
![\[연결에 성공했음을 보여주는 콘솔의 엔드포인트 만들기 섹션입니다.\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/images/studio/mohave/snowflake-service-name-found.png)

1. **VPC** 드롭다운 목록에서 Snowflake로 전송한 것과 동일한 VPC ID를 선택합니다.

1. 서브넷을 아직 생성하지 않은 경우, 다음 지침에 따라 서브넷을 생성합니다.

1. **서브넷**을 **VPC** 드롭다운 목록에서 선택합니다. 그 다음에 **서브넷 생성(Create subnet)**을 선택하고 프롬프트에 따라 VPC에 서브셋을 생성합니다. Snowflake를 전송한 VPC ID를 선택해야 합니다.

1. **보안 그룹 구성(Security Group Configuration)** 아래에서 **새 보안 그룹 생성(Create New Security Group)**을 선택하여 새 탭에서 기본 **보안 그룹(Security Group)** 화면을 엽니다. 이 새 탭에서 **보안 그룹 생성(Create Security Group)**을 선택합니다.

1. 보안 그룹 이름(예: `datawrangler-doc-snowflake-privatelink-connection`)과 설명을 입력합니다. 이전 단계에서 사용한 VPC ID를 선택해야 합니다.

1. VPC 내에서 이 VPC 엔드포인트로 들어오는 트래픽을 허용하는 두 가지 규칙을 추가합니다.

   별도 탭에서 **VPC(Your VPCs)** 아래에 있는 VPC로 이동하여 VPC의 CIDR 블록을 검색합니다. 그 다음에 **규칙 추가(Add Rule)**를 **인바운드 규칙(Inbound Rules)** 섹션에서 선택합니다. `HTTPS` 유형을 선택하고, 양식에서 **소스**를 **사용자 지정**으로 둔 다음, 이전 `describe-vpcs` 호출에서 검색된 값(예: `10.0.0.0/16`)을 붙여넣습니다.

1. **보안 그룹 생성**을 선택합니다. **보안 그룹 ID(Security Group ID)**를 새로 생성된 보안 그룹(예: `sg-xxxxxxxxxxxxxxxxx`)에서 검색합니다.

1. **VPC 엔드포인트** 구성 화면에서 기본 보안 그룹을 제거합니다. 검색 필드에 보안 그룹 ID를 붙여넣고 확인란을 선택합니다.  
![\[콘솔의 보안 그룹 섹션입니다.\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/images/studio/mohave/snowflake-security-group.png)

1. **엔드포인트 생성**을 선택합니다.

1. 엔드포인트가 정상적으로 생성되면 VPC ID로 지정된 VPC 엔드포인트 구성으로 연결되는 링크가 있는 페이지가 표시됩니다. 링크를 선택하여 전체 구성을 봅니다.  
![\[엔드포인트 세부 정보 섹션입니다.\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/images/studio/mohave/snowflake-success-endpoint.png)

   DNS 이름 목록에서 맨 위에 있는 레코드를 검색합니다. 지역 이름(예: `us-west-2`)만 포함하고 가용 영역 문자 표기(예: `us-west-2a`)가 없기 때문에 기타 DNS 이름과 구별할 수 있습니다. 이 정보를 저장했다가 나중에 사용합니다.

##### VPC에서 Snowflake 엔드포인트 DNS 구성하기
<a name="data-wrangler-snowflake-vpc-privatelink-dns"></a>

이 섹션에는 VPC에서 Snowflake 엔드포인트 DNS를 구성하는 방법에 대한 설명이 있습니다. 이를 통해 VPC가 Snowflake AWS PrivateLink 엔드포인트에 대한 요청을 해결할 수 있습니다.

1.  AWS 콘솔에서 [Route 53 메뉴](https://console.aws.amazon.com/route53)로 이동합니다.

1. **호스팅 영역(Hosted Zones)** 옵션을 선택합니다(필요 시, 왼쪽 메뉴를 확장하면 이 옵션을 찾을 수 있음).

1. **Create Hosted Zone(호스팅 영역 생성)**을 선택합니다.

   1. **도메인 이름(Domain name)** 필드에서 이전 단계에서 저장한 `privatelink-account-url` 값을 참조합니다. 이 필드에서는 Snowflake 계정 ID가 DNS 이름에서 제거되고 리전 식별자로 시작하는 값만 사용합니다. **리소스 레코드 세트(Resource Record Set)**도 `region.privatelink.snowflakecomputing.com` 같은 하위 도메인용으로 나중에 생성됩니다.

   1. **프라이빗 호스팅 영역(Private Hosted Zone)** 라디오 버튼을 **유형(Type)** 섹션에서 선택합니다. 리전 코드는 `us-west-2`이(가) 아닐 수 있습니다. Snowflake가 반환한 DNS 이름을 참조합니다.  
![\[콘솔의 호스팅 영역 만들기 페이지입니다.\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/images/studio/mohave/snowflake-create-hosted-zone.png)

   1. **호스팅 영역과 연결할 VPC(VPCs to associate with the hosted zone)** 섹션에서 VPC가 위치한 리전과 이전 단계에서 사용한 VPC ID를 선택합니다.  
![\[콘솔의 호스팅 영역 섹션과 연결할 VPC 섹션입니다.\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/images/studio/mohave/snowflake-vpc-hosted-zone.png)

   1. **호스팅 영역 생성(Create hosted zone)**을 선택합니다.

1. 다음으로, `privatelink-account-url`과 `privatelink_ocsp-url`에 대한 레코드를 각각 하나씩 생성합니다.
   + **호스팅 영역** 메뉴에서 **레코드 세트 생성(Create Record Set)**을 선택합니다.

     1. **레코드 이름(Record name)** 아래에 Snowflake 계정 ID만 입력합니다(`privatelink-account-url`의 첫 8자).

     1. **레코드 유형(Record type)**에서 **CNAME**을 선택합니다.

     1. **값(Value)** 아래에 Snowflake AWS PrivateLink 통합 설정 섹션의 마지막 단계에서 검색한 리전 VPC 엔드포인트의 DNS 이름을 입력합니다.**  
![\[콘솔의 레코드 빠르게 만들기 섹션입니다.\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/images/studio/mohave/snowflake-quick-create-record.png)

     1. **레코드 생성**을 선택합니다.

     1. `privatelink-ocsp-url`(으)로 표시한 OCSP 레코드에 대해 `ocsp`부터 레코드 이름의 8자 Snowflake ID(예: `ocsp.xxxxxxxx`)까지 이전 단계를 반복합니다.  
![\[콘솔의 레코드 빠르게 만들기 섹션입니다.\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/images/studio/mohave/snowflake-quick-create-ocsp.png)

##### VPC에 Route 53 해석기 인바운드 엔드포인트 구성하기
<a name="data-wrangler-snowflake-vpc-privatelink-route53"></a>

이 섹션에는 VPC에서 Route 53 해석기 인바운드 엔드포인트를 구성하는 방법에 대한 설명이 있습니다.

1.  AWS 콘솔에서 [Route 53 메뉴](https://console.aws.amazon.com/route53)로 이동합니다.
   + 왼쪽 창에 있는 **보안(Security)** 섹션에서 **보안 그룹(Security Groups)** 옵션을 선택합니다.

1. **보안 그룹 생성**을 선택합니다.
   + 보안 그룹 이름(예: `datawranger-doc-route53-resolver-sg`)과 설명을 입력합니다.
   + 이전 단계에서 사용한 VPC ID를 선택합니다.
   + VPC CIDR 블록 내에서 UDP 및 TCP를 통한 DNS를 허용하는 규칙을 생성합니다.  
![\[콘솔의 인바운드 규칙 섹션입니다.\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/images/studio/mohave/snowflake-inbound-rules.png)
   + **보안 그룹 생성**을 선택합니다. **보안 그룹 ID(Security Group ID)**에 유의하여 VPC 엔드포인트 보안 그룹에 트래픽을 허용하는 규칙을 추가합니다.

1.  AWS 콘솔에서 [Route 53 메뉴](https://console.aws.amazon.com/route53)로 이동합니다.
   + **해석기(Resolver)** 섹션에서 **인바운드 엔드포인트(Inbound Endpoint)** 옵션을 선택합니다.

1. **인바운드 엔드포인트 생성(Create Inbound Endpoint)**을 선택합니다.
   + 엔드포인트 이름을 입력합니다.
   + **리전의 VPC(VPC in the Region)** 드롭다운 목록에서 이전 단계에서 사용한 VPC ID를 선택합니다.
   + **이 엔드포인트의 보안 그룹(Security group for this endpoint)** 드롭다운 목록에서 이 섹션의 2단계에 있는 보안 그룹 ID를 선택합니다.  
![\[콘솔의 인바운드 엔드포인트에 대한 일반 설정 섹션입니다.\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/images/studio/mohave/snowflake-inbound-endpoint.png)
   + **IP 주소(IP Address)** 섹션에서 가용 영역을 선택하고 서브넷을 선택한 다음 각 IP 주소마다 **자동으로 선택된 IP 주소 사용(Use an IP address that is selected automatically)** 라디오 선택기를 선택된 상태로 둡니다.  
![\[콘솔의 IP 주소 섹션입니다.\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/images/studio/mohave/snowflake-ip-address-1.png)
   + **제출**을 선택합니다.

1. **인바운드 엔드포인트** 생성 후 선택합니다.

1. 인바운드 엔드포인트 생성 후 해석기의 두 IP 주소를 기록해 둡니다.  
![\[콘솔의 IP 주소 섹션입니다.\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/images/studio/mohave/snowflake-ip-addresses-2.png)

##### SageMaker AI VPC 엔드포인트
<a name="data-wrangler-snowflake-sagemaker-vpc-endpoints"></a>

 이 섹션에는 Amazon SageMaker Studio Classic, SageMaker 노트북, SageMaker API, SageMaker 런타임, Amazon SageMaker Feature Store 런타임의 VPC 엔드포인트를 만드는 방법에 대한 설명이 있습니다.

**모든 엔드포인트에 적용되는 보안 그룹을 생성합니다.**

1.  AWS 콘솔에서 [EC2 메뉴](https://console.aws.amazon.com/ec2)로 이동합니다.

1. **네트워킹 및 보안(Network & Security)** 섹션에서 **보안 그룹** 옵션을 선택합니다.

1. **보안 그룹 생성**을 선택합니다.

1. 보안 그룹 이름 및 설명(예: `datawrangler-doc-sagemaker-vpce-sg`)을 입력합니다. SageMaker AI에서 이 그룹으로 들어오는 HTTPS를 통한 트래픽을 허용하는 규칙이 나중에 추가됩니다.

**엔드포인트 생성**

1.  AWS 콘솔에서 [VPC 메뉴](https://console.aws.amazon.com/vpc)로 이동합니다.

1. **엔드포인트** 옵션을 선택합니다.

1. **엔드포인트 생성**을 선택합니다.

1. **검색(Search)** 필드에서 이름으로 서비스를 검색합니다.

1. **VPC** 드롭다운 목록에서 Snowflake AWS PrivateLink 연결이 있는 VPC를 선택합니다.

1. **서브넷(Subnets)** 섹션에서 Snowflake PrivateLink 연결에 액세스할 수 있는 서브넷을 선택합니다.

1. **DNS 이름 활성화(Enable DNS Name)** 확인란을 선택 상태로 둡니다.

1. **보안 그룹** 섹션에서 이전 섹션에서 생성한 보안 그룹을 선택합니다.

1. **엔드포인트 생성**을 선택합니다.

**Studio Classic 및 Data Wrangler 구성**

이 섹션에는 Studio Classic과 Data Wrangler를 구성하는 방법에 대한 설명이 있습니다.

1. 보안 그룹을 구성합니다.

   1.  AWS 콘솔에서 Amazon EC2 메뉴로 이동합니다.

   1. **보안 그룹** 옵션을 **네트워크 및 보안** 섹션에서 선택합니다.

   1. **보안 그룹 생성**을 선택합니다.

   1. 보안 그룹의 이름 및 설명(예: `datawrangler-doc-sagemaker-studio`)을 입력합니다.

   1. 다음 인바운드 규칙을 생성합니다.
      + Snowflake PrivateLink 통합 설정 단계에서 생성한 Snowflake PrivateLink 연결을 위해 프로비저닝한 보안 그룹에 대한 HTTPS 연결.**
      + Snowflake PrivateLink 통합 단계에서 생성한 Snowflake PrivateLink 연결을 위해 프로비저닝한 보안 그룹에 대한 HTTP 연결.**
      + VPC에 Route 53 해석기 인바운드 엔드포인트 구성하기 2단계에서 생성한 Route 53 인바운드 엔드포인트 보안 그룹에 대한 DNS용 UDP 및 TCP(포트 53).**

   1. 오른쪽 하단에서 **보안 그룹 생성** 버튼을 선택합니다.

1. Studio Classic을 구성합니다.
   +  AWS 콘솔에서 SageMaker AI 메뉴로 이동합니다.
   + 왼쪽 콘솔에서 **SageMaker AI Studio Classic** 옵션을 선택합니다.
   + 도메인을 구성하지 않은 경우, **시작하기(Get Started)** 메뉴가 나타납니다.
   + **표준 설정(Standard Setup)** 옵션을 **시작하기** 메뉴에서 선택합니다.
   + **인증 방법**에서 **AWS 자격 증명 및 액세스 관리(IAM)**를 선택합니다.
   + 사용 사례에 따라 **권한(Permissions)** 메뉴에서 새 역할을 생성하거나 기존 역할을 사용할 수 있습니다.
     + **새 역할 생성(Create a new role)**을 선택하면 S3 버킷 이름과 정책을 입력하는 옵션이 자동으로 생성됩니다.
     + 액세스가 필요한 S3 버킷에 대한 권한이 있는 역할을 이미 생성한 경우, 드롭다운 목록에서 역할을 선택합니다. 이 역할에는 `AmazonSageMakerFullAccess` 정책이 연결되어야 합니다.
   + **네트워크 및 스토리지** 드롭다운 목록을 선택하여 SageMaker AI가 사용하는 VPC, 보안, 서브넷을 구성합니다.
     + **VPC** 아래에서 Snowflake PrivateLink 연결이 있는 VPC를 선택합니다.
     + **서브넷(Subnets)** 아래에서 Snowflake PrivateLink 연결에 액세스할 수 있는 서브넷을 선택합니다.
     + **Studio Classic용 네트워크 액세스** 아래에서 **VPC 전용**을 선택합니다.
     + **보안 그룹** 아래에서 1단계에서 생성한 보안 그룹을 선택합니다.
   + **제출**을 선택합니다.

1. SageMaker AI 보안 그룹을 편집합니다.
   + 다음 인바운드 규칙을 생성합니다.
     + SageMaker AI가 2단계에서 자동으로 만든 인바운드 및 아웃바운드 NFS 보안 그룹에 연결되는 포트 2049(보안 그룹 이름에 Studio Classic 도메인 ID 포함).
     + 모든 TCP 포트에 자체 액세스(VPC 전용 SageMaker AI의 경우 필수).

1. VPC 엔드포인트 및 보안 그룹을 편집합니다.
   +  AWS 콘솔에서 Amazon EC2 메뉴로 이동합니다.
   + 이전 단계에서 생성한 보안 그룹을 찾습니다.
   + 1단계에서 생성한 보안 그룹으로부터의 HTTPS 트래픽을 허용하는 인바운드 규칙을 추가합니다.

1. 사용자 프로필을 생성합니다.
   + **SageMaker Studio Classic 컨트롤 패널**에서 **사용자 추가**를 선택합니다.
   + 사용자 이름을 제공합니다.
   + **실행 역할**을 생성하거나 기존 역할을 사용합니다.
     + **새 역할 생성(Create a new role)**을 선택하면 Amazon S3 버킷 이름과 정책을 입력하는 옵션이 자동으로 생성됩니다.
     + 액세스가 필요한 Amazon S3 버킷에 대한 권한이 있는 역할을 이미 생성한 경우, 드롭다운 목록에서 역할을 선택합니다. 이 역할에는 `AmazonSageMakerFullAccess` 정책이 연결되어야 합니다.
   + **제출**을 선택합니다.

1. 데이터 흐름을 생성합니다(이전 섹션에 있는 데이터 사이언티스트 안내서 참조).
   + Snowflake 연결 추가 시, 일반 Snowflake 계정 이름 대신 `privatelink-account-name` 값(Snowflake PrivateLink 통합 설정 단계)을 **Snowflake account name (alphanumeric)(Snowflake 계정 이름(영숫자))** 필드에 입력합니다.** 그 밖의 모든 항목은 변경되지 않습니다.

#### 데이터 사이언티스트에게 정보 제공하기
<a name="data-wrangler-snowflake-admin-ds-info"></a>

데이터 과학자에게 Amazon SageMaker AI Data Wrangler에서 Snowflake에 액세스할 때 필요한 정보를 제공합니다.

**중요**  
사용자는 Amazon SageMaker Studio Classic 버전 1.3.0 이상을 실행해야 합니다. Studio Classic 버전을 확인하고 업데이트하는 방법은 [Amazon SageMaker Data Wrangler로 ML 데이터 준비하기](data-wrangler.md)에서 확인하세요.

1. 데이터 사이언티스트가 SageMaker Data Wrangler에서 Snowflake에 액세스하려면 다음 중 하나를 입력해야 합니다.
   + 기본 인증 시 Snowflake 계정 이름, 사용자 이름 및 암호.
   + OAuth 시 ID 제공업체의 사용자 이름 및 암호.
   + ARN 시 Secrets Manager 보안 암호 Amazon 리소스 이름(ARN)
   + [AWS Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/intro.html)와 보안 암호 ARN으로 생성한 보안 암호. 다음 절차에 따라 옵션 선택 시 Snowflake용 보안 암호를 생성합니다.
**중요**  
데이터 사이언티스트가 **Snowflake 자격 증명(사용자 이름 및 암호)** 옵션으로 Snowflake에 연결하는 경우 [Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/intro.html)로 자격 증명을 보안 암호에 저장할 수 있습니다. Secrets Manager는 모범 사례 보안 계획의 일부로 보안 암호를 교체합니다. Secrets Manager에서 만든 보안 암호는 Studio Classic 사용자 프로필 설정 시 구성한 Studio Classic 역할이 있어야 액세스할 수 있습니다. 그러려면 Studio Classic 역할에 연결된 정책에 `secretsmanager:PutResourcePolicy` 권한을 추가해야 합니다.  
Studio Classic 사용자 그룹별로 다른 역할을 적용하도록 역할 정책 범위를 지정할 것을 적극 권장합니다. Secrets Manager 보안 암호에 대한 추가 리소스 기반 권한을 추가할 수 있습니다. 사용할 수 있는 조건 키는 [암호 관리 정책](https://docs.aws.amazon.com/secretsmanager/latest/userguide/manage_secret-policy.html)에서 확인하세요.  
암호 생성 방법은 [보안 암호 생성](https://docs.aws.amazon.com/secretsmanager/latest/userguide/create_secret.html)에서 확인하세요. 보안 암호 생성 시 요금이 부과됩니다.

1. (선택 사항) [Snowflake에서 클라우드 스토리지 통합 생성하기](                                      https://docs.snowflake.com/en/user-guide/data-load-s3-config-storage-integration.html#step-3-create-a-cloud-storage-integration-in-snowflake) 절차에 따라 생성한 스토리지 통합 이름을 데이터 사이언티스트에게 제공합니다. 이는 새 통합의 이름으로서 `integration_name`(으)로 명명되며, 다음 코드 조각에 표시된 실행한 `CREATE INTEGRATION` SQL 명령에 있습니다.

   ```
     CREATE STORAGE INTEGRATION integration_name
     TYPE = EXTERNAL_STAGE
     STORAGE_PROVIDER = S3
     ENABLED = TRUE
     STORAGE_AWS_ROLE_ARN = 'iam_role'
     [ STORAGE_AWS_OBJECT_ACL = 'bucket-owner-full-control' ]
     STORAGE_ALLOWED_LOCATIONS = ('s3://bucket/path/', 's3://bucket/path/')
     [ STORAGE_BLOCKED_LOCATIONS = ('s3://bucket/path/', 's3://bucket/path/') ]
   ```

### 데이터 사이언티스트 안내서
<a name="data-wrangler-snowflake-ds"></a>

Snowflake를 연결하고 Data Wrangler에 있는 데이터에 액세스하는 방법은 다음과 같습니다.

**중요**  
관리자는 이전 섹션의 정보를 사용하여 Snowflake를 설정해야 합니다. 문제 발생 시 관리자에게 문의하여 문제 해결 지원을 받으세요.

다음 중 한 가지 방법으로 Snowflake에 연결할 수 있습니다.
+ Data Wrangler에서 Snowflake 자격 증명(계정 이름, 사용자 이름 및 암호) 지정.
+ 자격 증명이 포함된 보안 암호의 Amazon 리소스 이름(ARN) 입력.
+ Snowflake에 연결하는 액세스 위임 개방형 표준(OAuth) 제공업체 이용. 관리자는 다음 OAuth 제공업체 중 하나에 대한 액세스 권한을 부여할 수 있습니다.
  + [Azure AD](https://docs.snowflake.com/en/user-guide/oauth-azure.html)
  + [Okta](https://docs.snowflake.com/en/user-guide/oauth-okta.html)
  + [Ping Federate](https://docs.snowflake.com/en/user-guide/oauth-pingfed.html)

Snowflake 연결 시 사용해야 하는 메서드는 관리자에게 문의하세요.

다음 섹션에는 이전 메서드로 Snowflake에 연결하는 방법에 대한 정보가 있습니다.

------
#### [ Specifying your Snowflake Credentials ]

**자격 증명으로 Snowflake에서 Data Wrangler로 데이터세트를 가져오려면**

1. [Amazon SageMaker AI 콘솔](https://console.aws.amazon.com/sagemaker)에 로그인합니다.

1. **Studio**를 선택합니다.

1. **Launch app**(앱 시작)을 선택합니다.

1. 드롭다운 목록에서 **Studio를** 선택합니다.

1. 홈 아이콘을 선택합니다.

1. **Data**(데이터)를 선택합니다.

1. **Data Wrangler**를 선택합니다.

1. **데이터 가져오기(Import data)**을 선택합니다.

1. **사용 가능(Available)** 아래에서 **Snowflake**를 선택합니다.

1. **연결 이름(Connection name)**에서 연결 고유 식별자를 지정합니다.

1. **인증 방법(Authentication method)**에서 **기본 사용자 이름-암호(Basic Username-Password)**를 선택합니다.

1. **Snowflake 계정 이름(영숫자)(Snowflake account name (alphanumeric))**에서 Snowflake 계정의 전체 이름을 지정합니다.

1. **사용자 이름(Username)**에서 Snowflake 계정 액세스 시 사용하는 사용자 이름을 지정합니다.

1. **암호(Password)**에서 사용자 이름과 연결된 암호를 지정합니다.

1. (선택 사항) **고급 설정(Advanced settings)**에서 다음을 지정합니다.
   + **역할(Role)** - Snowflake 내 역할. 일부 역할은 여러 데이터세트에 액세스할 수 있습니다. 역할을 지정하지 않으면 Data Wrangler는 Snowflake 계정에서 기본 역할을 사용합니다.
   + **스토리지 통합(Storage integration)** - 쿼리를 지정하고 실행하면 Data Wrangler는 쿼리 결과의 임시 사본을 메모리에 생성합니다. 쿼리 결과의 영구 사본을 저장하려면, 스토리지 통합용 Amazon S3 위치를 지정합니다. S3 URI은 관리자가 제공합니다.
   + **KMS 키 ID(KMS key ID)** - 사용자가 생성한 KMS 키. ARN을 지정하여 Snowflake 쿼리의 출력을 암호화할 수 있습니다. 그렇지 않으면 Data Wrangler는 기본 암호화를 사용합니다.

1. **연결**을 선택합니다.

------
#### [ Providing an Amazon Resource Name (ARN) ]

**ARN으로 Snowflake에서 Data Wrangler로 데이터세트를 가져오려면**

1. [Amazon SageMaker AI 콘솔](https://console.aws.amazon.com/sagemaker)에 로그인합니다.

1. **Studio**를 선택합니다.

1. **Launch app**(앱 시작)을 선택합니다.

1. 드롭다운 목록에서 **Studio를** 선택합니다.

1. 홈 아이콘을 선택합니다.

1. **Data**(데이터)를 선택합니다.

1. **Data Wrangler**를 선택합니다.

1. **데이터 가져오기(Import data)**을 선택합니다.

1. **사용 가능(Available)** 아래에서 **Snowflake**를 선택합니다.

1. **연결 이름(Connection name)**에서 연결 고유 식별자를 지정합니다.

1. **인증 방법(Authentication method)**에서 **ARN**을 선택합니다.

1. **Secrets Manager ARN** - Snowflake에 연결하는 데 사용되는 자격 증명을 저장하는 데 사용되는 AWS Secrets Manager 보안 암호의 ARN입니다.

1. (선택 사항) **고급 설정(Advanced settings)**에서 다음을 지정합니다.
   + **역할(Role)** - Snowflake 내 역할. 일부 역할은 여러 데이터세트에 액세스할 수 있습니다. 역할을 지정하지 않으면 Data Wrangler는 Snowflake 계정에서 기본 역할을 사용합니다.
   + **스토리지 통합(Storage integration)** - 쿼리를 지정하고 실행하면 Data Wrangler는 쿼리 결과의 임시 사본을 메모리에 생성합니다. 쿼리 결과의 영구 사본을 저장하려면, 스토리지 통합용 Amazon S3 위치를 지정합니다. S3 URI은 관리자가 제공합니다.
   + **KMS 키 ID(KMS key ID)** - 사용자가 생성한 KMS 키. ARN을 지정하여 Snowflake 쿼리의 출력을 암호화할 수 있습니다. 그렇지 않으면 Data Wrangler는 기본 암호화를 사용합니다.

1. **연결**을 선택합니다.

------
#### [ Using an OAuth Connection ]

**중요**  
관리자는 OAuth 연결 시 사용하는 기능을 제공하도록 Studio Classic 환경을 사용자 지정합니다. 기능을 사용하려면 Jupyter 서버 애플리케이션을 다시 시작해야 할 수 있습니다.  
다음 절차에 따라 Jupyter 서버 애플리케이션을 업데이트합니다.  
Studio Classic에서 **파일**을 선택합니다.
**종료(Shut down)**를 선택합니다.
**서버 종료(Shut down server)**를 선택합니다.
Studio Classic 액세스 시 사용하는 탭이나 창을 닫습니다.
Amazon SageMaker AI 콘솔에서 Studio Classic을 엽니다.

**자격 증명으로 Snowflake에서 Data Wrangler로 데이터세트를 가져오려면**

1. [Amazon SageMaker AI 콘솔](https://console.aws.amazon.com/sagemaker)에 로그인합니다.

1. **Studio**를 선택합니다.

1. **Launch app**(앱 시작)을 선택합니다.

1. 드롭다운 목록에서 **Studio를** 선택합니다.

1. 홈 아이콘을 선택합니다.

1. **Data**(데이터)를 선택합니다.

1. **Data Wrangler**를 선택합니다.

1. **데이터 가져오기(Import data)**을 선택합니다.

1. **사용 가능(Available)** 아래에서 **Snowflake**를 선택합니다.

1. **연결 이름(Connection name)**에서 연결 고유 식별자를 지정합니다.

1. **인증 방법(Authentication method)**에서 **OAuth**를 선택합니다.

1. (선택 사항) **고급 설정(Advanced settings)**에서 다음을 지정합니다.
   + **역할(Role)** - Snowflake 내 역할. 일부 역할은 여러 데이터세트에 액세스할 수 있습니다. 역할을 지정하지 않으면 Data Wrangler는 Snowflake 계정에서 기본 역할을 사용합니다.
   + **스토리지 통합(Storage integration)** - 쿼리를 지정하고 실행하면 Data Wrangler는 쿼리 결과의 임시 사본을 메모리에 생성합니다. 쿼리 결과의 영구 사본을 저장하려면, 스토리지 통합용 Amazon S3 위치를 지정합니다. S3 URI은 관리자가 제공합니다.
   + **KMS 키 ID(KMS key ID)** - 사용자가 생성한 KMS 키. ARN을 지정하여 Snowflake 쿼리의 출력을 암호화할 수 있습니다. 그렇지 않으면 Data Wrangler는 기본 암호화를 사용합니다.

1. **연결**을 선택합니다.

------

Snowflake에서 데이터를 가져오는 프로세스는 연결 후 시작할 수 있습니다.

Data Wrangler에서는 테이블을 미리 볼 수 있는 눈 아이콘과 함께 데이터 웨어하우스, 데이터베이스, 스키마를 볼 수 있습니다. **테이블 미리 보기(Preview Table)** 아이콘 선택 후, 테이블의 스키마 미리보기가 생성됩니다. 테이블을 미리 보려면 먼저 웨어하우스를 선택해야 합니다.

**중요**  
`TIMESTAMP_TZ` 또는 `TIMESTAMP_LTZ` 유형의 열이 있는 데이터세트를 가져오는 경우, 쿼리 열 이름에 `::string`을(를) 추가합니다. 자세한 정보는 [TIMESTAMP\$1TZ 및 TIMESTAMP\$1LTZ 데이터를 Parquet 파일로 언로드하는 방법](https://community.snowflake.com/s/article/How-To-Unload-Timestamp-data-in-a-Parquet-file)에서 확인하세요.

데이터 웨어하우스, 데이터베이스, 스키마를 선택해야 쿼리를 작성하고 실행할 수 있습니다. 쿼리 출력은 **쿼리 결과(Query results)** 아래에 표시됩니다.

쿼리 출력 결정 후 쿼리 결과를 Data Wrangler 흐름으로 가져와 데이터 변환을 수행할 수 있습니다.

데이터를 가져온 후에는 Data Wrangler 흐름으로 이동하여 변환 추가를 시작합니다. 사용 가능한 변환 목록은 [데이터 변환하기](data-wrangler-transform.md)에서 확인하세요.

## 서비스형 소프트웨어(SaaS) 플랫폼에서 데이터 가져오기
<a name="data-wrangler-import-saas"></a>

Data Wrangler로 40가지 이상의 서비스형 소프트웨어(SaaS) 플랫폼에서 데이터를 가져올 수 있습니다. SaaS 플랫폼에서 데이터를 가져오려면 사용자 또는 관리자가 Amazon AppFlow로 플랫폼에서 Amazon S3 또는 Amazon Redshift로 데이터를 전송해야 합니다. Amazon AppFlow에 대한 자세한 정보는 [Amazon AppFlow란 무엇입니까?](https://docs.aws.amazon.com/appflow/latest/userguide/what-is-appflow.html)에서 확인하세요. Amazon Redshift를 사용할 필요가 없는 경우, 데이터를 Amazon S3로 전송하여 더 간단한 프로세스를 사용할 것을 권장합니다.

Data Wrangler는 다음 SaaS 플랫폼에서의 데이터 전송을 지원합니다.
+ [Amplitude](https://docs.aws.amazon.com/appflow/latest/userguide/amplitude.html)
+ [Asana](https://docs.aws.amazon.com/appflow/latest/userguide/connectors-asana.html)
+ [Braintree](https://docs.aws.amazon.com/appflow/latest/userguide/connectors-braintree.html)
+ [CircleCI](https://docs.aws.amazon.com/appflow/latest/userguide/connectors-circleci.html)
+ [DocuSign Monitor](https://docs.aws.amazon.com/appflow/latest/userguide/connectors-docusign-monitor.html)
+ [Delighted](https://docs.aws.amazon.com/appflow/latest/userguide/connectors-delighted.html)
+ [Domo](https://docs.aws.amazon.com/appflow/latest/userguide/connectors-domo.html)
+ [Datadog](https://docs.aws.amazon.com/appflow/latest/userguide/datadog.html)
+ [Dynatrace](https://docs.aws.amazon.com/appflow/latest/userguide/dynatrace.html)
+ [Facebook Ads](https://docs.aws.amazon.com/appflow/latest/userguide/connectors-facebook-ads.html)
+ [Facebook Page Insights](https://docs.aws.amazon.com/appflow/latest/userguide/connectors-facebook-page-insights.html)
+ [Google Ads](https://docs.aws.amazon.com/appflow/latest/userguide/connectors-google-ads.html)
+ [Google Analytics 4](https://docs.aws.amazon.com/appflow/latest/userguide/connectors-google-analytics-4.html)
+ [Google Calendar](https://docs.aws.amazon.com/appflow/latest/userguide/connectors-google-calendar.html)
+ [Google Search Console](https://docs.aws.amazon.com/appflow/latest/userguide/connectors-google-search-console.html)
+ [GitHub](https://docs.aws.amazon.com/appflow/latest/userguide/connectors-github.html)
+ [GitLab](https://docs.aws.amazon.com/appflow/latest/userguide/connectors-gitlab.html)
+ [Infor Nexus](https://docs.aws.amazon.com/appflow/latest/userguide/infor-nexus.html)
+ [Instagram Ads](https://docs.aws.amazon.com/appflow/latest/userguide/connectors-instagram-ads.html)
+ [Intercom](https://docs.aws.amazon.com/appflow/latest/userguide/connectors-intercom.html)
+ [JDBC (Sync)](https://docs.aws.amazon.com/appflow/latest/userguide/connectors-jdbc.html)
+ [Jira Cloud](https://docs.aws.amazon.com/appflow/latest/userguide/connectors-jira-cloud.html)
+ [LinkedIn Ads](https://docs.aws.amazon.com/appflow/latest/userguide/connectors-linkedin-ads.html)
+ [Mailchimp](https://docs.aws.amazon.com/appflow/latest/userguide/connectors-mailchimp.html)
+ [Marketo](https://docs.aws.amazon.com/appflow/latest/userguide/marketo.html)
+ [Microsoft Dynamics 365](https://docs.aws.amazon.com/appflow/latest/userguide/connectors-microsoft-dynamics-365.html)
+ [Microsoft Teams](https://docs.aws.amazon.com/appflow/latest/userguide/connectors-microsoft-teams.html)
+ [Mixpanel](https://docs.aws.amazon.com/appflow/latest/userguide/connectors-mixpanel.html)
+ [Okta](https://docs.aws.amazon.com/appflow/latest/userguide/connectors-okta.html)
+ [Oracle HCM](https://docs.aws.amazon.com/appflow/latest/userguide/connectors-oracle-hcm.html)
+ [Paypal Checkout](https://docs.aws.amazon.com/appflow/latest/userguide/connectors-paypal.html)
+ [Pendo](https://docs.aws.amazon.com/appflow/latest/userguide/connectors-pendo.html)
+ [Salesforce](https://docs.aws.amazon.com/appflow/latest/userguide/salesforce.html)
+ [Salesforce Marketing Cloud](https://docs.aws.amazon.com/appflow/latest/userguide/connectors-salesforce-marketing-cloud.html)
+ [Salesforce Pardot](https://docs.aws.amazon.com/appflow/latest/userguide/pardot.html)
+ [SAP OData](https://docs.aws.amazon.com/appflow/latest/userguide/sapodata.html)
+ [SendGrid](https://docs.aws.amazon.com/appflow/latest/userguide/connectors-sendgrid.html)
+ [ServiceNow](https://docs.aws.amazon.com/appflow/latest/userguide/servicenow.html)
+ [Singular](https://docs.aws.amazon.com/appflow/latest/userguide/singular.html)
+ [Slack](https://docs.aws.amazon.com/appflow/latest/userguide/slack.html)
+ [Smartsheet](https://docs.aws.amazon.com/appflow/latest/userguide/connectors-smartsheet.html)
+ [Snapchat Ads](https://docs.aws.amazon.com/appflow/latest/userguide/connectors-snapchat-ads.html)
+ [Stripe](https://docs.aws.amazon.com/appflow/latest/userguide/connectors-stripe.html)
+ [Trend Micro](https://docs.aws.amazon.com/appflow/latest/userguide/trend-micro.html)
+ [Typeform](https://docs.aws.amazon.com/appflow/latest/userguide/connectors-typeform.html)
+ [Veeva](https://docs.aws.amazon.com/appflow/latest/userguide/veeva.html)
+ [WooCommerce](https://docs.aws.amazon.com/appflow/latest/userguide/connectors-woocommerce.html)
+ [Zendesk](https://docs.aws.amazon.com/appflow/latest/userguide/slack.html)
+ [Zendesk Chat](https://docs.aws.amazon.com/appflow/latest/userguide/connectors-zendesk-chat.html)
+ [Zendesk Sell](https://docs.aws.amazon.com/appflow/latest/userguide/connectors-zendesk-sell.html)
+ [Zendesk Sunshine](https://docs.aws.amazon.com/appflow/latest/userguide/connectors-zendesk-sunshine.html)
+ [Zoho CRM](https://docs.aws.amazon.com/appflow/latest/userguide/connectors-zoho-crm.html)
+ [Zoom Meetings](https://docs.aws.amazon.com/appflow/latest/userguide/connectors-zoom-meetings.html)

이전 목록에는 데이터 소스 설정에 대한 추가 정보를 볼 수 있는 링크가 있습니다. 사용자 또는 관리자는 다음 정보를 읽은 후 이전 링크를 참조할 수 있습니다.

Data Wrangler 흐름의 **가져오기(Import)** 탭으로 이동하면 다음 섹션 아래에 데이터 소스가 표시됩니다.
+ **사용 가능**
+ **데이터 소스 설정**

**사용 가능** 아래에서 추가 구성 없이 데이터 소스에 연결할 수 있습니다. 데이터 소스를 선택하고 데이터를 가져올 수 있습니다.

**데이터 소스 설정** 아래 데이터 소스를 사용하려면 사용자 또는 관리자가 Amazon AppFlow를 사용하여 SaaS 플랫폼에서 Amazon S3 또는 Amazon Redshift로 데이터를 전송해야 합니다. 전송 방법은 [Amazon AppFlow로 데이터 전송하기](#data-wrangler-import-saas-transfer)에서 확인하세요.

데이터 전송 수행 후, **사용 가능** 아래에 SaaS 플랫폼이 데이터 소스로 표시됩니다. 이 플랫폼을 선택하면 Data Wrangler로 전송한 데이터를 가져올 수 있습니다. 전송한 데이터는 쿼리할 수 있는 테이블로 표시됩니다.

### Amazon AppFlow로 데이터 전송하기
<a name="data-wrangler-import-saas-transfer"></a>

Amazon AppFlow는 코드 작성 없이 SaaS 플랫폼에서 Amazon S3 또는 Amazon Redshift로 데이터를 전송할 수 있는 플랫폼입니다. 데이터 전송을 수행하려면 AWS Management Console을(를) 사용합니다.

**중요**  
데이터 전송 권한 설정 여부를 확인해야 합니다. 자세한 내용은 [Amazon AppFlow 권한](data-wrangler-security.md#data-wrangler-appflow-permissions) 단원을 참조하십시오.

권한 추가 후 데이터를 전송할 수 있습니다. Amazon AppFlow에서 데이터 전송 흐름을 생성합니다.** 흐름은 일련의 구성입니다. 흐름을 통해 일정에 따라 데이터 전송을 실행할지 아니면 데이터를 별도의 파일로 분할할지 지정할 수 있습니다. 흐름을 구성한 후 실행하여 데이터를 전송합니다.

흐름 생성 방법은 [Amazon AppFlow로 흐름 생성하기](https://docs.aws.amazon.com/appflow/latest/userguide/create-flow.html)에서 확인하세요. 흐름 실행 방법은 [Amazon AppFlow 흐름 활성화하기](https://docs.aws.amazon.com/appflow/latest/userguide/run-flow.html)에서 확인하세요.

데이터 전송 후 다음 절차에 따라 Data Wrangler 데이터에 액세스합니다.
**중요**  
데이터 액세스 전 IAM 역할에 다음 정책이 적용되었는지 확인하세요.  

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "glue:SearchTables",
            "Resource": [
                "arn:aws:glue:*:*:table/*/*",
                "arn:aws:glue:*:*:database/*",
                "arn:aws:glue:*:*:catalog"
            ]
        }
    ]
}
```
기본적으로, Data Wrangler에 액세스하는 데 사용하는 IAM 역할은 `SageMakerExecutionRole`입니다. 정책 추가 방법에 대한 자세한 내용은 [IAM 자격 증명 권한 추가하기(콘솔)](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-attach-detach.html#add-policies-console)에서 확인하세요.

데이터 소스 연결 방법은 다음과 같습니다.

1. [Amazon SageMaker AI 콘솔](https://console.aws.amazon.com/sagemaker)에 로그인합니다.

1. **Studio**를 선택합니다.

1. **Launch app**(앱 시작)을 선택합니다.

1. 드롭다운 목록에서 **Studio를** 선택합니다.

1. 홈 아이콘을 선택합니다.

1. **Data**(데이터)를 선택합니다.

1. **Data Wrangler**를 선택합니다.

1. **데이터 가져오기(Import data)**을 선택합니다.

1. **사용 가능(Available)** 아래에서 데이터 소스를 선택합니다.

1. **이름(Name)** 필드에서 연결 이름을 지정합니다.

1. (선택 사항) **고급 구성(Advanced configuration)**을 선택합니다.

   1. **작업 그룹(Workgroup)**을 선택합니다.

   1. 작업 그룹이 Amazon S3 출력 위치를 적용하지 않았거나 작업 그룹을 사용하지 않는 경우, **쿼리 결과의 Amazon S3 위치(Amazon S3 location of query results)** 값을 지정합니다.

   1. (선택 사항) **데이터 보존 기간(Data retention period)**에서 확인란을 선택하여 데이터 보존 기간을 설정하고 삭제 전까지 저장할 일수를 지정합니다.

   1. (선택 사항) 기본적으로 Data Wrangler는 연결을 저장합니다. 확인란 선택을 해제하여 연결을 저장하지 않을 수 있습니다.

1. **연결**을 선택합니다.

1. 쿼리를 지정합니다.
**참고**  
쿼리 지정을 위해 왼쪽 탐색창에서 테이블을 선택할 수 있습니다. Data Wrangler에는 테이블 이름과 테이블 미리보기가 표시됩니다. 테이블 이름 옆 아이콘을 선택하여 이름을 복사합니다. 쿼리에 테이블 이름을 사용할 수 있습니다.

1. **실행**을 선택합니다.

1. **쿼리 가져오기(Import query)**를 선택합니다.

1. **데이터세트 이름(Dataset name)**에서 데이터세트 이름을 지정합니다.

1. **추가**를 선택합니다.

**데이터 가져오기(Import data)** 화면으로 이동하면 생성한 연결을 볼 수 있습니다. 연결을 사용하여 더 많은 데이터를 가져올 수 있습니다.

## 가져온 데이터 스토리지
<a name="data-wrangler-import-storage"></a>

**중요**  
 [보안 모범 사례](https://docs.aws.amazon.com/AmazonS3/latest/userguide/security-best-practices.html)에 따라 Amazon S3 버킷을 보호하는 모범 사례를 따를 것을 적극 권장합니다.

Amazon Athena 또는 Amazon Redshift에서 데이터를 쿼리하면 쿼리된 데이터세트가 Amazon S3에 자동으로 저장됩니다. 데이터는 Studio Classic을 사용하는 AWS 리전의 기본 SageMaker AI S3 버킷에 저장됩니다.

기본 S3 버킷의 명명 규칙은 `sagemaker-region-account number`입니다. 예를 들어, 계정 번호가 111122223333이고 `us-east-1`에서 Studio Classic을 사용하는 경우, 가져온 데이터세트는 `sagemaker-us-east-1-`111122223333에 저장됩니다.

 Data Wrangler 흐름은 이 Amazon S3 데이터세트 위치에 따라 달라지므로, 종속 흐름을 사용하는 동안에는 Amazon S3에서 이 데이터세트를 수정해서는 안 됩니다. 이 S3 위치를 수정하고 데이터 흐름을 계속 사용하려면 .flow 파일에 있는 `trained_parameters`에서 모든 객체를 제거해야 합니다. 그러려면 Studio Classic에서 .flow 파일을 다운로드하고 각 `trained_parameters` 인스턴스의 모든 항목을 삭제해야 합니다. 작업 후 `trained_parameters`은(는) 빈 JSON 객체가 되어야 합니다.

```
"trained_parameters": {}
```

데이터를 내보내고 데이터 흐름으로 데이터를 처리하는 경우, 내보내는 .flow 파일은 Amazon S3의 이 데이터세트를 참조합니다. 다음 섹션에서 자세히 알아보세요.

### Amazon Redshift 가져오기 스토리지
<a name="data-wrangler-import-storage-redshift"></a>

Data Wrangler는 쿼리 결과 데이터세트를 기본 SageMaker AI S3 버킷의 Parquet 파일에 저장합니다.

이 파일은 redshift/*uuid*/data/ 접두사(디렉터리) 아래 저장되는데, 여기서 *uuid*는 쿼리별로 생성되는 고유 식별자입니다.

예를 들어, 기본 버킷이 `sagemaker-us-east-1-111122223333`인 경우, Amazon Redshift에서 쿼리된 단일 데이터세트의 위치는 s3://sagemaker-us-east-1-111122223333/redshift/*uuid*/data/입니다.

### Amazon Athena 가져오기 스토리지
<a name="data-wrangler-import-storage-athena"></a>

Athena 데이터베이스를 쿼리하고 데이터세트를 가져오면 Data Wrangler는 데이터세트와 해당 데이터세트의 서브셋 또는 미리 보기 파일을 Amazon S3에 저장합니다.**

**데이터세트 가져오기**를 선택하여 가져온 데이터세트는 Amazon S3에 Parquet 형식으로 저장됩니다.

Athena 가져오기 화면에서 **실행**을 선택하면 미리 보기 파일이 CSV 형식으로 작성되며, 쿼리된 데이터세트의 최대 100개 행을 포함합니다.

쿼리하는 데이터세트는 athena/*uuid*/data/ 접두사(디렉터리) 아래에 있는데, 여기서 *uuid*는 쿼리별로 생성되는 고유 식별자입니다.

예를 들어, 기본 버킷이 `sagemaker-us-east-1-111122223333`인 경우, Athena에서 쿼리된 단일 데이터세트의 위치는 `s3://sagemaker-us-east-1-111122223333`/athena/*uuid*/data/*example\$1dataset.parquet*입니다.

Data Wrangler에서 데이터프레임을 미리 보기 위해 저장되는 데이터세트의 서브셋은 접두사 athena/ 아래에 저장됩니다.

# Data Wrangler 흐름을 생성합니다.
<a name="data-wrangler-data-flow"></a>

Amazon SageMaker Data Wrangler 흐름 또는 데이터 흐름을 사용하여 데이터 준비 파이프라인을 생성하고 수정하세요.** 데이터 흐름은 생성한 데이터세트, 변환, 분석 또는 단계를 연결하고 파이프라인을 정의하는 데 사용할 수 있습니다.**

## 인스턴스
<a name="data-wrangler-data-flow-instances"></a>

Amazon SageMaker Studio Classic에서 Data Wrangler 흐름을 만들면 Data Wrangler는 Amazon EC2 인스턴스를 사용하여 흐름의 분석 및 변환을 실행합니다. 기본적으로 Data Wrangler는 m5.4xlarge 인스턴스를 사용합니다. m5 인스턴스는 컴퓨팅과 메모리 간의 균형을 제공하는 범용 인스턴스입니다. m5 인스턴스를 다양한 컴퓨팅 워크로드에 사용할 수 있습니다.

Data Wrangler는 또한 r5 인스턴스를 사용할 수 있는 옵션을 제공합니다. r5 인스턴스는 메모리에서 대규모 데이터세트를 처리하는 빠른 성능을 제공하도록 설계되었습니다.

워크로드에 가장 최적화된 인스턴스를 선택하는 것이 좋습니다. 예를 들어 r5.8xlarge는 m5.4xlarge보다 가격이 더 높을 수 있지만 r5.8xlarge는 워크로드에 더 잘 최적화될 수 있습니다. 더 잘 최적화된 인스턴스를 사용하면 더 적은 시간에 더 저렴한 비용으로 데이터 흐름을 실행할 수 있습니다.

Data Wrangler 흐름을 실행하는 데 사용할 수 있는 인스턴스가 다음 테이블에 나와 있습니다.


| 표준 인스턴스 | vCPU | Memory | 
| --- | --- | --- | 
| ml.m5.4xlarge | 16 | 64GiB | 
| ml.m5.8xlarge | 32 | 128GiB | 
| ml.m5.16xlarge | 64 |  256GiB  | 
| ml.m5.24xlarge | 96 | 384 GiB | 
| r5.4xlarge | 16 | 128GiB | 
| r5.8xlarge | 32 | 256GiB | 
| r5.24xlarge | 96 | 768GiB | 

r5 인스턴스에 대한 자세한 내용은 [Amazon EC2 R5 인스턴스](https://aws.amazon.com/ec2/instance-types/r5/)를 참조하세요. m5 인스턴스에 대한 자세한 내용은 [Amazon EC2 M5 인스턴스](https://aws.amazon.com/ec2/instance-types/m5/)를 참조하세요.

각 Data Wrangler 흐름에는 연결된 Amazon EC2 인스턴스가 있습니다. 단일 인스턴스에 연결된 플로우가 여러 개 있을 수 있습니다.

각 흐름 파일에 대해 인스턴스 유형을 원활하게 전환할 수 있습니다. 인스턴스 유형을 전환해도 흐름을 실행하는 데 사용한 인스턴스는 계속 실행됩니다.

흐름의 인스턴스 유형을 전환하려면 다음과 같이 하세요.

1. **터미널 및 커널 실행** 아이콘(![\[Black square icon representing a placeholder or empty image.\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/images/studio/icons/running-terminals-kernels.png))을 선택합니다.

1. 사용 중인 인스턴스로 이동하여 선택합니다.

1. 삭제하려는 인스턴스를 선택합니다.  
![\[Data Wrangler 콘솔의 데이터 흐름 페이지에서 인스턴스를 선택하는 방법을 보여주는 예시입니다.\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/images/studio/mohave/data-wrangler-instance-switching-list-instances.png)

1. **저장**을 선택합니다.

두 인스턴스가 실행되는 동안에는 두 인스턴스에 대해 요금이 청구됩니다. 추가 요금이 발생하지 않도록 하려면 사용하지 않는 인스턴스를 수동으로 종료하세요. 실행 중인 인스턴스를 종료하려면 다음 절차를 사용하세요.

실행 중인 인스턴스를 종료하려면

1. 인스턴스 아이콘을 선택합니다. 다음 이미지는 **실행 중인 인스턴스** 아이콘을 선택할 수 있는 위치를 보여줍니다.  
![\[\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/images/studio/mohave/instance-switching-running-instances.png)

1. 종료하려는 인스턴스 옆의 **종료**를 선택합니다.

흐름을 실행하는 데 사용된 인스턴스를 종료하면 일시적으로 흐름에 액세스할 수 없습니다. 이전에 종료한 인스턴스를 실행하는 흐름을 열려고 시도하는 동안 오류가 발생하는 경우 5분 동안 기다린 후 다시 열어 보세요.

Amazon 심플 스토리지 서비스 또는 Amazon SageMaker 피처 스토어와 같은 위치로 데이터 흐름을 내보내는 경우 Data Wrangler는 Amazon SageMaker 처리 작업을 실행합니다. 처리 작업에 다음 인스턴스 중 하나를 사용할 수 있습니다. 데이터 내보내기에 대한 자세한 내용은 [내보내기](data-wrangler-data-export.md) 섹션을 참조하세요.


| 표준 인스턴스 | vCPU | Memory | 
| --- | --- | --- | 
| ml.m5.4xlarge | 16 | 64GiB | 
| ml.m5.12xlarge | 48 |  192GiB  | 
| ml.m5.24xlarge | 96 | 384 GiB | 

사용 가능한 인스턴스 유형 사용에 따른 시간당 비용에 대한 자세한 내용은 [SageMaker 가격](https://aws.amazon.com//sagemaker/pricing/)을 참조하세요.

## 데이터 흐름 UI
<a name="data-wrangler-data-flow-ui"></a>

데이터세트를 가져오면 원본 데이터세트이 데이터 흐름에 나타나고 이름은 **Source**입니다. 데이터를 가져올 때 샘플링을 설정한 경우 이 데이터세트의 이름은 **Source - sampled**입니다. Data Wrangler는 데이터세트의 각 열 유형을 자동으로 유추하여 **Data types**이라는 새 데이터 프레임을 만듭니다. 이 프레임을 선택하여 유추된 데이터 유형을 업데이트할 수 있습니다. 데이터세트 하나를 업로드하면 다음 이미지에 표시된 것과 비슷한 결과가 나타납니다.

![\[Data Wrangler 콘솔에서 소스 - 샘플링됨 및 데이터 유형으 보여주는 예시입니다.\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/images/studio/mohave/dataflow-after-import.png)


변환 단계를 추가할 때마다 새 데이터 프레임이 생성됩니다. 여러 변환 단계(**조인** 또는 **연결** 제외)가 동일한 데이터세트에 추가되면 해당 단계가 누적됩니다.

**조인** 및 **연결**은 조인되거나 연결된 새 데이터세트를 포함하는 독립형 단계를 만듭니다.

다음 다이어그램은 두 데이터세트 간의 조인과 두 단계 스택이 있는 데이터 흐름을 보여줍니다. 첫 번째 스택(**단계(2)**)은 **데이터 유형** 데이터세트에서 유추된 유형에 두 개의 변환을 추가합니다. *다운스트림* 스택 또는 오른쪽 스택은 **demo-join**이라는 조인의 결과로 데이터세트에 변환을 추가합니다.

![\[Data Wrangler 콘솔의 데이터 흐름 페이지에서 단계를 보여주는 예시입니다.\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/images/studio/mohave/data-flow-steps.png)


데이터 흐름의 오른쪽 하단에 있는 작은 회색 상자는 흐름의 스택과 단계 수, 흐름의 레이아웃에 대한 개요를 제공합니다. 회색 상자 안의 밝은 상자는 UI 뷰에 있는 단계를 나타냅니다. 이 상자를 사용하여 UI 보기를 벗어나는 데이터 흐름 섹션을 볼 수 있습니다. 화면 맞춤 아이콘(![\[Dotted square outline icon representing a placeholder or empty state.\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/images/studio/mohave/updates/fit-screen.png))을 사용하여 모든 단계와 데이터세트를 UI 뷰에 맞출 수 있습니다.

왼쪽 하단 내비게이션 바에는 데이터 흐름을 확대(![\[Plus symbol icon representing an addition or new item action.\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/images/studio/mohave/updates/zoom-in.png)) 및 축소(![\[Horizontal line or divider, typically used to separate content sections.\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/images/studio/mohave/updates/zoom-out.png))하고 화면에 맞게 데이터 흐름의 크기를 조정(![\[Dotted square outline icon representing a placeholder or empty state.\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/images/studio/mohave/updates/fit-screen.png))하는 데 사용할 수 있는 아이콘이 있습니다. 잠금 아이콘(![\[Trash can icon representing deletion or removal functionality.\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/images/studio/mohave/updates/lock-nodes.png))을 사용하여 화면에서 각 단계의 위치를 잠그거나 잠금 해제할 수 있습니다.



## 데이터 흐름에 단계 추가
<a name="data-wrangler-data-flow-add-step"></a>

데이터세트 또는 이전에 추가한 단계 옆의 **\$1**를 선택하고 다음 옵션 중 하나를 선택합니다.
+ **데이터 유형 편집**(**데이터 유형** 단계만 해당): **데이터 유형** 단계에 변환을 추가하지 않은 경우 **데이터 유형 편집**을 선택하여 데이터세트를 가져올 때 Data Wrangler가 추론한 데이터 유형을 업데이트할 수 있습니다.
+ **변환 추가**: 새 변환 단계를 추가합니다. 추가할 수 있는 데이터 변환에 대해 자세히 알아보려면 [데이터 변환하기](data-wrangler-transform.md) 섹션을 참조하세요.
+ **분석 추가**: 분석을 추가합니다. 이 옵션을 사용하여 데이터 흐름의 어느 시점에서든 데이터를 분석할 수 있습니다. 단계에 분석을 하나 이상 추가하면 해당 단계에 분석 아이콘(![\[Bar chart icon representing data visualization or analytics functionality.\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/images/studio/mohave/updates/analysis-icon.png))이 나타납니다. 추가할 수 있는 분석에 대한 자세한 내용은 [분석 및 시각화](data-wrangler-analyses.md) 섹션을 참조하세요.
+ **조인**: 두 데이터세트를 조인하고 결과 데이터세트를 데이터 흐름에 추가합니다. 자세한 내용은 [데이터세트 조인하기](data-wrangler-transform.md#data-wrangler-transform-join) 단원을 참조하세요.
+ **연결**: 두 데이터세트를 연결하고 결과 데이터세트를 데이터 흐름에 추가합니다. 자세한 내용은 [데이터세트 연결하기](data-wrangler-transform.md#data-wrangler-transform-concatenate) 단원을 참조하세요.

## 데이터 흐름에서 한 단계 삭제
<a name="data-wrangler-data-flow-delete-step"></a>

단계를 삭제하려면 단계를 선택하고 **삭제**를 선택합니다. 노드가 단일 입력이 있는 노드인 경우 선택한 단계만 삭제합니다. 입력이 하나인 단계를 삭제해도 그 뒤에 오는 단계는 삭제되지 않습니다. 소스, 조인 또는 연결 노드의 단계를 삭제하는 경우 해당 단계를 따르는 모든 단계도 삭제됩니다.

단계 스택에서 단계를 삭제하려면 스택을 선택한 다음 삭제할 단계를 선택합니다.

다운스트림 단계를 삭제하지 않고 다음 절차 중 하나에 따라 단계를 삭제할 수 있습니다.

------
#### [ Delete a step in the Data Wrangler flow ]

단일 입력이 있는 데이터 흐름의 노드에 대해 개별 단계를 삭제할 수 있습니다. 소스, 조인 및 연결 노드의 개별 단계는 삭제할 수 없습니다.

Data Wrangler 흐름에서 단계를 삭제하려면 다음 절차를 따르세요.

1. 삭제하려는 단계가 있는 단계 그룹을 선택합니다.

1. 단계 옆에 있는 아이콘을 선택합니다.

1. **스택 삭제**를 선택합니다.  
![\[Data Wrangler 콘솔의 데이터 흐름 페이지에서 단계를 삭제하는 방법을 보여주는 예시입니다.\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/images/studio/mohave/delete-step-flow-1.png)

------
#### [ Delete a step in the table view ]

다음 절차에 따라 테이블 보기에서 단계를 삭제합니다.

단일 입력이 있는 데이터 흐름의 노드에 대해 개별 단계를 삭제할 수 있습니다. 소스, 조인 및 연결 노드의 개별 단계는 삭제할 수 없습니다.

1. 단계를 선택하고 해당 단계의 테이블 보기를 엽니다.

1. 커서를 단계 위로 이동하면 줄임표 아이콘이 나타납니다.

1. 단계 옆에 있는 아이콘을 선택합니다.

1. **삭제**를 선택합니다.  
![\[Data Wrangler 콘솔의 테이블 보기에서 단계를 삭제하는 방법을 보여주는 예시입니다.\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/images/studio/mohave/delete-step-table-0.png)

------

## Data Wrangler 플로우에서 단계 편집
<a name="data-wrangler-data-flow-edit-step"></a>

Data Wrangler 흐름에 추가한 각 단계를 편집할 수 있습니다. 단계를 편집하여 열의 변환 또는 데이터 유형을 변경할 수 있습니다. 단계를 편집하여 더 나은 분석을 수행할 수 있도록 변경할 수 있습니다.

단계를 편집할 수 있는 방법은 여러 가지가 있습니다. 일부 예로는 값을 이상값으로 간주하기 위한 임계값 변경 또는 대치 방법 변경 등이 있습니다.

스토리를 재생하려면 다음 절차에 따르세요.

단계를 편집하려면 다음과 같이 하세요.

1. Data Wrangler 흐름에서 단계를 선택하여 테이블 보기를 엽니다.  
![\[Data Wrangler 콘솔의 데이터 흐름 페이지의 예시 단계입니다.\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/images/studio/mohave/data-flow-edit-choose-step.png)

1. 데이터 흐름에서 단계를 선택합니다.

1. 단계를 편집합니다.

다음 그림에 의 예가 나와 있습니다.

![\[Data Wrangler 콘솔의 데이터 흐름 페이지에서 단계를 편집하는 방법을 보여주는 예시입니다.\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/images/studio/mohave/data-flow-table-edit-step.png)


**참고**  
Amazon SageMaker AI 도메인 내의 공유 스페이스를 사용하여 Data Wrangler 흐름에서 공동으로 작업할 수 있습니다. 공유 공간 내에서 사용자와 공동 작업자는 플로우 파일을 실시간으로 편집할 수 있습니다. 하지만 사용자와 공동 작업자 모두 변경 사항을 실시간으로 확인할 수 없습니다. Data Wrangler 흐름을 변경하는 사람이 있으면 즉시 저장해야 합니다. 누군가 파일을 저장하면 공동 작업자는 파일을 닫았다가 다시 열지 않는 한 해당 파일을 볼 수 없습니다. 한 사람이 저장하지 않은 모든 변경 내용은 변경 내용을 저장한 사람이 덮어씁니다.

# 데이터 및 데이터 품질에 대한 인사이트 확보
<a name="data-wrangler-data-insights"></a>

**데이터 품질 및 인사이트 보고서**를 사용하여 Data Wrangler로 가져온 데이터를 분석할 수 있습니다. 데이터세트를 가져온 후 보고서를 생성하는 것이 좋습니다. 보고서를 사용하여 데이터를 정리하고 처리할 수 있습니다. 이는 누락된 값의 갯수, 이상치 갯수 등의 정보를 제공합니다. 대상 누출 또는 불균형과 같은 데이터 관련 문제가 있는 경우 인사이트 보고서를 통해 이러한 문제를 파악할 수 있습니다.

다음 절차에 따라 데이터 품질 및 인사이트 보고서를 생성합니다. 여기서는 데이터세트를 Data Wrangler 흐름으로 이미 가져온 것으로 가정합니다.

**데이터 품질 및 인사이트 보고서를 생성하려면**

1. Data Wrangler 흐름에서 노드 옆에 있는 **\$1**를 선택합니다.

1. **Get data insights**(데이터 인사이트 가져오기)를 선택합니다.

1. **Analysis name**(분석 이름)에 인사이트 보고서의 이름을 지정합니다.

1. (선택 사항) **Target column**(대상 열)에 대상 열을 지정합니다.

1. **Problem type**(문제 유형)에는 **Regression**(회귀) 또는 **Classification**(분류)를 지정합니다.

1. **Data size**(데이터 크기)로 다음 중 하나를 지정합니다.
   + **50 K** - 보고서를 만들기 위해 가져온 데이터세트 중 처음 50000개 행을 사용합니다.
   + **Entire dataset**(전체 데이터세트) - 보고서를 만들기 위해 가져온 전체 데이터세트를 사용합니다.
**참고**  
전체 데이터세트에 대한 데이터 품질 및 인사이트 보고서를 생성하려면 Amazon SageMaker 처리 작업을 사용합니다. SageMaker Processing 작업은 모든 데이터에 대한 인사이트를 얻는 데 필요한 추가 컴퓨팅 리소스를 제공합니다. SageMaker Processing 작업에 대한 자세한 정보는 [SageMaker Processing을 사용한 데이터 변환 워크로드](processing-job.md) 섹션을 참조하세요.

1. **Create**(생성)을 선택합니다.

다음 주제는 보고서의 섹션을 보여줍니다.

**Topics**
+ [요약](#data-wrangler-data-insights-summary)
+ [대상 열](#data-wrangler-data-insights-target-column)
+ [빠른 모델](#data-wrangler-data-insights-quick-model)
+ [변수 요약](#data-wrangler-data-insights-feature-summary)
+ [샘플](#data-wrangler-data-insights-samples)
+ [정의](#data-wrangler-data-insights-definitions)

보고서를 다운로드하거나 온라인으로 볼 수 있습니다. 보고서를 다운로드하려면 화면 오른쪽 위 모서리에 있는 다운로드 버튼을 선택합니다. 다음 이미지는 버튼을 보여줍니다.

![\[다운로드 버튼을 보여주는 예시입니다.\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/images/studio/mohave/data-insights/data-insights-download.png)


## 요약
<a name="data-wrangler-data-insights-summary"></a>

인사이트 보고서에는 누락된 값, 유효하지 않은 값, 변수 유형, 이상치 갯수 등과 같은 일반 정보가 포함된 간략한 데이터 요약이 있습니다. 또한 데이터에 발생할 수 있는 문제를 가리키는 심각도가 높은 경고도 포함될 수 있습니다. 경고를 조사하는 것이 좋습니다.

다음은 이러한 보고서 요약의 예입니다.

![\[보고서 요약의 예시입니다.\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/images/studio/mohave/data-insights/data-insights-report-summary.png)


## 대상 열
<a name="data-wrangler-data-insights-target-column"></a>

데이터 품질 및 인사이트 보고서를 만들 때 Data Wrangler는 대상 열을 선택할 수 있는 옵션을 제공합니다. 대상 열은 예측하려는 열입니다. 대상 열을 선택하면 Data Wrangler가 자동으로 대상 열 분석을 생성합니다. 또한 예측력 순서대로 변수의 순위를 매깁니다. 대상 열을 선택할 때는 회귀 문제를 해결할지 분류 문제를 해결할지 지정해야 합니다.

분류의 경우 Data Wrangler는 가장 일반적인 클래스의 표와 히스토그램을 보여줍니다. 클래스는 범주입니다. 또한 누락되거나 유효하지 않은 대상 값이 있는 관측치 또는 행을 표시합니다.

다음 이미지는 분류 문제에 대한 대상 열 분석 예를 보여줍니다.

![\[대상 열 분석의 예시입니다.\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/images/studio/mohave/data-insights/data-insights-target-column-classification.png)


회귀의 경우 Data Wrangler는 대상 열에 있는 모든 값의 히스토그램을 보여줍니다. 또한 누락되거나, 유효하지 않은, 또는 이상치 대상 값이 있는 관측치 또는 행을 표시합니다.

다음 이미지는 회귀 문제에 대한 대상 열 분석 예를 보여줍니다.

![\[대상 열 분석의 예시입니다.\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/images/studio/mohave/data-insights/data-insights-target-column-regression.png)


## 빠른 모델
<a name="data-wrangler-data-insights-quick-model"></a>

**Quick Model**(빠른 모델)은 데이터를 기반으로 훈련한 모델의 기대되는 예상 품질 추정치를 제공합니다.

Data Wrangler는 데이터를 훈련 폴드와 검증 폴드로 분할합니다. 샘플의 80%를 훈련에 사용하고 값의 20%를 검증에 사용합니다. 분류의 경우 표본을 계층화 분할합니다. 계층화 분할의 경우 각 데이터 파티션의 레이블 비율이 동일합니다. 분류 문제의 경우 훈련 폴드와 분류 폴드의 레이블 비율을 동일하게 유지하는 것이 중요합니다. Data Wrangler는 기본값 하이퍼파라미터를 사용하여 XGBoost 모델을 훈련시킵니다. 검증 데이터에 조기 중지를 적용하고 변수 사전 처리를 최소화합니다.

분류 모델의 경우 Data Wrangler는 모델 요약과 혼동 행렬을 모두 반환합니다.

다음은 분류 모델 요약의 예제입니다. 반환되는 정보에 대한 자세한 내용은 [정의](#data-wrangler-data-insights-definitions) 섹션을 참조하세요.

![\[분류 모델 요약의 예시입니다.\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/images/studio/mohave/data-insights/data-insights-quick-model-classification-summary.png)


다음은 빠른 모델이 반환하는 혼동 행렬의 예입니다.

![\[혼동 행렬의 예시입니다.\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/images/studio/mohave/data-insights/data-insights-quick-model-classification-confusion-matrix.png)


혼동 행렬은 다음 정보를 제공합니다.
+ 예측 레이블이 실제 레이블과 일치하는 횟수.
+ 예측 레이블이 실제 레이블과 일치하지 않는 횟수.

실제 레이블은 데이터의 실제 관측치를 나타냅니다. 예를 들어, 사기 거래를 탐지하기 위해 모델을 사용하는 경우 실제 레이블은 실제로 사기 또는 사기가 아닌 거래를 나타냅니다. 예측 레이블은 모델이 데이터에 할당하는 레이블을 나타냅니다.

혼동 행렬을 사용하여 모델이 조건의 유무를 얼마나 잘 예측하는지 확인할 수 있습니다. 부정 거래를 예측하는 경우, 혼동 행렬을 사용하여 모델의 민감도와 특이도를 모두 파악할 수 있습니다. 민감도는 사기 거래를 탐지하는 모델의 능력을 나타냅니다. 특이도란 모델이 사기가 아닌 거래를 사기로 탐지하는 것을 피하는 능력을 말합니다.

다음은 회귀 문제에 대한 빠른 모델 출력의 예입니다.

![\[회귀 문제에 대한 빠른 모델 출력의 예시입니다.\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/images/studio/mohave/data-insights/data-insights-quick-model-regression-summary.png)


## 변수 요약
<a name="data-wrangler-data-insights-feature-summary"></a>

대상 열을 지정하면 Data Wrangler는 예측력에 따라 변수를 정렬합니다. 예측력은 데이터를 80% 훈련 폴드와 20% 검증 폴드로 분할한 후 데이터를 기준으로 측정됩니다. Data Wrangler는 훈련 폴드에서 각 변수에 대한 모델을 개별적으로 피팅합니다. 변수 전처리를 최소화하고 검증 데이터에 대한 예측 성능을 측정합니다.

점수를 [0,1] 범위로 정규화합니다. 예측 점수가 높을수록 열 자체가 대상을 예측하는 데 더 유용하다는 뜻입니다. 점수가 낮을수록 열이 대상 열을 예측할 수 없음을 보여줍니다.

예측 가능하지 않은 열을 다른 열과 함께 사용한다고 예측 가능한 열이 되는 경우는 드뭅니다. 예측 점수를 사용하여 데이터세트의 변수가 예측 가능한지 여부를 확실하게 판단할 수 있습니다.

일반적으로 점수가 낮으면 변수가 중복되었음을 나타냅니다. 1점은 완벽한 예측 능력을 나타내며, 이는 종종 대상 누출을 나타냅니다. 대상 누출은 일반적으로 예측 시점에 사용할 수 없는 열이 데이터세트에 포함되어 있을 때 발생합니다. 예를 들어 대상 열과 중복된 열일 수 있습니다.

다음은 각 변수의 예측값을 보여주는 표와 히스토그램의 예입니다.

![\[각 기능의 예측 값을 보여주는 요약 표의 예시입니다.\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/images/studio/mohave/data-insights/data-insights-feature-summary-table.png)


![\[각 특성의 예측 값을 보여주는 히스토그램 예시입니다.\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/images/studio/mohave/data-insights/data-insights-feature-summary-histogram.png)


## 샘플
<a name="data-wrangler-data-insights-samples"></a>

Data Wrangler는 표본이 비정상적인지 또는 데이터세트에 중복이 있는지 여부에 대한 정보를 제공합니다.

Data Wrangler는 격리 포리스트 알고리즘(isolation forest algorithm)을 사용하여 비정상적인 샘플을 탐지합니다.** 격리 포리스트는 비정상 점수를 데이터세트의 각 샘플 (행)과 연결합니다. 비정상 점수가 낮으면 변칙 샘플이 있음을 나타냅니다. 높은 점수는 비정상이 아닌 샘플과 관련이 있습니다. 일반적으로 비정상 점수가 음수인 샘플은 변칙으로 간주되고 변칙 점수가 양수인 샘플은 비정상이 아닌 것으로 간주됩니다.

비정상일 수 있는 표본을 볼 때는 특이한 값에 주의를 기울이는 것이 좋습니다. 예를 들어, 데이터 수집 및 처리 중 오류로 인한 비정상적인 값이 발생할 수 있습니다. 비정상적인 샘플을 검사할 때는 도메인 지식과 비즈니스 로직을 사용하는 것이 좋습니다.

Data Wrangler는 중복된 행을 탐지하고 데이터에서 중복된 행의 비율을 계산합니다. 일부 데이터 소스에는 유효한 중복이 포함될 수 있습니다. 다른 데이터 소스에는 데이터 수집 문제를 나타내는 중복이 있을 수 있습니다. 잘못된 데이터 수집으로 인해 샘플이 중복되면 데이터를 독립적인 훈련 및 검증 폴드로 분할하는 데 의존하는 기계 학습 프로세스에 방해가 될 수 있습니다.

중복된 샘플로 인해 영향을 받을 수 있는 인사이트 보고서의 요소는 다음과 같습니다.
+ 빠른 모델
+ 예측력 추정
+ 자동 하이퍼파라미터 튜닝

**Manage rows**(행 관리)에서 **Drop duplicates**(중복 삭제) 변환을 사용하여 데이터세트에서 중복 샘플을 제거할 수 있습니다. Data Wrangler는 가장 자주 중복되는 행을 보여줍니다.

## 정의
<a name="data-wrangler-data-insights-definitions"></a>

다음은 데이터 인사이트 보고서에 사용되는 기술 용어에 대한 정의입니다.

------
#### [ Feature types ]

다음은 각 변수 유형에 대한 정의입니다.
+ **Numeric**(숫자) - 숫자 값은 부동 소수점 또는 정수일 수 있습니다 (예: 연령 또는 수입). 기계 학습 모델은 숫자 값은 정렬되어 있고 숫자 값에 대한 거리가 정의되어 있다고 가정합니다. 예를 들어 3은 10보다 4에 더 가깝고 3 < 4 < 10입니다.
+ 범주형 - 열 항목은 고유한 값 집합에 속하며, 집합의 수는 일반적으로 열의 항목 수보다 훨씬 적습니다. 예를 들어, 길이가 100인 열에는 고유한 값 `Dog`, `Cat` 및 `Mouse`가 포함될 수 있습니다. 값은 숫자, 텍스트 또는 이 두 가지의 조합일 수 있습니다. `Horse`, `House`, `8`, `Love` 및 `3.1` 는 모두 유효한 값이며 동일한 범주형 열에서 찾을 수 있습니다. 기계 학습 모델은 모든 값이 숫자인 경우에도 수치형 변수와 달리 범주형 변수 값의 순서나 거리를 가정하지 않습니다.
+ **Binary**(바이너리) - 바이너리 변수는 고유한 값 집합의 카디널리티가 2인 특수 범주형 변수 유형입니다.
+ **Text**(텍스트) - 텍스트 열에는 숫자가 아닌 고유 값이 많이 포함되어 있습니다. 극단적인 경우에는 열의 모든 요소가 고유합니다. 극단적인 경우에는 동일한 항목이 두 개 없을 수도 있습니다.
+ **Datetime**(날짜시간) - 날짜/시간 열에는 날짜 또는 시간에 대한 정보가 포함됩니다. 날짜와 시간에 대한 정보를 모두 포함할 수 있습니다.

------
#### [ Feature statistics ]

다음은 각 변수 통계에 대한 정의입니다.
+ **예측력** - 예측력은 대상을 예측하는 데 열이 얼마나 유용한지를 측정합니다.
+ **이상치** (숫자 열의) - Data Wrangler는 이상치에 대한 확고한 두 가지 통계, 즉 중앙값과 강력한 표준 편차(RSTD)를 사용하여 이상치를 탐지합니다. RSTD는 변수 값을 [5 백분위수, 95 백분위수] 범위로 클리핑한 다음 클리핑된 벡터의 표준 편차를 계산하여 도출됩니다. 중앙값 \$1 5 \$1 RSTD보다 크거나 중앙값 - 5 \$1 RSTD보다 작은 모든 값은 이상치로 간주됩니다.
+ **스큐**(Skew) (숫자 열의) - 스큐는 분포의 대칭성을 측정하며 분포의 세 번째 모멘트를 표준 편차의 3제곱으로 나눈 값으로 정의됩니다. 정규 분포 또는 기타 대칭 분포의 왜도는 0입니다. 양수 값은 분포의 오른쪽 꼬리가 왼쪽 꼬리보다 길다는 것을 의미합니다. 음수 값은 분포의 왼쪽 꼬리가 오른쪽 꼬리보다 길다는 것을 의미합니다. 일반적으로 스큐의 절대값이 3보다 크면 분포가 치우친 것으로 간주됩니다.
+ **첨도**(Kurtosis) (숫자 열의) - Pearson의 첨도는 분포 꼬리의 영향을 측정합니다. 분포의 네 번째 모멘트를 두 번째 모멘트의 제곱으로 나눈 값으로 정의됩니다. 정규 분포의 첨도는 3입니다. 첨도 값이 3보다 작으면 분포가 평균 주위에 집중되고 꼬리가 정규 분포의 꼬리보다 가볍다는 것을 의미합니다. 첨도 값이 3보다 크면 꼬리 또는 이상치가 더 무겁다는 의미입니다.
+ **누락된 값** - NULL과 유사한 객체, 빈 문자열, 공백으로만 구성된 문자열은 누락된 것으로 간주됩니다.
+ **숫자 변수 또는 회귀 대상에 적합한 값** - 유한 부동 소수점으로 지정할 수 있는 모든 값이 유효합니다. 누락된 값은 유효하지 않습니다.
+ **범주형, 바이너리 또는 텍스트 변수 또는 분류 대상에 유효한 값** - 누락되지 않은 모든 값이 유효합니다.
+ **Datetime 변수** 날짜/시간 객체로 지정할 수 있는 모든 값이 유효합니다. 누락된 값은 유효하지 않습니다.
+ **유효하지 않은 값** - 누락되었거나 제대로 지정할 수 없는 값. 예를 들어 숫자 열에서는 `"six"` 문자열이나 null 값을 지정할 수 없습니다.

------
#### [ Quick model metrics for regression ]

다음은 빠른 모델 메트릭의 정의입니다.
+ R2 (또는 결정 계수) - R2는 모델이 예측한 대상의 변동 비율입니다. R2는 [-infty, 1] 범위 내에 있습니다. 1은 대상을 완벽하게 예측하는 모델의 점수이고 0은 항상 대상 평균을 예측하는 간단한 모델의 점수입니다.
+ MSE 또는 평균 제곱 오차 - MSE는 [0, infty] 범위에 있습니다. 0은 대상을 완벽하게 예측하는 모델의 점수입니다.
+ MAE 또는 평균 절대 오차 - MAE는 [0, infty] 범위에 있습니다. 여기서 0은 대상을 완벽하게 예측하는 모델의 점수입니다.
+ RMSE 또는 제곱근 오차 - RMSE는 [0, infty] 범위에 있습니다. 여기서 0은 대상을 완벽하게 예측하는 모델의 점수입니다.
+ 최대 오차 - 데이터세트에 대한 오차의 최대 절대값입니다. 최대 오차는 [0, infty] 범위에 있습니다. 0은 대상을 완벽하게 예측하는 모델의 점수입니다.
+ 절대 오차 중앙값 - 절대 오차 중앙값은 [0, infty] 범위에 있습니다. 0은 대상을 완벽하게 예측하는 모델의 점수입니다.

------
#### [ Quick model metrics for classification ]

다음은 빠른 모델 메트릭의 정의입니다.
+ **정확도**(Accuracy) - 정확도는 정확하게 예측된 샘플의 비율입니다. 정확도는 [0, 1] 범위에 있습니다. 0은 모든 샘플을 잘못 예측한 모델의 점수이고 1은 완벽한 모델의 점수입니다.
+ **균형 정확도** - 균형 정확도는 데이터의 균형을 맞추기 위해 클래스 가중치를 조정할 때 정확하게 예측된 샘플의 비율입니다. 빈도와 상관없이 모든 클래스에 동일한 중요도가 부여됩니다. 균형 정확도는 [0, 1] 범위에 있습니다. 0은 모든 샘플을 잘못 예측한 모델의 점수이고 1은 완벽한 모델의 점수입니다.
+ **AUC (바이너리 분류)** - 수신기 작동 특성 곡선 아래 면적입니다. AUC는 [0, 1] 범위에 있으며, 여기서 랜덤 모델은 0.5점을 반환하고 완벽한 모델은 1점을 반환합니다.
+ **AUC (OVR)** - 다중 클래스 분류의 경우 이는 한 레이블을 나머지 레이블과 대비하여 각 레이블에 대해 개별적으로 계산된 수신기 작동 특성 곡선 아래 면적입니다. Data Wrangler는 면적의 평균을 보고합니다. AUC는 [0, 1] 범위에 있으며, 여기서 랜덤 모델은 0.5점을 반환하고 완벽한 모델은 1점을 반환합니다.
+ **정밀도**(Precision) - 정밀도는 특정 클래스에 대해 정의됩니다. 정밀도는 모델이 해당 클래스로 분류한 모든 인스턴스 중에서 True positive의 비율을 나타냅니다. 정밀도는 [0, 1] 범위 내에 있습니다. 1은 해당 클래스에 대해 False Positive가 없는 모델의 점수입니다. 바이너리 분류의 경우 Data Wrangler는 포지티브 클래스의 정밀도를 보고합니다.
+ **재현율**(Recall) - 리콜은 특정 클래스에 대해 정의됩니다. 재현율은 관련 클래스 인스턴스 중 성공적으로 검색된 인스턴스의 비율입니다. 재현율은 [0, 1] 범위 내에 있습니다. 1은 클래스의 모든 인스턴스를 올바르게 분류한 모델의 점수입니다. 바이너리 분류의 경우 Data Wrangler는 포지티브 클래스의 재현율을 보고합니다.
+ **F1** - F1은 특정 클래스에 대해 정의됩니다. F1은 정밀도와 재현율의 조화 평균입니다. F1의 범위는 [0, 1]입니다. 1은 완벽한 모델의 점수입니다. 바이너리 분류의 경우 Data Wrangler는 값이 양수인 클래스에 대해 F1을 보고합니다.

------
#### [ Textual patterns ]

**패턴**은 읽기 쉬운 형식을 사용하여 문자열의 텍스트 형식을 설명합니다. 다음은 텍스트 패턴의 예입니다.
+ “\$1digits:4-7\$1”는 길이가 4에서 7 사이인 일련의 숫자를 나타냅니다.
+ “\$1alnum:5\$1”는 길이가 정확히 5인 영숫자 문자열을 나타냅니다.

Data Wrangler는 데이터의 비어 있지 않은 문자열의 샘플을 보고 패턴을 유추합니다. 일반적으로 사용되는 여러 패턴을 설명할 수 있습니다. 백분율로 표시되는 **신뢰도**는 패턴과 일치하는 것으로 추정되는 데이터의 양을 나타냅니다. 텍스트 패턴을 사용하면 데이터에서 수정하거나 삭제해야 하는 행을 확인할 수 있습니다.

다음은 Data Wrangler가 인식할 수 있는 패턴을 설명합니다.


| 패턴 | 텍스트 형식 | 
| --- | --- | 
|  \$1alnum\$1  |  영숫자 문자열  | 
|  \$1any\$1  |  모든 단어 문자열  | 
|  \$1digits\$1  |  일련의 숫자  | 
|  \$1lower\$1  |  소문자 단어  | 
|  \$1mixed\$1  |  대소문자가 혼합된 단어  | 
|  \$1name\$1  |  대문자로 시작하는 단어  | 
|  \$1upper\$1  |  대문자 단어  | 
|  \$1whitespace\$1  |  공백(화이트스페이스) 문자  | 

단어 문자는 밑줄이거나 모든 언어의 단어에 나타날 수 있는 문자입니다. 예를 들어, 'Hello\$1Word' 및 'écoute' 문자열은 모두 단어 문자로 구성됩니다. 'H'와 'é' 모두 단어 문자의 예입니다.

------

# 데이터 플로우에서 모델 자동 훈련하기
<a name="data-wrangler-autopilot"></a>

Amazon SageMaker Autopilot을 사용하면 데이터 플로우에서 변환한 데이터를 기반으로 모델을 자동으로 훈련, 조정 및 배포할 수 있습니다. Amazon SageMaker Autopilot은 여러 알고리즘을 거쳐 데이터에 가장 적합한 알고리즘을 사용할 수 있습니다. Amazon SageMaker Autopilot에 대한 추가 정보는 [SageMaker Autopilot](autopilot-automate-model-development.md)를 참고하세요.

모델을 훈련하고 조정할 때 Data Wrangler는 Amazon SageMaker Autopilot이 데이터에 액세스할 수 있는 Amazon S3 위치로 데이터를 내보냅니다.

Data Wrangler 플로우에서 노드를 선택하고 데이터 미리 보기에서 **내보내기 및 훈련**을 선택하여 모델을 준비하고 배포할 수 있습니다. 모델을 훈련하기로 선택하기 전에 이 방법을 사용하여 데이터세트를 확인할 수 있습니다.

데이터 플로우에서 직접 모델을 훈련하고 배포할 수도 있습니다.

다음 절차는 데이터 플로우에서 모델을 준비하고 배포합니다. 다중 행 변환이 포함된 Data Wrangler 플로우의 경우 모델을 배포할 때 Data Wrangler 플로우의 변환을 사용할 수 없습니다. 데이터를 사용하여 추론을 수행하기 전에 다음 절차를 사용하여 데이터를 처리할 수 있습니다.

데이터 플로우에서 직접 모델을 훈련하고 배포하려면 다음을 수행하세요.

1. 훈련 데이터가 들어 있는 노드 옆의 **\$1**를 선택합니다.

1. **모델 훈련**을 선택합니다.

1. (선택 사항) AWS KMS 키 또는 ID를 지정합니다. 데이터 보호를 위한 암호화 키 생성 및 제어에 대한 추가 정보는 [AWS Key Management Service](https://docs.aws.amazon.com/kms/latest/developerguide/overview.html)을 참고하세요.

1. **내보내기 및 훈련**을 선택합니다.

1. Amazon SageMaker Autopilot은 Data Wrangler가 내보낸 데이터를 기반으로 모델을 훈련시킨 후 **실험 이름**에 이름을 지정합니다.

1. **데이터 입력**에서 **미리보기**를 선택하여 Data Wrangler가 데이터를 Amazon SageMaker Autopilot으로 제대로 내보냈는지 확인합니다.

1. **대상**에서 대상 열을 선택합니다.

1. (선택 사항) **출력 데이터**에서 **S3 위치** 경우 기본 위치가 아닌 Amazon S3 위치를 지정합니다.

1. **다음: 훈련 방법**을 선택합니다.

1. 훈련 방법을 선택합니다. 추가 정보는 [훈련 모드](autopilot-model-support-validation.md#autopilot-training-mode) 섹션을 참조하세요.

1. (선택 사항) **자동 배포 엔드포인트**의 경우 엔드포인트의 이름을 지정합니다.

1. **배포 옵션**에서 배포 방법을 선택합니다. 데이터에 수행한 변환과 함께 배포 또는 변환하지 않고 배포를 선택할 수 있습니다.
**중요**  
Data Wrangler 플로우에서 수행한 변환과 함께 Amazon SageMaker Autopilot 모델을 배포할 수는 없습니다. 이러한 변환에 대한 추가 정보는 [추론 엔드포인트로 내보내기](data-wrangler-data-export.md#data-wrangler-data-export-inference)을 참고하세요.

1. **다음: 검토 및 생성**을 선택합니다.

1. **Create experiment(실험 생성)**를 선택합니다.

모델 훈련 및 배포에 대한 추가 정보는 [AutoML API를 사용하여 테이블 형식 데이터에 대한 회귀 또는 분류 작업 생성](autopilot-automate-model-development-create-experiment.md)을 참고하세요. Autopilot은 최적의 모델 성능에 대한 분석을 보여줍니다. 모델 성능에 대한 추가 정보는 [Autopilot 모델 성능 보고서 보기](autopilot-model-insights.md)을 참고하세요.

# 데이터 변환하기
<a name="data-wrangler-transform"></a>

Amazon SageMaker Data Wrangler는 ML 데이터를 다양하게 변환시켜 데이터 정리, 변환, 특성 추출을 간소화합니다. 변환을 추가하면 데이터 흐름에 단계가 추가됩니다. 변환을 추가할 때마다 데이터세트가 수정되고 새 데이터 프레임이 생깁니다. 이후 모든 변환은 결과 데이터 프레임에 적용됩니다.

Data Wrangler에는 사용자가 코드 없이 열을 변환할 때 사용할 수 있는 내장 변환이 포함되어 있습니다. 사용자는 PySpark, Python(사용자 지정 함수), pandas, PySpark SQL로 사용자 지정 변환을 추가할 수도 있습니다. 현재 위치에서 작동하는 변환이 있는 반면, 데이터세트에서 새 출력 열을 생성하는 변환도 있습니다.

변환은 여러 열에 한 번에 적용할 수 있습니다. 예를 들어, 사용자는 한 번에 여러 열을 삭제할 수 있습니다.

사용자는 **숫자 처리(Process numeric)**와 **누락 처리(Handle missing)** 변환은 단일 열에만 적용할 수 있습니다.

이 페이지에서 이러한 내장 변환과 사용자 지정 변환에 대해 자세히 알아보세요.

## UI 변환하기
<a name="data-wrangler-transform-ui"></a>

대부분의 내장 변환은 Data Wrangler UI의 **준비(Prepare)** 탭에 있습니다. 사용자는 데이터 흐름 보기를 통해 조인 및 연결 변환에 액세스할 수 있습니다. 다음 테이블에서 이 두 가지 뷰를 미리 볼 수 있습니다.

------
#### [ Transform ]

사용자는 데이터 흐름 내 어떤 단계에도 변환을 추가할 수 있습니다. 다음 절차에 따라 데이터 흐름에 변환을 추가합니다.

데이터 흐름에 단계를 추가하는 방법은 다음과 같습니다.

1. 데이터 흐름 단계 옆 **\$1**를 선택합니다.

1. **변환 추가(Add transform)**를 선택합니다.

1. **단계 추가(Add step)**를 선택합니다.  
![\[\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/images/studio/mohave/data-wrangler-add-step.png)

1. 변환을 선택합니다.

1. (선택 사항) 사용자는 사용할 변환을 검색할 수 있습니다. Data Wrangler는 결과에서 쿼리를 강조 표시합니다.  
![\[\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/images/studio/mohave/data-wrangler-search.png)

------
#### [ Join View ]

두 데이터세트를 조인하려면, 데이터 흐름에서 첫 번째 데이터세트를 선택하고 **조인(Join)**을 선택합니다. **조인**을 선택한 경우 다음 이미지와 유사한 결과가 나타납니다. 왼쪽 및 오른쪽 데이터 세트가 왼쪽 패널에 표시됩니다. 기본 패널에는 새로 조인된 데이터세트가 추가된 데이터 흐름이 표시됩니다.

![\[Data Wrangler 콘솔의 데이터 흐름 섹션에 있는 조인된 데이터세트 흐름입니다.\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/images/studio/mohave/join-1.png)


조인 구성을 위해 **구성**을 선택한 경우 다음 이미지와 유사한 결과가 나타납니다. 조인 구성이 왼쪽 패널에 표시됩니다. 사용자는 이 패널에서 조인된 데이터세트 이름, 조인 유형, 조인할 열을 선택할 수 있습니다. 기본 패널에는 세 개의 테이블이 표시됩니다. 위의 두 테이블에는 각각 왼쪽과 오른쪽에 왼쪽과 오른쪽 데이터 세트가 표시됩니다. 이 테이블 아래에서 사용자는 조인된 데이터세트를 미리 볼 수 있습니다.

![\[Data Wrangler 콘솔의 데이터 흐름 섹션에 있는 조인된 데이터세트 테이블입니다.\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/images/studio/mohave/join-2.png)


자세한 내용은 [데이터세트 조인하기](#data-wrangler-transform-join) 섹션을 참조하세요.

------
#### [ Concatenate View ]

두 데이터세트를 연결하려면, 데이터 흐름에서 첫 번째 데이터세트를 선택하고 **연결(Concatenate)**을 선택합니다. **연결**을 선택하면 다음 이미지와 유사한 결과가 나타납니다. 왼쪽 및 오른쪽 데이터세트가 왼쪽 패널에 표시됩니다. 기본 패널에는 새로 연결된 데이터세트가 추가된 데이터 흐름이 표시됩니다.

![\[Data Wrangler 콘솔의 데이터 흐름 섹션에 있는 연결된 데이터세트 흐름의 예시입니다.\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/images/studio/mohave/concat-1.png)


연결 구성을 위해 **구성**을 선택하면 다음 이미지와 유사한 결과가 나타납니다. 연결 구성이 왼쪽 패널에 표시됩니다. 사용자는 이 패널을 사용하여 연결된 데이터세트 이름을 선택하고, 연결 후 중복을 제거하고, 소스 데이터 프레임을 나타내는 열을 추가할 수 있습니다. 기본 패널에는 세 개의 테이블이 표시됩니다. 위의 두 테이블에는 각각 왼쪽과 오른쪽에 왼쪽과 오른쪽 데이터세트가 표시됩니다. 이 테이블 아래에서 사용자는 연결된 데이터세트를 미리 볼 수 있습니다.

![\[Data Wrangler 콘솔의 데이터 흐름 섹션에 있는 연결된 데이터세트 테이블의 예시입니다.\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/images/studio/mohave/concat-2.png)


자세한 내용은 [데이터세트 연결하기](#data-wrangler-transform-concatenate) 섹션을 참조하세요.

------

## 데이터세트 조인하기
<a name="data-wrangler-transform-join"></a>

데이터 흐름에서 데이터 프레임을 직접 조인할 수 있습니다. 두 데이터세트를 조인하면 조인된 결과 데이터세트가 흐름에 나타납니다. 다음 조인 유형이 Data Wrangler에서 지원됩니다.
+ **왼쪽 외부(Left Outer)** - 왼쪽 테이블의 모든 행 포함. 왼쪽 테이블 행에서 조인된 열의 값이 오른쪽 테이블 행 값과 일치하지 않는 경우, 조인된 테이블에서 해당 열은 모든 오른쪽 테이블 열에 대해 null 값 포함.
+ **왼쪽 안티(Left Anti)** - 조인된 열에 대해 오른쪽 테이블에 값이 없는 왼쪽 테이블 행 포함.
+ **왼쪽 세미(Left semi)** - 조인문 기준을 충족하는 모든 동일한 행에 왼쪽 테이블의 단일 행 포함. 이 경우 조인 기준과 일치하는 왼쪽 테이블의 중복 행 제외.
+ **오른쪽 외부(Left Outer)** - 오른쪽 테이블의 모든 행 포함. 오른쪽 테이블 행에서 조인된 열의 값이 왼쪽 테이블 행 값과 일치하지 않는 경우, 조인된 테이블에서 해당 열은 모든 왼쪽 테이블 열에 대해 null 값 포함.
+ **내부(Inner)** - 왼쪽 및 오른쪽 테이블 행 중 일치하는 값이 포함된 행을 조인된 열에 포함.
+ **완전 외부(Full Outer)** - 왼쪽과 오른쪽 테이블의 모든 행 포함. 두 테이블 중 하나에 있는 조인된 열의 행 값이 일치하지 않는 경우, 조인된 테이블에 별도 행 생성. 조인된 테이블에서 열 값이 포함되지 않는 경우, 해당 열에 null 삽입.
+ **데카르트 크로스(Cartesian Cross)** - 첫 번째 테이블의 각 행을 두 번째 테이블의 각 행과 결합하는 행 포함. 이것은 조인 테이블 행의 [데카르트 곱(Cartesian product)](https://en.wikipedia.org/wiki/Cartesian_product)입니다. 이 곱의 결과는 왼쪽 표의 크기와 오른쪽 표의 크기를 곱한 값입니다. 따라서 초대형 데이터세트 간에 이 조인을 사용할 때는 주의할 것을 권장합니다.

다음 절차에 따라 두 데이터 프레임을 조인합니다.

1. 결합하려는 왼쪽 데이터 프레임 옆에서 **\$1**를 선택합니다. 첫 번째로 선택하는 데이터 프레임은 항상 조인의 왼쪽 테이블입니다.

1. **조인**을 선택합니다.

1. 올바른 데이터 프레임을 선택합니다. 두 번째로 선택하는 데이터 프레임은 항상 조인의 오른쪽 테이블입니다.

1. **구성(Configure)**을 선택하여 조인을 구성합니다.

1. **이름(Name)** 필드에 조인된 데이터세트 이름을 입력합니다.

1. **조인 유형(Join type)**을 선택합니다.

1. 왼쪽 및 오른쪽 테이블에서 조인할 열을 선택합니다.

1. **적용(Apply)**을 선택하여 오른쪽에 조인된 데이터세트를 미리보기 합니다.

1. 조인된 테이블을 데이터 흐름에 추가하려면 **추가(Add)**를 선택합니다.

## 데이터세트 연결하기
<a name="data-wrangler-transform-concatenate"></a>

**두 데이터세트를 연결합니다.**

1. 연결하려는 왼쪽 데이터 프레임 옆에서 **\$1**를 선택합니다. 첫 번째로 선택하는 데이터 프레임은 항상 연결의 왼쪽 테이블입니다.

1. **연결(Concatenate)**을 선택합니다.

1. 올바른 데이터 프레임을 선택합니다. 두 번째로 선택하는 데이터 프레임은 항상 연결의 오른쪽 테이블입니다.

1. **구성(Configure)**을 선택하여 연결을 구성합니다.

1. **이름(Name)** 필드에 연결된 데이터세트 이름을 입력합니다.

1. (선택 사항) **연결 후 중복 제거(Remove duplicates after concatenation)** 옆 확인란을 선택하여 중복 열을 제거합니다.

1. (선택 사항) 새 데이터세트에 있는 개별 열에 열 소스 표시기를 추가하려면, **소스 데이터 프레임을 표시할 열 추가(Add column to indicate source dataframe)** 옆 확인란을 선택합니다.

1. **적용(Apply)**을 선택하여 새 데이터세트를 미리보기 합니다.

1. 새 데이터세트를 데이터 흐름에 추가하려면 **추가(Add)**를 선택합니다.

## 데이터 균형화
<a name="data-wrangler-transform-balance-data"></a>

사용자는 데이터세트에 과소 대표된 범주가 있는 경우, 데이터 균형을 맞출 수 있습니다. 데이터세트 균형화는 더 개선된 바이너리 분류 모델을 생성하는 데 도움이 될 수 있습니다.

**참고**  
열 벡터가 포함된 데이터세트의 균형화는 불가능합니다.

사용자는 **데이터 균형화** 연산에서 다음 연산자 중 하나를 사용하여 데이터 균형을 맞출 수 있습니다.
+ 무작위 오버샘플링 - 소수 범주의 샘플을 무작위로 복제.** 예를 들어, 사기 감지의 경우 데이터의 10%에만 사기 사례가 있을 수 있습니다. 사기 사례와 비사기 사례의 비율이 같은 경우, 이 연산자는 데이터세트에서 사기 사례를 무작위로 8회 복제합니다.
+ 무작위 언더샘플링 - 무작위 오버샘플링과 대체적으로 상응함.** 과대 대표된 범주에서 샘플을 무작위로 제거하여 원하는 샘플 비율을 구합니다.
+ 합성 소수 오버샘플링 기법(SMOTE) - 과소 대표된 범주의 샘플을 사용하여 새 합성 소수 샘플 보간.** SMOTE에 대한 추가 정보는 다음 설명에서 확인하세요.

사용자는 숫자 및 비 숫자 특성을 모두 포함하는 데이터세트에서는 모든 변환을 적용할 수 있습니다. SMOTE는 인접 샘플을 사용하여 값을 보간합니다. Data Wrangler는 결정계수 거리를 사용하여 추가 샘플을 보간할 이웃을 결정합니다. Data Wrangler는 숫자 특성만 사용하여 과소 대표 집단 내 샘플 간 거리를 계산합니다.

Data Wrangler는 과소 대표 집단에 있는 두 개의 실제 샘플에 대해 가중 평균을 사용하여 숫자 특성을 보간합니다. [0, 1] 범위 샘플에 무작위로 가중치를 할당합니다. 숫자 특성인 경우, Data Wrangler는 샘플의 가중 평균을 사용하여 샘플을 보간합니다. 표본 A와 B의 경우, Data Wrangler는 A에 0.7, B에 0.3의 가중치를 무작위로 할당할 수 있습니다. 보간된 샘플 값은 0.7A\$10.3B입니다.

Data Wrangler는 보간된 실제 샘플 중 하나를 복사하여 비 숫자 특성을 보간합니다. 개별 샘플 무작위 할당 확률로 샘플을 복사합니다. 표본 A와 B의 경우, A에는 확률 0.8을, B에는 0.2를 할당할 수 있습니다. 할당된 확률에 대해 80% 의 확률로 A를 복사합니다.

## 사용자 지정 변환
<a name="data-wrangler-transform-custom"></a>

**사용자 지정 변환** 그룹에서는 Python(사용자 지정 함수), PySpark, pandas 또는 PySpark(SQL) 로 사용자 지정 변환을 정의할 수 있습니다. 세 가지 옵션 모두 `df` 변수를 사용하여 변환을 적용하려는 데이터 프레임에 액세스합니다. 사용자 지정 코드를 데이터 프레임에 적용하려면, `df` 변수에 적용한 변환을 데이터 프레임에 할당해야 합니다. Python(사용자 지정 함수)을 사용하지 않는 경우, 반환문을 포함하지 않아도 됩니다. **미리보기(Preview)**를 선택하여 사용자 지정 변환 결과를 미리보기 합니다. **추가(Add)**를 선택하여 **이전 단계(Previous steps)** 목록에 사용자 지정 변환을 추가합니다.

다음과 같이 사용자 지정 변환 코드 블록에 있는 `import`문으로 주요 라이브러리를 가져올 수 있습니다.
+ NumPy 버전 1.19.0
+ scikit-learn 버전 0.23.2
+ SciPy 버전 1.5.4
+ pandas 버전 1.0.3
+ PySpark 버전 3.0.0

**중요**  
**사용자 지정 변환**은 이름에 공백이나 특수 문자가 있는 열을 지원하지 않습니다. 영숫자 문자와 밑줄만으로 열 이름을 지정할 것을 권장합니다. 사용자는 **열 이름 바꾸기(Rename column)** 변환(**관리 열(Manage columns)** 변환 그룹 내)으로 열 이름에서 공백을 제거할 수 있습니다. 사용자는 또한 다음과 비슷한 **Python(Pandas)** **사용자 지정 변환(Custom transform)**을 추가하여 한 번에 여러 열에서 공백을 제거할 수도 있습니다. 이 예제에서는 이름이 `A column`, `B column`인 열을 각각 `A_column`, `B_column`(으)로 변경합니다.  

```
df.rename(columns={"A column": "A_column", "B column": "B_column"})
```

코드 블록에 출력문이 있는 경우, **미리보기(Preview)**를 선택할 때 결과가 표시됩니다. 사용자는 사용자 지정 코드 변환기 패널의 크기를 조정할 수 있습니다. 패널 크기를 조정하면 코드 작성 공간이 넓어집니다. 다음 이미지에서 패널 크기 조정 방법을 확인하세요.

![\[Python 함수의 경우 pd.Series 아래 주석을 코드로 바꿉니다.\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/images/studio/mohave/resizing-panel.gif)


다음 섹션에는 사용자 지정 변환 코드 작성을 위한 추가 컨텍스트와 예제가 있습니다.

**Python(사용자 지정 함수)**

Python 함수를 사용하면 Apache Spark 또는 pandas를 몰라도 사용자 지정 변환을 작성할 수 있습니다. Data Wrangler는 사용자 지정 코드를 빠르게 실행할 수 있게 최적화되어 있습니다. 사용자 지정 Python 코드와 Apache Spark 플러그인을 사용하면 비슷한 성능을 얻을 수 있습니다.

Python(사용자 지정 함수) 코드 블록을 사용하려면 다음을 지정해야 합니다.
+ **입력 열(Input column)** - 변환을 적용할 입력 열.
+ **모드(Mode)** - 스크립팅 모드(pandas 또는 Python).
+ **반환 유형(Return type)** - 반환 값의 데이터 유형.

pandas 모드를 사용하면 성능이 향상됩니다. Python 모드에서는 순수 Python 함수로 더 쉽게 변환을 작성할 수 있습니다.

다음 영상에서 사용자 지정 코드로 변환을 생성하는 방법을 알아보세요. 영상에서는 [Titanic 데이터세트](https://s3.us-west-2.amazonaws.com/amazon-sagemaker-data-wrangler-documentation-artifacts/walkthrough_titanic.csv)로 사용하여 인사말이 표시된 열을 생성합니다.

![\[Python 함수의 경우 pd.Series 아래 주석을 코드로 바꿉니다.\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/images/studio/mohave/python-function-transform-titanic-720.gif)


**PySpark**

다음 예제에서는 타임스탬프에서 날짜와 시간을 추출합니다.

```
from pyspark.sql.functions import from_unixtime, to_date, date_format
df = df.withColumn('DATE_TIME', from_unixtime('TIMESTAMP'))
df = df.withColumn( 'EVENT_DATE', to_date('DATE_TIME')).withColumn(
'EVENT_TIME', date_format('DATE_TIME', 'HH:mm:ss'))
```

**pandas**

다음 예제에서는 변환을 추가하는 데이터 프레임의 개요를 입력합니다.

```
df.info()
```

**PySpark(SQL)**

다음 예제에서는 *name*, *fare*, *pclass*, *survived*의 네 개의 열이 있는 새 데이터 프레임을 생성합니다.

```
SELECT name, fare, pclass, survived FROM df
```

PySpark 사용법을 모르는 경우, 사용자는 사용자 지정 코드 조각을 사용하여 시작 시 도움을 받을 수 있습니다.

Data Wrangler에는 검색 가능한 코드 조각 모음이 있습니다. 사용자는 코드 조각을 사용하여 열 삭제, 열별 그룹화, 모델링 등의 작업을 수행할 수 있습니다.

코드 조각을 사용하려면, **예제 조각 검색(Search example snippets)**을 선택하고 검색창에서 쿼리를 지정합니다. 쿼리에 지정하는 텍스트가 코드 조각의 이름과 정확히 일치할 필요는 없습니다.

다음 예제에서 데이터세트에 유사한 데이터가 있는 행을 삭제할 수 있는 **중복 행 삭제(Drop duplicate rows)** 코드 조각을 볼 수 있습니다. 사용자는 다음 중 하나로 검색하면 코드 조각을 찾을 수 있습니다.
+ Duplicates
+ Identical
+ 제거

다음 조각에는 변경할 사항을 파악하는 데 도움이 되는 주석이 있습니다. 먼저 대부분의 조각에 코드 내 데이터세트 열 이름을 지정해야 합니다.

```
# Specify the subset of columns
# all rows having identical values in these columns will be dropped

subset = ["col1", "col2", "col3"]
df = df.dropDuplicates(subset)  

# to drop the full-duplicate rows run
# df = df.dropDuplicates()
```

조각을 사용하려면, 조각 내용을 복사하여 **사용자 지정 변환** 필드에 붙여넣습니다. 사용자는 여러 개의 코드 조각을 복사하여 사용자 지정 변환 필드에 붙여 넣을 수 있습니다.

## 사용자 지정 공식
<a name="data-wrangler-transform-custom-formula"></a>

**사용자 지정 공식**으로 Spark SQL 표현식을 사용하는 새 열을 정의하여 현재의 데이터 프레임에 있는 데이터 쿼리를 실행합니다. 쿼리는 Spark SQL 표현식 규칙을 적용해야 합니다.

**중요**  
**사용자 지정 공식**은 이름에 공백이나 특수 문자가 있는 열을 지원하지 않습니다. 영숫자 문자와 밑줄만으로 열 이름을 지정할 것을 권장합니다. 사용자는 **열 이름 바꾸기(Rename column)** 변환(**관리 열(Manage columns)** 변환 그룹 내)으로 열 이름에서 공백을 제거할 수 있습니다. 사용자는 또한 다음과 비슷한 **Python(Pandas)** **사용자 지정 변환(Custom transform)**을 추가하여 한 번에 여러 열에서 공백을 제거할 수도 있습니다. 이 예제에서는 이름이 `A column`, `B column`인 열을 각각 `A_column`, `B_column`(으)로 변경합니다.  

```
df.rename(columns={"A column": "A_column", "B column": "B_column"})
```

사용자는 이 변환으로 열 이름을 참조하여 열에 대한 연산을 수행할 수 있습니다. 예를 들어, 현재 데이터 프레임에 *col\$1a* 및 *col\$1b* 열이 있다고 가정하면, 사용자는 다음 연산으로 다음 코드가 포함된 두 열의 곱인 **출력 열**을 생성할 수 있습니다.

```
col_a * col_b
```

데이터 프레임에 `col_a` 및 `col_b` 열이 포함되어 있다고 가정할 때 사용되는 다른 일반적인 연산에는 다음이 포함됩니다.
+ 두 열의 연결: `concat(col_a, col_b)`
+ 두 열 더하기: `col_a + col_b`
+ 두 열 빼기: `col_a - col_b`
+ 두 열 나누기: `col_a / col_b`
+ 열의 절대값 구하기: `abs(col_a)`

자세한 정보는 데이터 선택에 관한 [Spark 설명서](http://spark.apache.org/docs/latest/api/python)에서 확인하세요.

## 데이터세트 내 차원 축소
<a name="data-wrangler-transform-dimensionality-reduction"></a>

주성분 분석(PCA)으로 데이터 차원을 축소합니다. 데이터세트의 차원은 특성 수와 일치합니다. Data Wrangler에서 차원 축소를 적용하면 성분이라는 새로운 특성을 얻을 수 있습니다. 개별 성분은 데이터의 일부 변동성을 고려합니다.

첫 번째 성분은 데이터에서 가장 많은 양의 변동을 구성합니다. 두 번째 성분은 데이터에서 두 번째로 많은 양의 변동을 구성하는 식으로 계속됩니다.

사용자는 차원 축소를 사용하여 모델 훈련 시 사용하는 데이터세트의 크기를 줄일 수 있습니다. 사용자는 데이터세트에 있는 특성 대신에 주성분을 사용할 수 있습니다.

Data Wrangler는 PCA를 수행하기 위해 데이터 축을 생성합니다. 축은 데이터세트의 열 아핀 조합입니다. 첫 번째 주성분은 분산량이 가장 많은 축의 값입니다. 두 번째 주성분은 분산량이 두 번째로 많은 축의 값입니다. n번째 주성분은 분산량이 n번째로 많은 축의 값입니다.

사용자는 Data Wrangler가 반환하는 주성분 수를 구성할 수 있습니다. 사용자는 주성분 수를 직접 지정하거나 분산 임곗값 백분율을 지정할 수 있습니다. 개별 주성분은 데이터의 분산량을 설명합니다. 예를 들어, 값이 0.5인 주성분이 있을 수 있습니다. 이 성분은 데이터 분산의 50%를 설명합니다. 분산 임곗값 백분율을 지정하면 Data Wrangler는 지정한 백분율을 충족하는 최소 개수의 성분을 반환합니다.

다음은 데이터에서 설명하는 분산량을 포함한 주성분의 예입니다.
+ 성분 1 - 0.5
+ 성분 2 - 0.45
+ 성분 3 - 0.05

분산 임곗값 백분율을 `94` 또는 `95`로 지정하는 경우, Data Wrangler는 성분 1과 성분 2를 반환합니다. 분산 임곗값 백분율을 `96`로 지정하는 경우, Data Wrangler는 주성분 세 개를 모두 반환합니다.

사용자는 다음 절차에 따라 데이터세트에서 PCA를 실행할 수 있습니다.

데이터세트에서 PCA를 실행하는 방법은 다음과 같습니다.

1. Data Wrangler 데이터 흐름을 엽니다.

1. **\$1**를 선택하고 **변환 추가(Add transform)**를 선택합니다.

1. **단계 추가(Add step)**를 선택합니다.

1. **차원 축소(Dimensionality Reduction)**를 선택합니다.

1. **입력 열(Input Columns)**에서 주성분으로 축소하려는 특성을 선택합니다.

1. (선택 사항) **주성분 수(Number of principal components)**에서 Data Wrangler가 데이터세트에 반환하는 주성분의 수를 선택합니다. 필드 값을 지정할 경우 **분산 임곗값 백분율(Variance threshold percentage)** 값을 지정할 수 없습니다.

1. (선택 사항) **분산 임곗값 백분율**을 주성분으로 설명하고자 하는 데이터의 분산 백분율로 지정합니다. 분산 임곗값을 지정하지 않을 경우, Data Wrangler는 `95`의 기본 값을 적용합니다. **주성분 수(Number of principal components)** 값을 지정한 경우 분산 임곗값 백분율을 지정할 수 없습니다.

1. (선택 사항) 열 평균을 데이터 중심으로 사용하지 않으려면 **중심화(Center)** 선택을 해제합니다. 기본적으로 Data Wrangler는 크기 조정 전에 평균으로 데이터를 중앙화합니다.

1. (선택 사항) 단위 표준 편차로 데이터 크기를 조정하지 않으려면 **조정(Scale)** 선택을 해제합니다.

1. (선택 사항) 성분을 개별 열에 출력하려면 **열(Columns)**을 선택합니다. 성분을 단일 벡터로 출력하려면 **벡터(Vector)**를 선택합니다.

1. (선택 사항) **출력 열(Output column)**에 출력 열 이름을 지정합니다. 성분을 개별 열에 출력하는 경우 지정하는 이름은 접두사입니다. 성분을 벡터로 출력하는 경우 지정하는 이름은 벡터 열 이름입니다.

1. (선택 사항) **입력 열 유지(Keep input columns)**를 선택합니다. 주성분만 사용하여 모델을 훈련시킬 경우에는 이 옵션 선택을 권장하지 않습니다.

1. **Preview**(미리 보기)를 선택합니다.

1. **추가**를 선택합니다.

## 카테고리 인코딩
<a name="data-wrangler-transform-cat-encode"></a>

카테고리 데이터는 일반적으로 유한한 수의 범주로 구성되며, 각 범주는 문자열로 표시됩니다. 예를 들어, 고객 데이터 테이블에서 개인의 거주 국가를 나타내는 열은 카테고리입니다. 아프가니스탄, 알바니아, 알제리 등이 범주가 됩니다.****** 카테고리 데이터는 명목형 또는 순서형일 수 있습니다.**** 순서형 범주에는 고유한 순서가 있지만 명목형 범주에는 고유한 순서가 없습니다. 순서형 범주의 예로는 최종 학력(고졸, 대졸, 대학원졸 등)이 있습니다.******

카테고리 데이터 인코딩은 범주를 수치로 표현하는 과정입니다. 예를 들어, 범주가 개와 고양이인 경우, 이 정보를 `[1,0]` 벡터(개)와 `[0,1]` 벡터(고양이)로 인코딩할 수 있습니다.********

서수 범주를 인코딩할 때는 범주의 일반 순서를 인코딩으로 변환해야 할 수 있습니다. 예를 들어, 사용자는 다음 맵을 사용하여 얻은 최고 등급을 표시할 수 있습니다. `{"High school": 1, "Bachelors": 2, "Masters":3}` 

카테고리 인코딩을 사용하면 문자열 형식의 카테고리 데이터를 정수 배열로 인코딩할 수 있습니다.

Data Wrangler 카테고리 인코더는 단계가 정의될 때 열에 있는 모든 범주에 대한 인코딩을 생성합니다. *t* 시점에 데이터세트를 처리하기 위해 Data Wrangler 작업을 시작할 때 열에 새 범주가 추가되고, 이 열이 *t*-1 시점의 Data Wrangler 카테고리 인코딩 변환용 입력인 경우, 이 새 범주는 Data Wrangler 작업에서 누락된 것으로 간주됩니다.** **유효하지 않은 처리 전략(Invalid handling strategy)**으로 선택한 옵션은 이러한 누락된 값에 적용됩니다. 이러한 상황이 발생할 수 있는 경우의 예는 다음과 같습니다.
+ .flow 파일로 Data Wrangler 작업을 생성하여 데이터 흐름 생성 후 업데이트된 데이터세트를 처리하는 경우. 예를 들어, 데이터 흐름으로 매월 정기적으로 판매 데이터를 처리할 수 있습니다. 판매 데이터가 매주 업데이트되는 경우, 인코딩 카테고리 단계가 정의된 열에 새 범주가 도입될 수 있습니다.
+ 데이터세트를 가져올 때 **샘플링(Sampling)**을 선택하면 샘플에서 일부 범주가 제외될 수 있습니다.

이런 상황에서는 새 범주가 Data Wrangler 작업에서 누락된 값으로 간주됩니다.

사용자는 서수(ordinal) 및 원-핫 인코딩(one-hot encode) 중에서 선택하여 구성할 수 있습니다.**** 다음 섹션을 통해 이런 옵션에 대해 자세히 알아보세요.

두 변환 모두 **출력 열 이름(Output column name)**이라는 새 열 이름을 생성합니다. **출력 스타일(Output style)**로 이 열의 출력 형식을 지정합니다.
+ **벡터(Vector)**를 선택하여 희소 벡터가 있는 단일 열을 생성합니다.
+ **열(Columns)**을 선택하여 원래 열의 텍스트에 해당 범주와 동일한 값이 포함되어 있는지 여부를 나타내는 표시기 변수로 모든 범주에 대한 열을 생성합니다.

### 서수 인코딩
<a name="data-wrangler-transform-cat-encode-ordinal"></a>

**서수 인코딩(Ordinal encode)**을 선택하여 범주를 0에서 선택한 **입력 열**의 총 범주 수 사이의 정수로 인코딩합니다.

**유효하지 않은 처리 전략(Invalid handing strategy)**: 유효하지 않거나 누락된 값을 처리하는 메서드를 선택합니다.
+ 누락된 값이 있는 행을 생략하려면 **건너뛰기(Skip)**를 선택합니다.
+ 누락된 값을 마지막 범주로 유지하려면 **유지하기(Keep)**를 선택합니다.
+ **입력 열**에서 누락된 값이 발견될 경우 Data Wrangler에서 오류가 발생하도록 하려면 **오류(Error)**를 선택합니다.
+ 누락된 항목을 NaN으로 바꾸려면 **NaN으로 바꾸기(Replace with NaN)**를 선택합니다. ML 알고리즘이 누락된 값을 처리할 수 있는 경우, 이 옵션을 사용할 것을 권장합니다. 그렇지 않다면, 첫 세 가지 옵션을 통해 더 나은 결과를 얻을 수 있습니다.

### 원-핫 인코딩
<a name="data-wrangler-transform-cat-encode-onehot"></a>

**원-핫 인코딩(One-hot encode)**을 원-핫 인코딩을 사용할 **변환(Transform)**에 대해 선택합니다. 다음과 같이 변환을 구성합니다.
+ **마지막 범주 삭제(Drop last category)**: `True` 마지막 카테고리에 원-핫 인코딩에 있는 상응하는 인덱스가 없는 경우. 누락된 값이 있을 수 있는 경우, 누락된 범주는 항상 마지막이므로 이 범주를 `True`(으)로 설정하면 누락된 값으로 인해 올 제로 벡터가 발생합니다.
+ **유효하지 않은 처리 전략(Invalid handing strategy)**: 유효하지 않거나 누락된 값을 처리하는 메서드를 선택합니다.
  + 누락된 값이 있는 행을 생략하려면 **건너뛰기(Skip)**를 선택합니다.
  + 누락된 값을 마지막 범주로 유지하려면 **유지하기(Keep)**를 선택합니다.
  + **입력 열**에서 누락된 값이 발견될 경우 Data Wrangler에서 오류가 발생하도록 하려면 **오류(Error)**를 선택합니다.
+ **서수 인코딩 입력임(Is input ordinal encoded)**: 입력 벡터에 서수 인코딩 데이터가 포함된 경우 이 옵션을 선택합니다. 이 옵션을 사용하려면 입력 데이터에 음이 아닌 정수가 포함되어야 합니다. **True**인 경우, 입력 *i*는 *i*번째 위치에 0이 아닌 벡터로 인코딩됩니다.

### 유사성 인코딩
<a name="data-wrangler-transform-cat-encode-similarity"></a>

다음과 같은 경우에는 유사성 인코딩을 사용합니다.
+ 다수의 카테고리 변수
+ 노이즈 데이터

유사성 인코더는 카테고리 데이터가 있는 열을 임베딩합니다. 임베딩은 단어 같은 불연속 객체에서 실수 벡터로의 매핑을 뜻합니다. 비슷한 문자열을 비슷한 값을 포함하는 벡터로 인코딩합니다. 예를 들어, “California”와 “Calfornia”에 대해 매우 유사한 인코딩을 생성합니다.

Data Wrangler는 3-그램 토크나이저로 데이터세트의 각 범주를 토큰 세트로 변환합니다. 최소-해시 인코딩을 사용하여 토큰을 임베딩으로 변환합니다.

다음 예제에서 유사성 인코더가 문자열에서 벡터를 생성하는 방식을 볼 수 있습니다.

![\[Data Wrangler 콘솔의 테이블에 ENCODE CATEGORICAL을 사용한 예입니다.\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/images/studio/mohave/destination-nodes/similarity-encode-example-screenshot-0.png)


![\[Data Wrangler 콘솔의 테이블에 있는 변수의 벡터 표현 예시입니다.\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/images/studio/mohave/destination-nodes/similarity-encode-example-screenshot-1.png)


Data Wrangler가 생성하는 유사성 인코딩:
+ 저 차원
+ 다수 범주로 확장 가능
+ 강건하고 노이즈에 강함

위와 같은 이유로 유사성 인코딩은 원-핫 인코딩보다 용도가 다양합니다.

유사성 인코딩 변환을 데이터세트에 추가하려면 다음 절차에 따릅니다.

유사성 인코딩 사용 방법은 다음과 같습니다.

1. [Amazon SageMaker AI 콘솔](https://console.aws.amazon.com/sagemaker/)에 로그인합니다.

1. **Studio Classic 열기**를 선택합니다.

1. **앱 시작(Launch app)**을 선택합니다.

1. **Studio**를 선택합니다.

1. 데이터 흐름을 지정합니다.

1. 변환이 있는 단계를 선택합니다.

1. **단계 추가(Add step)**를 선택합니다.

1. **카테고리 인코딩(Encode categorical)**을 선택합니다.

1. 다음을 지정합니다.
   + **변환(Transform)** - **유사성 인코딩**
   + **입력 열(Input column)** - 인코딩할 카테고리 데이터가 포함된 열.
   + **대상 차원(Target dimension)** - (선택 사항) 카테고리 임베딩 벡터의 차원. 기본값은 30입니다. 다중 범주를 포함한 대형 데이터세트인 경우, 더 큰 대상 차원을 사용할 것을 권장합니다.
   + **출력 스타일(Output style)** - 인코딩된 값이 모두 있는 단일 벡터인 경우 **벡터(Vector)** 선택. 인코딩된 값을 별도 열에 표시하려면 **열(Column)**을 선택합니다.
   + **출력 열(Output column)** - (선택 사항) 벡터로 인코딩된 출력의 출력 열 이름. 열로 인코딩된 출력의 경우 열 이름 접두사 뒤에 나열된 번호가 붙습니다.

## 텍스트 특성 추출
<a name="data-wrangler-transform-featurize-text"></a>

**텍스트 특성 추출(Featureize Text)** 변환 그룹으로 문자열 유형 열을 검사하고 텍스트 임베딩으로 이런 열의 특성을 추출할 수 있습니다.

이 특성 그룹에는 문자 통계(Character statistics)와 벡터화(Vectorize)라는 두 가지 특성이 있습니다.**** 다음 섹션을 통해 이런 변환에 대해 자세히 알아보세요. 두 옵션 모두 **입력 열(Input column)**에 텍스트 데이터(문자열 유형)가 포함되어야 합니다.

### 문자 통계
<a name="data-wrangler-transform-featurize-text-character-stats"></a>

**문자 통계(Character statistics)**로 텍스트 데이터가 포함된 열의 각 행에 대한 통계를 생성할 수 있습니다.

이 변환은 각 행에 대해 다음과 같은 비율과 개수를 계산하고 결과를 보고하는 새 열을 생성합니다. 새 열의 이름은 입력 열 이름을 접두사로, 비율 또는 개수를 접미사로 하여 명명됩니다.
+ **단어 수(Number of words)**: 행에 있는 총 단어 수. 이 출력 열의 접미사는 `-stats_word_count`.
+ **문자 수(Number of characters)**: 행에 있는 총 문자 수. 이 출력 열의 접미사는 `-stats_char_count`.
+ **대문자 비율(Ratio of upper)**: A부터 Z까지의 대문자 수를 열의 모든 문자로 나눈 값. 이 출력 열의 접미사는 `-stats_capital_ratio`.
+ **소문자 비율(Ratio of lowerr)**: a부터 z까지의 소문자 수를 열의 모든 문자로 나눈 값. 이 출력 열의 접미사는 `-stats_lower_ratio`.
+ **자릿수 비율**: 입력 열의 자릿수 합계에 대한 단일 행 자릿수 비율. 이 출력 열의 접미사는 `-stats_digit_ratio`.
+ **특수 문자 비율**: 입력 열에 있는 모든 문자의 합계에 대한 영숫자를 제외한 문자(예: \$1\$1&%:@) 의 비율. 이 출력 열의 접미사는 `-stats_special_ratio`.

### 벡터화
<a name="data-wrangler-transform-featurize-text-vectorize"></a>

텍스트 임베딩에는 어휘의 단어 또는 구문을 실수 벡터로 매핑하는 작업이 포함됩니다. Data Wrangler 텍스트 임베딩 변환으로 텍스트 데이터를 단어 빈도-역 문서 빈도(TF-IDF) 벡터로 토큰화하고 벡터화할 수 있습니다.

텍스트 데이터 열에 대한 TF-IDF를 계산할 때, 개별 문장의 각 단어는 의미론적 중요성을 나타내는 실수로 변환됩니다. 숫자가 높을수록 단어 빈도가 낮고 보다 유의미한 경향이 있습니다.

**벡터화** 변환 단계를 정의할 때, Data Wrangler는 데이터세트에 있는 데이터로 개수 벡터라이저및 TF-IDF 메서드를 정의합니다. Data Wrangler 작업을 실행할 때도 이와 동일한 메서드를 사용합니다.

다음과 같이 변환을 구성합니다.
+ **출력 열 이름(Output column name)**: 이 변환은 텍스트 임베딩이 포함된 새 열을 생성합니다. 이 필드로 출력 열 이름을 지정합니다.
+ **토크나이저**: 토크나이저는 문장을 단어 목록 또는 토큰으로 변환합니다.**

  **표준(Standard)**을 선택하여 공백으로 분할하고 각 단어를 소문자로 변환하는 토크나이저를 적용합니다. 예를 들어, `"Good dog"`은(는) `["good","dog"]`(으)로 토큰화됩니다.

  **사용자 지정(Custom)**을 선택하여 사용자 지정 토크나이저를 적용합니다. **사용자 지정**을 선택하면 사용자는 다음 필드로 토크나이저를 구성할 수 있습니다.
  + **최소 토큰 길이(Minimum token length)**: 토큰이 효력을 갖기 위한 최소 길이(문자). 기본값은 `1`입니다. 예를 들어, 최소 토큰 길이를 `3`(으)로 지정하면, 토큰화된 문장에서 `a, at, in`와 같은 단어가 삭제됩니다.
  + **격차 발생 시 분할 Regex(Should regex split on gaps)**: 선택 시, 격차가 발생하면 분할 **Regex**. 선택하지 않으면 토큰과 일치시킵니다. 기본값은 `True`입니다.
  + **Regex 패턴(Regex pattern)**: 토큰화 프로세스를 정의하는 Regex 패턴. 기본값은 `' \\ s+'`입니다.
  + **소문자로(To lowercase)**: 선택 시, Data Wrangler가 토큰화 전에 모든 문자를 소문자로 변환. 기본값은 `True`입니다.

  자세한 내용은 [Tokenizer](https://spark.apache.org/docs/latest/ml-features#tokenizer)에 대한 Spark 설명서를 참조하세요.
+ **벡터라이저(Vectorizer)**: 벡터라이저는 토큰 목록을 희소 숫자 벡터로 변환. 각 토큰은 벡터의 인덱스에 해당하고 0이 아닌 값은 입력 문장에 토큰이 있음을 나타냅니다. 사용자는 개수(Count) 및 해싱(Hashing) 벡터라이저 중에서 선택할 수 있습니다.****
  + **개수 백터화(Count Vectorize)**로 자주 사용하지 않거나 지나치게 일반적인 토큰을 사용자 지정 필터링할 수 있습니다. **개수 벡터화 파라미터(Count vectorize parameters)**에는 다음이 포함됩니다.
    + **최소 용어 빈도(Minimum term frequency)**: 각 행에서 빈도가 낮은 용어(토큰) 필터링. 정수로 지정하면 절대 임곗값(포함)이 됩니다. 0(포함)에서 1 사이의 분수로 지정하면 임곗값은 총 용어 수에 비례합니다. 기본값은 `1`입니다.
    + **최소 문서 빈도(Minimum document frequency)**: 용어(토큰)가 포함된 것으로 보이는 최소 행 개수. 정수로 지정하면 절대 임곗값(포함)이 됩니다. 0(포함)에서 1 사이의 분수로 지정하면 임곗값은 총 용어 수에 비례합니다. 기본값은 `1`입니다.
    + **최대 문서 빈도(Maximum document frequency)**: 용어(토큰)가 포함된 것으로 보이는 문서(행)의 최대 수. 정수로 지정하면 절대 임곗값(포함)이 됩니다. 0(포함)에서 1 사이의 분수로 지정하면 임곗값은 총 용어 수에 비례합니다. 기본값은 `0.999`입니다.
    + **최대 어휘 크기(Maximum vocabulary size)**: 어휘의 최대 크기. 어휘는 열의 모든 행에 있는 모든 용어(토큰)로 구성됩니다. 기본값은 `262144`입니다.
    + **바이너리 출력(Binary outputs)**: 선택 시, 벡터 출력에 문서에 나타나는 용어의 개수가 포함되지 않고 용어의 출현 여부가 바이너리 표시자로 표시됩니다. 기본값은 `False`입니다.

    이 옵션에 대한 자세한 내용은 [CountVectorizer](https://spark.apache.org/docs/latest/ml-features#countvectorizer)에 대한 Spark 설명서를 참조하세요.
  + **해싱(Hashing)**은 연산 속도가 더 빠릅니다. **해시 벡터화 파라미터(Hash vectorize parameters)**에는 다음이 포함됩니다.
    + **해싱 중 특성 수(Number of features during hashing)**: 해시 벡터라이저는 해시 값에 따라 토큰을 벡터 인덱스에 매핑합니다. 이 기능은 가능한 해시 값의 수를 결정합니다. 값이 크면 해시 값 간의 충돌은 줄어들지만 출력 벡터의 차원은 커집니다.

    이 옵션에 대한 자세한 내용은 [FeatureHasher](https://spark.apache.org/docs/latest/ml-features#featurehasher)에 대한 Spark 설명서를 참조하세요.
+ **IDF 적용(Apply IDF)**은 주파수라는 용어에 TF-IDF 임베딩에 사용되는 표준 역 문서 빈도를 곱하는 IDF 변환을 적용합니다. **IDF 파라미터(IDF parameters)**에는 다음이 포함됩니다.
  + **최소 문서 빈도(Minimum document frequency)**: 용어(토큰)가 포함된 것으로 보이는 최소 문서 개수. **count\$1vectorize**를 벡터라이저로 선택한 경우, 기본값을 유지하되 **min\$1doc\$1freq** 필드(**개수 벡터화 파라미터(Count vectorize parameters)** 내)만 수정할 것을 권장합니다. 기본값은 `5`입니다.
+ **출력 형식(Output format)**: 각 행의 출력 형식.
  + **벡터(Vector)**를 선택하여 희소 벡터가 있는 단일 열을 생성합니다.
  + **평탄화(Flattened)**을 선택하여 원래 열의 텍스트에 해당 범주와 동일한 값이 포함되어 있는지 여부를 나타내는 표시기기 변수로 모든 범주에 대한 열을 생성합니다. 사용자는 **벡터라이저(Vectorizer)**를 **개수 벡터라이저(Count vectorizer)**로 설정했을 때만 평탄화를 선택할 수 있습니다.

## 시계열 변환
<a name="data-wrangler-transform-time-series"></a>

Data Wrangler에서 사용자는 시계열 데이터를 변환할 수 있습니다. 시계열 데이터세트 값은 특정 시간을 기준으로 인덱싱됩니다. 예를 들어, 하루 매시간 매장 내 고객 수를 보여주는 데이터세트는 시계열 데이터세트입니다. 다음 테이블에는 시계열 데이터세트의 예시가 있습니다.

매장 내 시간당 고객 수


| 고객 수 | 시간(시간) | 
| --- | --- | 
| 4 | 09:00 | 
| 10 | 10:00 | 
| 14 | 11:00 | 
| 25 | 12:00 | 
| 20 | 13:00 | 
| 18 | 14:00 | 

이전 테이블의 **고객 수(Number of Customers)** 열에는 시계열 데이터가 포함되어 있습니다. 시계열 데이터는 **시간(Time(hour))** 열의 시간별 데이터를 기반으로 인덱싱됩니다.

사용자가 분석에 사용할 수 있는 형식으로 데이터를 가져오려면 데이터를 여러 번 변환해야 할 수 있습니다. **시계열(Time series)** 변환 그룹으로 시계열 데이터를 변환할 수 있습니다. 사용자가 수행할 수 있는 변환에 대한 추가 정보는 다음 섹션에서 확인하세요.

**Topics**
+ [시계열 기준 그룹화](#data-wrangler-group-by-time-series)
+ [시계열 데이터 리샘플링](#data-wrangler-resample-time-series)
+ [누락된 시계열 데이터 처리](#data-wrangler-transform-handle-missing-time-series)
+ [시계열 데이터의 타임스탬프 검증](#data-wrangler-transform-validate-timestamp)
+ [시계열 길이 표준화](#data-wrangler-transform-standardize-length)
+ [시계열 데이터에서 특성 추출하기](#data-wrangler-transform-extract-time-series-features)
+ [시계열 데이터에서 시차 특성 적용하기](#data-wrangler-transform-lag-time-series)
+ [시계열에 Datetime 범위 생성하기](#data-wrangler-transform-datetime-range)
+ [시계열에 이동 기간 적용하기](#data-wrangler-transform-rolling-window)

### 시계열 기준 그룹화
<a name="data-wrangler-group-by-time-series"></a>

사용자는 연산 기준 그룹화로 열의 특정 값에 대한 시계열 데이터를 그룹화할 수 있습니다.

예를 들어, 다음 테이블은 일 평균 세대당 전기 사용량을 추적합니다.

일 평균 세대당 전기 사용량


| 세대 ID | 일별 타임스탬프 | 전기 사용량(kWh) | 세대당 거주자 수 | 
| --- | --- | --- | --- | 
| household\$10 | 1/1/2020 | 30 | 2 | 
| household\$10 | 1/2/2020 | 40 | 2 | 
| household\$10 | 1/4/2020 | 35 | 3 | 
| household\$11 | 1/2/2020 | 45 | 3 | 
| household\$11 | 1/3/2020 | 55 | 4 | 

ID별 그룹화를 선택하면 다음 테이블이 표시됩니다.

세대 ID별로 그룹화된 전기 사용량


| 세대 ID | 전기 사용량 시리즈(kWh) | 세대당 거주자 수 시리즈 | 
| --- | --- | --- | 
| household\$10 | [30, 40, 35] | [2, 2, 3] | 
| household\$11 | [45, 55] | [3, 4] | 

시계열 시퀀스의 각 항목은 상응하는 타임스탬프를 기준으로 정렬됩니다. 시퀀스의 첫 번째 요소는 시리즈의 첫 번째 타임스탬프와 상응합니다. `household_0`의 경우, `30`이(가) **전기 사용량 시리즈**의 첫 번째 값입니다. `30` 값은 `1/1/2020`의 첫 번째 타임스탬프와 상응합니다.

사용자는 시작 타임스탬프와 종료 타임스탬프를 포함할 수 있습니다. 다음 테이블에서 정보 표시 방식을 볼 수 있습니다.

세대 ID별로 그룹화된 전기 사용량


| 세대 ID | 전기 사용량 시리즈(kWh) | 세대당 거주자 수 시리즈 | Start\$1time | End\$1time | 
| --- | --- | --- | --- | --- | 
| household\$10 | [30, 40, 35] | [2, 2, 3] | 1/1/2020 | 1/4/2020 | 
| household\$11 | [45, 55] | [3, 4] | 1/2/2020 | 1/3/2020 | 

사용자는 다음 절차에 따라 시계열 열을 기준으로 그룹화할 수 있습니다.

1. Data Wrangler 데이터 흐름을 엽니다.

1. 데이터세트를 가져오지 않았다면 **데이터 가져오기(Import data)** 탭에서 가져옵니다.

1. 데이터 흐름의 **데이터 유형(Data types)**에서 **\$1**를 선택하고 **변환 추가(Add transform)**를 선택합니다.

1. **단계 추가(Add step)**를 선택합니다.

1. **시계열(Time Series)**을 선택합니다.

1. **변환(Transform)** 아래에 있는 **그룹화 기준(Group by)**을 선택합니다.

1. **이 열을 기준으로 그룹화(Group by this column)**에서 열을 지정합니다.

1. **열에 적용(Apply to columns)**에서 값을 지정합니다.

1. **미리 보기(Preview)**를 선택하여 변환 미리 보기를 생성합니다.

1. **추가(Add)**를 선택하여 변환을 Data Wrangler 데이터 흐름에 추가합니다.

### 시계열 데이터 리샘플링
<a name="data-wrangler-resample-time-series"></a>

시계열 데이터에는 일반적으로 일정 간격으로 수집되지 않는 관측치가 있습니다. 예를 들어, 데이터세트에 매시간 기록되는 관측치와 2시간마다 기록되는 관측치가 있을 수 있습니다.

예측 알고리즘과 같은 많은 분석에서는 일정 간격으로 관측치를 수집해야 합니다. 리샘플링을 통해 데이터세트의 관측 간격을 일정하게 정할 수 있습니다.

사용자는 시계열을 업샘플링하거나 다운샘플링할 수 있습니다. 다운샘플링은 데이터세트의 관측 간격을 늘립니다. 예를 들어, 1시간 또는 2시간마다 실시되던 관측을 다운샘플링하면 데이터세트의 각 관측치를 2시간마다 추출합니다. 평균, 중앙값 등의 집계 메서드를 적용하여 시간별 관측치를 단일 값으로 집계합니다.

업샘플링은 데이터세트의 관측 간격이 줄입니다. 예를 들어, 2시간마다 수집되던 관측치를 시간별로 업샘플링하는 경우 사용자는 보간 메서드를 적용하여 2시간마다 수행된 관측치에서 시간별 관측치를 유추할 수 있습니다. 보간 메서드에 대한 자세한 정보는 [pandas.DataFrame.interpolate](https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.interpolate.html)에서 확인하세요.

사용자는 숫자 및 비 숫자 데이터를 모두 리샘플링할 수 있습니다.

**리샘플링(Resample)** 연산으로 시계열 데이터를 리샘플링할수 있습니다. 데이터세트에 여러 시계열이 있는 경우, Data Wrangler는 각 시계열의 시간 간격을 표준화합니다.

다음 테이블에서는 평균을 집계 메서드로 사용하여 시계열 데이터를 다운샘플링하는 예제를 볼 수 있습니다. 데이터는 2시간 간격에서 1시간 간격으로 다운샘플링됩니다.

다운샘플링 전 하루의 시간당 온도 측정값


| 타임스탬프 | 온도(섭씨) | 
| --- | --- | 
| 12:00 | 30 | 
| 1:00 | 32 | 
| 2:00 | 35 | 
| 3:00 | 32 | 
| 4:00 | 30 | 

온도 측정값을 2시간 간격으로 다운샘플링


| 타임스탬프 | 온도(섭씨) | 
| --- | --- | 
| 12:00 | 30 | 
| 2:00 | 33.5 | 
| 4:00 | 35 | 

사용자는 다음 절차에 따라 시계열 데이터를 리샘플링할 수 있습니다.

1. Data Wrangler 데이터 흐름을 엽니다.

1. 데이터세트를 가져오지 않았다면 **데이터 가져오기(Import data)** 탭에서 가져옵니다.

1. 데이터 흐름의 **데이터 유형(Data types)**에서 **\$1**를 선택하고 **변환 추가(Add transform)**를 선택합니다.

1. **단계 추가(Add step)**를 선택합니다.

1. **리샘플링(Resample)**을 선택합니다.

1. **타임스탬프(Timestamp)**에서 타임스탬프 열을 선택합니다.

1. **빈도 단위(Frequency unit)**에서 리샘플링할 빈도를 지정합니다.

1. (선택 사항) **빈도 수량(Frequency quantity)** 값을 지정합니다.

1. 나머지 필드를 지정하여 변환을 구성합니다.

1. **미리 보기(Preview)**를 선택하여 변환 미리 보기를 생성합니다.

1. **추가(Add)**를 선택하여 변환을 Data Wrangler 데이터 흐름에 추가합니다.

### 누락된 시계열 데이터 처리
<a name="data-wrangler-transform-handle-missing-time-series"></a>

데이터세트에 누락된 값이 있는 경우 사용자는 다음 중 하나를 수행할 수 있습니다.
+ 시계열이 여러 개 있는 데이터세트인 경우, 지정한 임곗값보다 큰 누락된 값이 있는 시계열을 삭제합니다.
+ 시계열의 다른 값을 사용하여 시계열의 누락된 값을 산입합니다.

누락된 값을 산입하려면 값을 지정하거나 추론 메서드를 통해 데이터를 바꿔야 합니다. 사용자가 산입 시 사용할 수 있는 메서드는 다음과 같습니다.
+ 상수 값 - 데이터세트에서 누락된 데이터를 모두 지정한 값으로 바꿉니다.
+ 가장 일반적인 값 - 모든 누락된 데이터를 데이터세트에서 빈도가 가장 높은 값으로 바꿉니다.
+ 이전 값으로 채우기 - 이전 값으로 채우기를 적용하면 누락된 값을 누락된 값 이전의 누락되지 않은 값으로 바꿉니다. 시퀀스가 [2, 4, 7, NaN, NaN, NaN, 8]인 경우, 모든 누락된 값이 7로 바뀝니다. 이전 값으로 채우기를 적용한 시퀀스는 [2, 4, 7, 7, 7, 7, 8]이 됩니다.
+ 이후 값으로 채우기 - 이후 값으로 채우기를 적용하면 누락된 값을 누락된 값 이후의 누락되지 않은 값으로 바꿉니다. 시퀀스가 [2, 4, 7, NaN, NaN, NaN, 8]인 경우, 모든 누락된 값이 8로 바뀝니다. 이후 값으로 채우기를 적용한 시퀀스는 [2, 4, 7, 8, 8, 8, 8]이 됩니다.
+ 보간 - 보간 함수를 적용하여 누락된 값을 산입합니다. 사용자가 보간 시 사용할 수 있는 함수에 대한 자세한 정보는 [pandas.DataFrame.interpolate](https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.interpolate.html)에서 확인하세요.

일부 산입 메서드로는 데이터세트에서 누락된 값을 모두 산입하지 못할 수도 있습니다. 예를 들어, **이전 값으로 채우기**로는 시계열 시작 부분에 나타나는 누락된 값을 산입할 수 없습니다. 해당 값은 이전 값으로 채우기 또는 이후 값으로 채우기로 산입할 수 있습니다.

사용자는 셀이나 열에서 누락된 값을 산입할 수 있습니다.

다음 예제에서 셀에 값이 산입되는 방식을 볼 수 있습니다.

누락된 값이 있는 전기 사용량


| 세대 ID | 전기 사용량 시리즈(kWh) | 
| --- | --- | 
| household\$10 | [30, 40, 35, NaN, NaN] | 
| household\$11 | [45, NaN, 55] | 

이전 값으로 채우기로 값을 산입한 전기 사용량


| 세대 ID | 전기 사용량 시리즈(kWh) | 
| --- | --- | 
| household\$10 | [30, 40, 35, 35, 35] | 
| household\$11 | [45, 45, 55] | 

다음 예제에서 열에 값이 산입되는 방식을 볼 수 있습니다.

누락된 값이 있는 일 평균 세대당 전기 사용량


| 세대 ID | 전기 사용량(kWh) | 
| --- | --- | 
| household\$10 | 30 | 
| household\$10 | 40 | 
| household\$10 | NaN | 
| household\$11 | NaN | 
| household\$11 | NaN | 

이전 값으로 채우기로 값을 산입한 일 평균 세대당 전기 사용량


| 세대 ID | 전기 사용량(kWh) | 
| --- | --- | 
| household\$10 | 30 | 
| household\$10 | 40 | 
| household\$10 | 40 | 
| household\$11 | 40 | 
| household\$11 | 40 | 

사용자는 다음 절차에 따라 누락된 값을 처리할 수 있습니다.

1. Data Wrangler 데이터 흐름을 엽니다.

1. 데이터세트를 가져오지 않았다면 **데이터 가져오기(Import data)** 탭에서 가져옵니다.

1. 데이터 흐름의 **데이터 유형(Data types)**에서 **\$1**를 선택하고 **변환 추가(Add transform)**를 선택합니다.

1. **단계 추가(Add step)**를 선택합니다.

1. **누락 처리(Handle missing)**를 선택합니다.

1. **시계열 입력 유형(Time series input type)**에서 누락된 값을 셀 안에서 처리 또는 열과 함께 처리 여부를 선택합니다.

1. **이 열의 누락된 값 산입(Impute missing values for this column)**에서 누락된 값이 있는 열을 지정합니다.

1. **값 산입 메서드(Method for imputing values)**에서 방법을 선택합니다.

1. 나머지 필드를 지정하여 변환을 구성합니다.

1. **미리 보기(Preview)**를 선택하여 변환 미리 보기를 생성합니다.

1. 누락된 값이 있는 경우, 사용자는 **값 산입 메서드(Method for imputing values)**에서 산입 메서드를 지정할 수 있습니다.

1. **추가(Add)**를 선택하여 변환을 Data Wrangler 데이터 흐름에 추가합니다.

### 시계열 데이터의 타임스탬프 검증
<a name="data-wrangler-transform-validate-timestamp"></a>

유효하지 않은 타임스탬프 데이터가 있을 수 있습니다. 사용자는 **타임스탬프 검증(Validate time stamp)** 함수로 데이터세트의 타임스탬프가 유효한지 확인할 수 있습니다. 타임스탬프는 다음 중 하나 이상의 이유로 유효하지 않을 수 있습니다.
+ 타임스탬프 열에 누락된 값이 있음.
+ 타임스탬프 열의 값 형식이 올바르지 않음.

데이터세트에 유효하지 않은 타임스탬프가 있는 경우, 정상적으로 분석을 수행할 수 없습니다. 사용자는 Data Wrangler로 유효하지 않은 타임스탬프를 식별하고 데이터 정리가 필요한 위치를 파악할 수 있습니다.

다음 두 가지 중 한 가지 방법으로 시계열을 검증할 수 있습니다.

사용자는 데이터세트에서 누락된 값이 발견될 경우 다음 중 하나를 수행하도록 Data Wrangler를 구성할 수 있습니다.
+ 누락되거나 유효하지 않은 값이 있는 행을 삭제합니다.
+ 누락되거나 유효하지 않은 값이 있는 행을 식별합니다.
+ 데이터세트에서 누락되거나 유효하지 않은 값을 발견하면 오류가 발생하게 합니다.

사용자는 `timestamp` 유형이나 `string` 유형이 있는 열의 타임스탬프를 검증할 수 있습니다. 열에 `string` 유형이 있는 경우, Data Wrangler는 열 유형을 `timestamp`(으)로 변환하고 검증을 수행합니다.

사용자는 다음 절차에 따라 데이터세트의 타임스탬프를 검증할 수 있습니다.

1. Data Wrangler 데이터 흐름을 엽니다.

1. 데이터세트를 가져오지 않았다면 **데이터 가져오기(Import data)** 탭에서 가져옵니다.

1. 데이터 흐름의 **데이터 유형(Data types)**에서 **\$1**를 선택하고 **변환 추가(Add transform)**를 선택합니다.

1. **단계 추가(Add step)**를 선택합니다.

1. **타임스탬프 검증(Validate timestamps)**을 선택합니다.

1. **타임스탬프 열(Timestamp Column)**에서 타임스탬프 열을 선택합니다.

1. **정책(Policy)**에서 누락된 타임스탬프의 처리 여부를 선택합니다.

1. (선택 사항) **출력 열(Output column)**에 출력 열 이름을 지정합니다.

1. Datetime 열 형식이 문자열 유형인 경우, **Datetime으로 캐스팅(Cast to datetime)**을 선택합니다.

1. **미리 보기(Preview)**를 선택하여 변환 미리 보기를 생성합니다.

1. **추가(Add)**를 선택하여 변환을 Data Wrangler 데이터 흐름에 추가합니다.

### 시계열 길이 표준화
<a name="data-wrangler-transform-standardize-length"></a>

시계열 데이터를 배열로 저장한 경우, 사용자는 개별 시계열을 동일한 길이로 표준화할 수 있습니다. 시계열 배열 길이를 표준화하면 데이터 분석을 더 쉽게 수행할 수 있습니다.

사용자는 데이터 길이 고정이 필요한 데이터 변환에 맞게 시계열을 표준화할 수 있습니다.

여러 ML 알고리즘을 사용하려면 먼저 시계열 데이터를 평탄화해야 합니다. 시계열 데이터 평탄화는 시계열의 각 값을 데이터세트의 자체 열로 분리하는 것입니다. 데이터세트의 열 수는 변경할 수 없으므로, 각 배열을 특성 세트로 평탄화하는 사이에 시계열 길이를 표준화해야 합니다.

각 시계열은 시계열 세트의 분위수 또는 백분위수로 지정한 길이로 설정됩니다. 예를 들어, 사용자는 길이가 다음과 같은 세 개의 시퀀스가 있을 수 있습니다.
+ 3
+ 4
+ 5

사용자는 전체 시퀀스 길이를 50번째 백분위수 길이를 갖는 시퀀스의 길이로 설정할 수 있습니다.

지정한 길이보다 짧은 시계열 배열에는 누락된 값이 추가됩니다. 다음은 시계열을 더 긴 길이로 표준화하는 예제 형식입니다. [2, 4, 5, NaN, NaN, NaN].

누락된 값을 처리하는 방법은 다양합니다. 변경 방법에 대한 정보는 [누락된 시계열 데이터 처리](#data-wrangler-transform-handle-missing-time-series)에서 확인하세요.

지정한 길이보다 긴 시계열 배열은 잘립니다.

사용자는 다음 절차에 따라 시계열 길이를 표준화할 수 있습니다.

1. Data Wrangler 데이터 흐름을 엽니다.

1. 데이터세트를 가져오지 않았다면 **데이터 가져오기(Import data)** 탭에서 가져옵니다.

1. 데이터 흐름의 **데이터 유형(Data types)**에서 **\$1**를 선택하고 **변환 추가(Add transform)**를 선택합니다.

1. **단계 추가(Add step)**를 선택합니다.

1. **길이 표준화(Standardize length)**를 선택합니다.

1. **열의 시계열 길이 표준화(Standardize the time series length for the column)**에서 열을 선택합니다.

1. (선택 사항) **출력 열(Output column)**에 출력 열 이름을 지정합니다. 이름을 지정하지 않으면 현재 위치에서 변환이 실시됩니다.

1. Datetime 열 형식이 문자열 유형인 경우, **Datetime으로 캐스팅(Cast to datetime)**을 선택합니다.

1. **컷오프 분위수(Cutoff quantile)**를 선택하고 분위수를 지정하여 시퀀스 길이를 설정합니다.

1. **출력 평탄화(Flatten the output)**를 선택하여 시계열 값을 별도 열로 출력합니다.

1. **미리 보기(Preview)**를 선택하여 변환 미리 보기를 생성합니다.

1. **추가(Add)**를 선택하여 변환을 Data Wrangler 데이터 흐름에 추가합니다.

### 시계열 데이터에서 특성 추출하기
<a name="data-wrangler-transform-extract-time-series-features"></a>

시계열 데이터에 대해 분류 또는 회귀 알고리즘을 실행하는 경우, 알고리즘 실행 전 시계열에서 특성을 추출할 것을 권장합니다. 특성을 추출하면 알고리즘 성능이 향상될 수 있습니다.

다음 옵션으로 데이터에서 특성을 추출하는 방법을 선택합니다.
+ **최소 하위 집합(Minimal subset)**으로 다운스트림 분석에 유용한 것으로 알고 있는 8가지 특징을 추출하도록 지정합니다. 신속한 컴퓨팅이 필요한 경우 사용자는 최소 하위 집합을 적용할 수 있습니다. 또한 ML 알고리즘이 과적합될 위험이 높고 더 적은 특성을 제공하려는 경우에도 적용할 수 있습니다.
+ **효율적인 하위 집합(Efficient subset)**으로 분석 시 컴퓨팅 집약적인 특성을 추출하지 않고 가능한 많은 특성을 추출하도록 지정합니다.
+ **전체 특성(All features)**으로 tune 시리즈에서 전체 특성을 추출하도록 지정합니다.
+ **수동 하위 집합(Manual subset)**으로 데이터 원천 내 변동을 설명한다고 판단되는 특성 목록을 선택합니다.

다음 절차에 따라 시계열 데이터에서 특성을 추출합니다.

1. Data Wrangler 데이터 흐름을 엽니다.

1. 데이터세트를 가져오지 않았다면 **데이터 가져오기(Import data)** 탭에서 가져옵니다.

1. 데이터 흐름의 **데이터 유형(Data types)**에서 **\$1**를 선택하고 **변환 추가(Add transform)**를 선택합니다.

1. **단계 추가(Add step)**를 선택합니다.

1. **특성 추출(Extract Features)**을 선택합니다.

1. **이 열에서 특성 추출(Extract features for this column)**에서 열을 선택합니다.

1. (선택 사항) **평탄화(Flatten)**를 선택하여 특성을 별도 열로 출력합니다.

1. **전략(Strategy)**에서 특성을 추출할 전략을 선택합니다.

1. **미리 보기(Preview)**를 선택하여 변환 미리 보기를 생성합니다.

1. **추가(Add)**를 선택하여 변환을 Data Wrangler 데이터 흐름에 추가합니다.

### 시계열 데이터에서 시차 특성 적용하기
<a name="data-wrangler-transform-lag-time-series"></a>

여러 사용 사례에서 시계열의 미래 동작을 예측하는 가장 좋은 방법은 시계열의 최신 동작을 사용하는 것입니다.

시차 특성의 가장 일반적인 용도는 다음과 같습니다.
+ 소수의 과거 값 수집. 예를 들어, 시간이 t\$11인 경우 t, t-1, t-2, t-3을 수집합니다.
+ 데이터의 계절적 작동에 해당하는 값 수집. 예를 들어, 식당의 오후 1시 인원을 예측하려면 전날 오후 1시의 특성을 적용하는 것이 좋습니다. 같은 날 오후 12시 또는 오전 11시 이후의 특성을 적용하면 전날의 특성을 적용하는 것에 비해 예측이 정확하지 않을 수 있습니다.

1. Data Wrangler 데이터 흐름을 엽니다.

1. 데이터세트를 가져오지 않았다면 **데이터 가져오기(Import data)** 탭에서 가져옵니다.

1. 데이터 흐름의 **데이터 유형(Data types)**에서 **\$1**를 선택하고 **변환 추가(Add transform)**를 선택합니다.

1. **단계 추가(Add step)**를 선택합니다.

1. **시차 특성(Lag features)**을 선택합니다.

1. **이 열에서 시차 특성 생성(Generate lag features for this column)**에서 열을 선택합니다.

1. **타임스탬프 열(Timestamp Column)**에서 타임스탬프를 포함한 열을 선택합니다.

1. **시차(Lag)**에서 시차를 지정합니다.

1. (선택 사항) 다음 옵션 중 하나로 출력을 구성합니다.
   + **전체 시차 기간 포함(Include the entire lag window)**
   + **출력 평탄화(Flatten the output)**
   + **Drop rows without history(이력 없는 행 삭제)**

1. **미리 보기(Preview)**를 선택하여 변환 미리 보기를 생성합니다.

1. **추가(Add)**를 선택하여 변환을 Data Wrangler 데이터 흐름에 추가합니다.

### 시계열에 Datetime 범위 생성하기
<a name="data-wrangler-transform-datetime-range"></a>

타임스탬프가 없는 시계열 데이터가 있을 수 있습니다. 일정한 간격으로 관측이 수행되었음을 알고 있는 경우, 사용자는 시계열 타임스탬프를 별도 열에 생성할 수 있습니다. 타임스탬프를 생성하려면 시작 타임스탬프 값과 타임스탬프 빈도를 지정합니다.

예를 들어, 식당 고객 수에 대한 다음과 같은 시계열 데이터가 있을 수 있습니다.

식당 고객 수에 대한 시계열 데이터


| 고객 수 | 
| --- | 
| 10 | 
| 14 | 
| 24 | 
| 40 | 
| 30 | 
| 20 | 

식당이 오후 5시에 문을 열었고 매시간마다 관측을 했음을 알고 있는 경우, 사용자는 시계열 데이터에 해당하는 타임스탬프 열을 추가할 수 있습니다. 사용자는 다음 테이블에서 타임스탬프 열을 볼 수 있습니다.

식당 고객 수에 대한 시계열 데이터


| 고객 수 | 타임스탬프 | 
| --- | --- | 
| 10 | 1:00 PM | 
| 14 | 2:00 PM | 
| 24 | 3:00 PM | 
| 40 | 4:00 PM | 
| 30 | 5:00 PM | 
| 20 | 6:00 PM | 

다음 절차에 따라 데이터에 Datetime 범위를 추가합니다.

1. Data Wrangler 데이터 흐름을 엽니다.

1. 데이터세트를 가져오지 않았다면 **데이터 가져오기(Import data)** 탭에서 가져옵니다.

1. 데이터 흐름의 **데이터 유형(Data types)**에서 **\$1**를 선택하고 **변환 추가(Add transform)**를 선택합니다.

1. **단계 추가(Add step)**를 선택합니다.

1. **Datetime 범위(Datetime range)**를 선택합니다.

1. **빈도 유형(Frequency type)**에서 타임스탬프 빈도 측정 단위를 선택합니다.

1. **시작 타임스탬프(Starting timestamp)**에 시작 타임스탬프를 지정합니다.

1. **출력 열(Output column)**에 출력 열 이름을 지정합니다.

1. (선택 사항) 나머지 필드를 사용하여 출력을 구성합니다.

1. **미리 보기(Preview)**를 선택하여 변환 미리 보기를 생성합니다.

1. **추가(Add)**를 선택하여 변환을 Data Wrangler 데이터 흐름에 추가합니다.

### 시계열에 이동 기간 적용하기
<a name="data-wrangler-transform-rolling-window"></a>

사용자는 일정 기간 동안 특성을 추출할 수 있습니다. 예를 들어, 시간 *t*, 기간 길이 3, *t*번째 타임스탬프를 나타내는 행이 있는 경우, 시계열에서 추출된 특성을 시간 *t*-3, *t*-2, *t*-1에 추가합니다. 특성 추출에 대한 정보는 [시계열 데이터에서 특성 추출하기](#data-wrangler-transform-extract-time-series-features)에서 확인하세요.

사용자는 다음 절차에 따라 일정 기간 동안 특성을 추출할 수 있습니다.

1. Data Wrangler 데이터 흐름을 엽니다.

1. 데이터세트를 가져오지 않았다면 **데이터 가져오기(Import data)** 탭에서 가져옵니다.

1. 데이터 흐름의 **데이터 유형(Data types)**에서 **\$1**를 선택하고 **변환 추가(Add transform)**를 선택합니다.

1. **단계 추가(Add step)**를 선택합니다.

1. **이동 기간 특성(Rolling window features)**을 선택합니다.

1. **이 열에서 이동 기간 특성 생성(Generate rolling window features for this column)**에서 열을 선택합니다.

1. **타임스탬프 열(Timestamp Column)**에서 타임스탬프를 포함한 열을 선택합니다.

1. (선택 사항) **출력 열(Output column)**에 출력 열 이름을 지정합니다.

1. **윈도우 크기(Window size)**에 윈도우 크기를 지정합니다.

1. **전략(Strategy)**에서 추출 전략을 선택합니다.

1. **미리 보기(Preview)**를 선택하여 변환 미리 보기를 생성합니다.

1. **추가(Add)**를 선택하여 변환을 Data Wrangler 데이터 흐름에 추가합니다.

## Datetime 특성 추출
<a name="data-wrangler-transform-datetime-embed"></a>

**Datetime 특성 추출(Featurize date/time)**로 Datetime 필드를 나타내는 벡터 임베딩을 생성합니다. 이 변환을 사용하려면 Datetime 데이터가 다음 형식 중 하나여야 합니다.
+ Datetime 설명 문자열: 예: `"January 1st, 2020, 12:44pm"` 
+ Unix 타임스탬프: Unix 타임스탬프는 1970년 1월 1일 이후의 초, 밀리초, 마이크로초 또는 나노초 수를 나타냅니다.

사용자는 **Datetime 형식 추론(Infer datetime format)**을 선택하고 **Datetime 형식(Datetime format)**을 입력할 수 있습니다. Datetime 형식 입력 시 먼저 [Python 설명서](https://docs.python.org/3/library/datetime.html#strftime-and-strptime-format-codes)에 있는 코드를 사용해야 합니다. 이 두 구성에 대해 선택하는 옵션은 연산 속도와 최종 결과에 영향을 미칩니다.
+ 가장 수동적이고 컴퓨팅 속도가 빠른 옵션은 **Datetime 형식**을 지정하고 **아니요(No)**를 **Datetime 형식 추론**에서 선택하는 것입니다.
+ 수작업을 줄이려면 **Datetime 형식 추론**을 선택하고 Datetime 형식을 지정하지 않으면 됩니다. 역시 컴퓨팅 속도가 빠른 연산이지만, 입력 열에서 처음 접하는 Datetime 형식이 전체 열의 형식으로 간주됩니다. 열에 다른 형식이 있는 경우, 최종 출력에서 NaN 값이 됩니다. Datetime 형식을 추론하면 구문 분석되지 않은 문자열을 얻을 수 있습니다.
+ 형식을 지정하지 않고 **아니요**를 **Datetime 형식 추론**에서 선택하면 가장 강건한 결과를 얻게 됩니다. 모든 유효한 Datetime 문자열이 구문 분석됩니다. 그러나 이 연산은 이 목록의 첫 두 옵션에 비해 훨씬 느릴 수 있습니다.

이 변환을 적용할 때는 위에 나열된 형식 중 하나로 된 Datetime 데이터를 포함하는 **입력 열(Input column)**을 지정합니다. 변환 시 **출력 열 이름(Output column name)**이라는 출력 열이 생성됩니다. 출력 열 형식은 다음을 적용하는 구성에 따라 달라집니다.
+ **벡터(Vector)**: 단일 열을 벡터로 출력.
+ **열(Columns)**: 모든 특성에 대해 새 열 생성. 예를 들어, 출력에 년, 월, 일이 포함된 경우, 년, 월, 일에 대한 별도의 열 세 개가 생성됩니다.

또한 먼저 **임베딩 모드(Embedding mode)**를 선택해야 합니다. 선형 모델 및 심층망의 경우, **순환형(cyclic)**을 선택할 것을 권장합니다. 트리 기반 알고리즘의 경우, **순서형(ordinal)**을 선택할 것을 권장합니다.

## 문자열 형식 지정하기
<a name="data-wrangler-transform-format-string"></a>

**문자열 형식 지정(Format string)** 변환에는 표준 문자열 형식 지정 연산이 포함됩니다. 예를 들어, 사용자는 이 연산으로 특수 문자를 제거하고, 문자열 길이를 정상화하고, 문자열 대소문자를 업데이트할 수 있습니다.

이 특성 그룹에는 다음과 같은 변환이 포함됩니다. 모든 변환은 문자열 사본을 **입력 열**에 반환하고 결과를 새 출력 열에 추가합니다.


| 이름 | 함수 | 
| --- | --- | 
| 왼쪽부터 채우기 |  주어진 **채우기 문자(Fill character)**로 주어진 **너비(width)**까지 문자열을 왼쪽부터 채웁니다. 문자열이 **너비**보다 길면 반환 값이 **너비** 문자로 단축됩니다.  | 
| 오른쪽부터 채우기 |  주어진 **채우기 문자**로 주어진 **너비**까지 문자열을 오른쪽부터 채웁니다. 문자열이 **너비**보다 길면 반환 값이 **너비** 문자로 단축됩니다.  | 
| 가운데(양쪽에서 채우기) |  주어진 **채우기 문자**로 주어진 **너비**까지 문자열을 가운데 채우기(문자열 양쪽에서 추가)합니다. 문자열이 **너비**보다 길면 반환 값이 **너비** 문자로 단축됩니다.  | 
| 앞에 0 추가 |  숫자 문자열을 주어진 **너비**까지 왼쪽부터 0으로 채웁니다. 문자열이 **너비**보다 길면 반환 값이 **너비** 문자로 단축됩니다.  | 
| 왼쪽 및 오른쪽 제거 |  선행 및 후행 문자가 제거된 문자열 사본을 반환합니다.  | 
| 왼쪽부터 문자 제거 |  선행 문자가 제거된 문자열 사본을 반환합니다.  | 
| 오른쪽부터 문자 제거 |  후행 문자가 제거된 문자열 사본을 반환합니다.  | 
| 소문자 |  텍스트의 모든 문자를 소문자로 변환합니다.  | 
| 대문자 |  텍스트의 모든 문자를 대문자로 변환합니다.  | 
| 첫 글자 대문자 |  문장의 첫 글자를 대문자로 표기합니다.  | 
| 대소문자 전환 | 주어진 문자열의 모든 대문자를 소문자로, 모든 소문자를 대문자로 변환하여 반환합니다. | 
| 접두사 또는 접미사 추가 |  문자열 열에 접두사와 접미사를 추가합니다. 먼저 최소 하나의 **Prefix(접두사)**와 **Suffix(접미사)**를 지정해야 합니다.  | 
| 기호 제거 |  문자열에서 주어진 기호를 제거합니다. 나열된 모든 문자가 제거됩니다. 기본값은 공백입니다.  | 

## 이상치 처리하기
<a name="data-wrangler-transform-handle-outlier"></a>

머신러닝 모델은 특성 값의 분포와 범위에 민감합니다. 이상치, 즉 희귀값은 모델 정확도에 부정적인 영향을 미치고 훈련 시간을 지연지킬 수 있습니다. 이 특성 그룹으로 데이터세트 내 이상치를 감지하고 업데이트할 수 있습니다.

**이상치 처리(Handle outliers)** 변환 단계를 정의하면 Data Wrangler에서 사용할 수 있는 데이터에 대해 이상치를 감지할 때 사용되는 통계가 생성됩니다. Data Wrangler 작업을 실행할 때도 이와 동일한 통계가 사용됩니다.

다음 섹션을 통해 이 그룹에 포함된 변환에 대해 자세히 알아보세요. **출력 이름(Output name)**을 지정하면 개별 변환에서 결과 데이터가 포함된 출력 열이 생성됩니다.

### 강건한 표준 편차 숫자 이상치
<a name="data-wrangler-transform-handle-outlier-rstdev"></a>

이 변환은 이상치에 강한 통계를 사용하여 숫자 특성의 이상치를 감지하고 수정합니다.

먼저 이상치 계산 시 사용되는 통계 **상한 분위수(Upper quantile)**와 **하한 분위수(Lower quantile)**를 정의해야 합니다. 또한 **표준 편차(Standard deviations)** 수를 먼저 지정해야 평균과 다른 값을 이상치로 감지할 수 있습니다. 예를 들어, **표준 편차**로 3을 지정한 경우, 평균에서 3 표준편차 이상 떨어진 값이 이상치로 간주됩니다.

**수정 메서드(Fix method)**는 감지된 이상치를 처리할 때 사용되는 메서드입니다. 사용자는 다음 중에서 선택할 수 있습니다.
+ **클립(Clip)**: 이 옵션으로 이상치를 상응하는 이상치 감지 한도로 클리핑할 수 있습니다.
+ **제거(Remove)**: 데이터 프레임에서 이상치가 있는 행을 제거합니다.
+ **무효화(Invalidate)**: 이상치를 유효하지 않은 값으로 바꿉니다.

### 표준 편차 숫자 이상치
<a name="data-wrangler-transform-handle-outlier-sstdev"></a>

이 변환은 평균과 표준 편차를 사용하여 숫자 특성의 이상치를 감지하고 수정합니다.

**표준 편차** 수를 지정하면 평균과 다른 값을 이상치로 감지할 수 있습니다. 예를 들어, **표준 편차**로 3을 지정한 경우, 평균에서 3 표준편차 이상 떨어진 값이 이상치로 간주됩니다.

**수정 메서드(Fix method)**는 감지된 이상치를 처리할 때 사용되는 메서드입니다. 사용자는 다음 중에서 선택할 수 있습니다.
+ **클립(Clip)**: 이 옵션으로 이상치를 상응하는 이상치 감지 한도로 클리핑할 수 있습니다.
+ **제거(Remove)**: 데이터 프레임에서 이상치가 있는 행을 제거합니다.
+ **무효화(Invalidate)**: 이상치를 유효하지 않은 값으로 바꿉니다.

### 분위수 숫자 이상치
<a name="data-wrangler-transform-handle-outlier-quantile-numeric"></a>

이 변환을 적용하면 분위수를 사용하여 숫자 특성의 이상치를 감지하고 수정합니다. 사용자는 **상한 분위수(Upper quantile)**와 **하한 분위수(Lower quantile)**를 정의할 수 있습니다. 상위 분위수를 초과하거나 하위 분위수에 미달하는 모든 값은 이상치로 간주됩니다.

**수정 메서드(Fix method)**는 감지된 이상치를 처리할 때 사용되는 메서드입니다. 사용자는 다음 중에서 선택할 수 있습니다.
+ **클립(Clip)**: 이 옵션으로 이상치를 상응하는 이상치 감지 한도로 클리핑할 수 있습니다.
+ **제거(Remove)**: 데이터 프레임에서 이상치가 있는 행을 제거합니다.
+ **무효화(Invalidate)**: 이상치를 유효하지 않은 값으로 바꿉니다.

### 최소-최대 숫자 이상치
<a name="data-wrangler-transform-handle-outlier-minmax-numeric"></a>

이 변환은 상한 및 하한 임곗값을 사용하여 숫자 특성의 이상치를 감지하고 수정합니다. 이상치를 나타내는 임곗값을 알고 있는 경우 이 메서드를 적용합니다.

**상한 임곗값(Upper threshold)**과 **하한 임곗값(Lower threshold)**을 지정하고 값이 각각 해당 임곗값보다 높거나 낮으면 이상치로 간주합니다.

**수정 메서드(Fix method)**는 감지된 이상치를 처리할 때 사용되는 메서드입니다. 사용자는 다음 중에서 선택할 수 있습니다.
+ **클립(Clip)**: 이 옵션으로 이상치를 상응하는 이상치 감지 한도로 클리핑할 수 있습니다.
+ **제거(Remove)**: 데이터 프레임에서 이상치가 있는 행을 제거합니다.
+ **무효화(Invalidate)**: 이상치를 유효하지 않은 값으로 바꿉니다.

### 희귀값 바꾸기
<a name="data-wrangler-transform-handle-outlier-replace-rare"></a>

**희귀값 바꾸기(Replace Rare)** 변환을 적용하면 임곗값 지정 시 Data Wrangler가 해당 임곗값을 충족하는 모든 값을 찾아 지정한 문자열로 바꿉니다. 예를 들어, 이 변환을 사용하여 한 열의 모든 이상치를 “기타” 범주로 분류할 수 있습니다.
+ **대체 문자열(Replacement string)**: 이상치를 대체할 문자열.
+ **절대 임곗값(Absolute threshold)**: 인스턴스 수가 이 절대 임곗값보다 작거나 같으면 희귀 범주.
+ **분수 임곗값(Fraction threshold)**: 인스턴스 수가 이 분수 임곗값에 행 수를 곱한 값보다 작거나 같으면 희귀 범주.
+ **최대 일반 범주(Max common categories)**: 연산 후 남아 있는 최대 비 희귀 범주. 임곗값이 필터링하는 범주가 충분하지 않은 경우, 나타나는 횟수가 가장 많은 범주는 희귀하지 않은 것으로 분류됩니다. 0(기본값)으로 설정하면 범주 수가 엄격하게 제한되지 않습니다.

## 누락된 값 처리
<a name="data-wrangler-transform-handle-missing"></a>

누락된 값은 머신러닝 데이터세트에서 흔히 발생합니다. 경우에 따라 누락된 데이터를 평균값이나 카테고리 공통 값과 같은 계산된 값으로 바꾸는 것이 적절할 수 있습니다. 사용자는 누락된 값은 **누락된 값 처리(Handle missing values)** 변환 그룹으로 처리할 수 있습니다. 이 그룹에는 다음과 같은 변환이 포함됩니다.

### 누락 채우기
<a name="data-wrangler-transform-fill-missing"></a>

**누락 채우기(Fill missing)** 변환으로 누락된 값을 정의한 **채우기 값(Fill value)**으로 바꿀 수 있습니다.

### 누락 산입
<a name="data-wrangler-transform-impute"></a>

**누락 산입(Impute missing)** 변환으로 누락된 값이 발견된 입력 카테고리 및 숫자 데이터에 산입 값이 포함된 새 열을 생성합니다. 구성은 데이터 유형에 따라 달라집니다.

숫자 데이터의 경우, 산입할 새 값을 정할 때 사용되는 산입 전략을 선택합니다. 사용자는 데이터세트에 있는 값의 평균이나 중앙값 산입을 선택할 수 있습니다. Data Wrangler는 계산한 값으로 누락된 값을 산입합니다.

카테고리 데이터의 경우, Data Wrangler가 열에서 가장 빈번한 값으로 누락된 값을 산입합니다. 사용자 지정 문자열을 산입하려면 **누락 채우기** 변환을 대신 적용합니다.

### 누락 표시기 추가
<a name="data-wrangler-transform-missing-add-indicator"></a>

**누락 표시기 추가(Add indicator for missing)** 변환으로 새 표시기 열을 생성합니다. 행에 값이 있는 경우 부울 `"false"`이(가) 포함되고, 행에 누락된 값이 있는 경우 `"true"`이(가) 포함됩니다.

### 누락 삭제
<a name="data-wrangler-transform-drop-missing"></a>

**누락 삭제(Drop missing)** 옵션으로 **입력 열(Input column)**에서 누락된 값이 포함된 행을 삭제합니다.

## 열 관리
<a name="data-wrangler-manage-columns"></a>

사용자는 다음 변환으로 데이터세트의 열을 빠르게 업데이트하고 관리할 수 있습니다.


| 이름 | 함수 | 
| --- | --- | 
| 열 삭제 | 열을 삭제합니다. | 
| 열 복제 | 열을 복제합니다. | 
| 열 이름 바꾸기 | 열 이름을 바꿉니다. | 
| 열 이동 |  데이터세트 내 열 위치를 옮깁니다. 열을 데이터세트의 시작이나 끝, 참조 열의 앞뒤, 특정 색인으로 이동시키려면 선택합니다.  | 

## 행 관리
<a name="data-wrangler-transform-manage-rows"></a>

이 변환 그룹으로 행 정렬과 셔플 연산을 빠르게 수행할 수 있습니다. 이 그룹에는 다음이 포함됩니다.
+ **정렬(Sort)**: 전체 데이터 프레임을 주어진 열을 기준으로 정렬합니다. **오름차순(Ascending order)** 옆 확인란에서 이 옵션을 선택합니다. 확인란 선택을 취소하면 내림차순으로 정렬됩니다.
+ **셔플(Shuffle)** 데이터세트의 모든 행을 임의로 섞습니다.

## 벡터 관리
<a name="data-wrangler-transform-manage-vectors"></a>

이 변환 그룹으로 벡터 열을 조합하거나 평탄화할 수 있습니다. 이 그룹에는 다음과 같은 변환이 포함됩니다.
+ **모으기(Assemble)**: 이 변환으로 Spark 벡터와 숫자 데이터를 단일 열로 모을 수 있습니다. 예를 들어, 사용자는 숫자 데이터가 포함된 두 열과 벡터가 포함된 한 열을 조합할 수 있습니다. 조합하고자 하는 열을 모두 **입력 열(Input columns)**에 추가하고 조합된 데이터의 **출력 열 이름(Output column name)**을 지정합니다.
+ **평탄화(Flatten)**: 이 변환으로 벡터 데이터가 포함된 단일 열을 평탄화할 수 있습니다. 입력 열에는 PySpark 벡터 또는 배열과 유사한 객체가 포함되어야 합니다. 사용자가 생성된 열 수를 제어하려면 **출력 수 감지 메서드(Method to detect number of outputs)**를 지정하면 됩니다. 예를 들어, **첫 번째 벡터의 길이(Length of first vector)**를 선택하면 열에서 찾은 첫 번째 유효한 벡터 또는 배열의 요소 수에 따라 생성되는 출력 열의 수가 결정됩니다. 항목이 너무 많은 다른 입력 벡터는 모두 잘립니다. 항목이 너무 적은 입력은 NaN으로 채워집니다.

  또한 **출력 접두사(Output prefix)**를 지정하면 개별 출력 열의 접두사로 사용됩니다.

## 숫자 처리
<a name="data-wrangler-transform-process-numeric"></a>

**숫자 처리(Process Numeric)** 특성 그룹으로 숫자 데이터를 처리합니다. 이 그룹의 개별 스케일러는 Spark 라이브러리로 정의됩니다. 다음 스케일러가 지원됩니다.
+ **표준 스케일러(Standard Scaler)**: 각 값에서 평균을 빼고 단위 분산으로 조정하여 입력 열 표준화. 자세한 내용은 [StandardScaler](https://docs.aws.amazon.com/sagemaker/latest/dg/data-wrangler-transform.html)에 대한 Spark 설명서를 참조하세요.
+ **견고 스케일러(Robust Scaler)**: 이상치에 강한 통계를 사용하여 입력 열 조정. 자세한 내용은 [RobustScaler](https://spark.apache.org/docs/latest/ml-features#robustscaler)에 대한 Spark 설명서를 참조하세요.
+ **최소 최대 스케일러**: 각 특성을 주어진 범위로 조정하여 입력 열 변환. 자세한 내용은 [MinMaxScaler](https://spark.apache.org/docs/latest/ml-features#minmaxscaler)에 대한 Spark 설명서를 참조하세요.
+ **최대 절대 스케일러**: 각 값을 최대 절대값으로 나누어 입력 열 조정. 자세한 내용은 [MaxAbsScaler](https://spark.apache.org/docs/latest/ml-features#maxabsscaler)에 대한 Spark 설명서를 참조하세요.

## 샘플링
<a name="data-wrangler-transform-sampling"></a>

데이터를 가져온 후 사용자는 **샘플링(Sampling) 변환기**로 하나 이상의 데이터를 샘플링할 수 있습니다. 샘플링 변환기를 사용하면 Data Wrangler가 원본 데이터세트를 샘플링합니다.

사용자는 다음 중 한 가지 메서드를 선택할 수 있습니다.
+ **제한(Limit)**: 첫 번째 행부터 지정한 한도까지 데이터세트 샘플링.
+ **무작위(Randomized)**: 지정된 크기의 무작위 샘플 추출.
+ **계층화(Stratified)**: 계층화된 무작위 샘플 추출.

사용자는 무작위 샘플을 계층화하여 데이터세트의 원래 분포를 나타내도록 할 수 있습니다.

여러 사용 사례에 맞게 데이터를 준비할 수 있습니다. 사용 사례별로 사용자는 다른 샘플을 가져와서 다른 변환 세트를 적용할 수 있습니다.

다음은 무작위 샘플 생성 과정입니다.

데이터에서 무작위 샘플을 추출하려면.

1. 가져온 데이터 세트 오른쪽에서 **\$1**를 선택합니다. 데이터세트 이름은 **\$1** 아래에 있습니다.

1. **변환 추가(Add transform)**를 선택합니다.

1. **샘플링**을 선택합니다.

1. **샘플링 메서드(Sampling method)**에서 샘플링 메서드를 선택합니다.

1. **샘플 크기 근사치(Approximate sample size)**에서 샘플링하고자 하는 관측 근사치를 선택합니다.

1. (선택 사항) **무작위 시드(Random seed)**에 정수를 지정하여 재현 가능한 샘플을 생성합니다.

다음은 계층화 샘플 생성 과정입니다.

데이터에서 계층화 샘플을 추출하려면.

1. 가져온 데이터세트 오른쪽에서 **\$1**를 선택합니다. 데이터세트 이름은 **\$1** 아래에 있습니다.

1. **변환 추가(Add transform)**를 선택합니다.

1. **샘플링**을 선택합니다.

1. **샘플링 메서드(Sampling method)**에서 샘플링 메서드를 선택합니다.

1. **샘플 크기 근사치(Approximate sample size)**에서 샘플링하고자 하는 관측 근사치를 선택합니다.

1. **계층화 열(Stratify column)**에서 계층화하고자 하는 열의 이름을 지정합니다.

1. (선택 사항) **무작위 시드(Random seed)**에 정수를 지정하여 재현 가능한 샘플을 생성합니다.

## 검색 및 편집
<a name="data-wrangler-transform-search-edit"></a>

이 섹션으로 문자열 내 특정 패턴을 검색하고 편집할 수 있습니다. 예를 들어, 사용자는 문장이나 문서 내에서 문자열을 찾아 업데이트하고, 구분자로 문자열을 분할하고, 특정 문자열 발생을 검색할 수 있습니다.

**검색 및 편집(Search and edit)**에서 지원되는 변환은 다음과 같습니다. 모든 변환은 문자열 사본을 **입력 열(Input column)**에 반환하고 결과를 새 출력 열에 추가합니다.


| 이름 | 함수 | 
| --- | --- | 
|  하위 문자열 찾기  |  검색한 **하위 문자열(Substring)**이 처음 나타나는 항목의 색인을 반환합니다. 사용자는 **시작(Start)**과 **끝(End)**에서 검색을 시작하고 종료할 수 있습니다.  | 
|  하위 문자열 찾기(오른쪽부터)  |  검색한 **하위 문자열** 마지막 항목 색인을 반환합니다. 사용자는 **시작**과 **끝**에서 검색을 시작하고 종료할 수 있습니다.  | 
|  접두사 일치  |  문자열에 주어진 **패턴(Pattern)**이 포함된 경우 부울 값을 반환합니다. 패턴은 문자 시퀀스 또는 정규 표현식일 수 있습니다. 선택적으로 사용자는 대소문자 구분 패턴을 만들 수 있습니다.  | 
|  전체 발생 항목 찾기  |  주어진 패턴의 발생 항목이 모두 포함된 배열을 반환합니다. 패턴은 문자 시퀀스 또는 정규 표현식일 수 있습니다.  | 
|  Regex로 추출  |  주어진 Regex 패턴과 일치하는 문자열을 반환합니다.  | 
|  구분자 사이 추출  |  **왼쪽 구분자(Left delimiter)**와 **오른쪽 구분자(Right delimiter)** 사이에 있는 모든 문자가 포함된 문자열을 반환합니다.  | 
|  위치에서 추출  |  입력 문자열의 **시작 위치(Start position)**에서 시작하여 시작 위치까지의 모든 문자에 **길이(Length)**를 더한 문자열을 반환합니다.  | 
|  하위 문자열 찾기 및 바꾸기  |  주어진 **패턴(Pattern)**(정규 표현식)과 일치하는 모든 항목이 **대체 문자열(Replacement string)**로 대체된 문자열을 반환합니다.  | 
|  구분자 사이 바꾸기  |  처음 나타나는 **왼쪽 구분자**와 마지막으로 나타나는 **오른쪽 구분자** 사이에 있는 하위 문자열이 **대체 문자열(Replacement string)**로 대체된 문자열을 반환합니다. 일치하는 결과가 없으면 대체되지 않습니다.  | 
|  위치에서 바꾸기  |  **시작 위치**와 **시작 위치** 더하기 **길이** 사이의 하위 문자열을 **대체 문자열**로 바꾼 문자열을 반환합니다. **시작 위치** 더하기 **길이**가 대체 문자열 길이보다 큰 경우, 출력에는**...** 가 포함됩니다.  | 
|  Regex를 누락으로 변환  |  유효하지 않은 경우 문자열을 `None`(으)로 변환하고 결과를 반환합니다. 유효성은 **패턴**의 정규 표현식으로 정의됩니다.  | 
|  구분자로 문자열 분할  |  입력 문자열에서 **구분자(Delimiter)**로 **최대 분할 횟수(Max number of splits)**까지 분할된 문자열 배열을 반환합니다(선택 사항). 구분자 기본값은 공백입니다.  | 

## 데이터 분할
<a name="data-wrangler-transform-split-data"></a>

**데이터 분할(Split data)** 변환으로 데이터세트를 2개 또는 3개로 분할할 수 있습니다. 예를 들어, 사용자는 데이터세트를 모델 훈련 시 사용되는 데이터세트와 모델 테스트 시 사용되는 데이터세트로 분할할 수 있습니다. 사용자는 각 분할에 포함되는 데이터세트 비율을 결정할 수 있습니다. 예를 들어, 하나의 데이터세트를 두 개로 분할하는 경우, 훈련 데이터세트는 데이터의 80%를, 테스트 데이터세트는 20%를 차지할 수 있습니다.

데이터를 세 개의 데이터세트로 분할하면 훈련, 검증, 테스트 데이터세트를 만들 수 있습니다. 대상 열을 삭제하면 테스트 데이터세트에서 모델이 얼마나 잘 작동하는지 확인할 수 있습니다.

사용 사례에 따라 개별 데이터세트가 가져오는 원본 데이터세트의 양과 데이터 분할 메서드가 결정됩니다. 예를 들어, 계층화 분할을 적용하면 대상 열의 관측 분포가 데이터세트 간에 동일한지 확인할 수 있습니다. 사용자는 다음과 같은 분할 변환을 사용할 수 있습니다.
+ 무작위 분할 - 원본 데이터세트를 무작위의 겹치지 않는 샘플로 분할, 대규모 데이터세트인 경우, 무작위 분할을 적용하면 순차 분할보다 컴퓨팅 비용이 많이 들고 시간이 더 오래 걸릴 수 있습니다.
+ 순차 분할 - 순차적 관측 순서를 기준으로 데이터세트 분할. 예를 들어, 80/20 훈련-테스트 분할의 경우, 데이터세트의 80%를 구성하는 첫 번째 관측치가 훈련 데이터세트로 이동합니다. 나머지 20%는 테스트 데이터세트로 이동합니다. 순차 분할은 분할 사이에 데이터의 기존 순서를 유지하는 데 효과적입니다.
+ 계층화 분할 - 데이터세트를 분할하여 입력 열의 관측 수를 비례적으로 표현. 관측치 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3이 있는 입력 열의 경우 열을 80/20으로 분할하면 1의 약 80%, 2의 80%, 3의 80% 가 훈련 세트로 이동합니다. 각 유형의 약 20%가 테스트 세트에 사용됩니다.
+ 키 기준 분할 - 동일한 키를 가진 데이터가 두 번 이상 분할되는 일을 방지. 예를 들어, 'customer\$1id' 열이 있는 데이터세트가 있고 이것을 키로 사용하는 경우, 고객 ID는 두 번 이상 분할되지 않습니다.

데이터 분할 후 사용자는 각 데이터세트에 추가 변환을 적용할 수 있습니다. 대부분의 사용 사례에서는 필수가 아닙니다.

Data Wrangler는 성능에 따른 분할 비율을 계산합니다. 사용자는 오류 임곗값을 선택하여 분할 정확도를 설정할 수 있습니다. 오류 임곗값이 낮을수록 분할 시 지정된 비율이 더 정확하게 반영됩니다. 오류 임곗값을 높게 설정하면 성능은 향상되지만 정확도는 낮아집니다.

데이터를 완벽하게 분할하려면 오류 임곗값을 0으로 설정합니다. 성능을 높이려면 사용자는 임곗값을 0에서 1 사이로 지정합니다. 1보다 큰 값을 지정하는 경우, Data Wrangler는 이 값을 1로 해석합니다.

데이터세트에 10000개의 행이 있고 오차가 0.001인 80/20 분할을 지정하면 다음 결과 중 하나에 근사한 관측치를 얻을 수 있습니다.
+ 훈련 세트 관측치 8010개, 테스트 세트 관측치 1990개
+ 훈련 세트 관측치 7990개, 테스트 세트 관측치 2010개

이전 예제에서 테스트 세트의 관측치 수는 8010에서 7990 사이입니다.

기본적으로 Data Wrangler는 무작위 시드로 재현 가능한 분할을 실시합니다. 사용자는 시드를 다른 값으로 지정하여 재현 가능한 다른 분할을 생성할 수 있습니다.

------
#### [ Randomized split ]

다음 절차에 따라 데이터세트에서 무작위 분할을 수행합니다.

데이터세트의 무작위 분할 방법은 다음과 같습니다.

1. 분할하려는 데이터 세트를 포함하는 노드 옆에서 **\$1**를 선택합니다.

1. **변환 추가(Add transform)**를 선택합니다.

1. **데이터 분할(Split data)**을 선택합니다.

1. (선택 사항) **분할(Split)**에서 개별 분할의 이름과 비율을 지정합니다. 비율의 합은 1이어야 합니다.

1. (선택 사항) **\$1**를 선택하여 추가 분할을 생성합니다.

   1. 모든 분할의 이름과 비율을 지정합니다. 비율의 합은 1이어야 합니다.

1. (선택 사항) **오류 임곗값(Error threshold)**을 가본값이 아닌 값으로 지정합니다.

1. (선택 사항) **무작위 시드(Random seed)** 값을 지정합니다.

1. **Preview**(미리 보기)를 선택합니다.

1. **추가**를 선택합니다.

------
#### [ Ordered split ]

다음 절차에 따라 데이터세트에서 순차 분할을 수행합니다.

데이터세트의 순차 분할 방법은 다음과 같습니다.

1. 분할하려는 데이터 세트를 포함하는 노드 옆에서 **\$1**를 선택합니다.

1. **변환 추가(Add transform)**를 선택합니다.

1. **변환(Transform)**에서 **순차 분할(Ordered split)**을 선택합니다.

1. **데이터 분할(Split data)**을 선택합니다.

1. (선택 사항) **분할(Split)**에서 개별 분할의 이름과 비율을 지정합니다. 비율의 합은 1이어야 합니다.

1. (선택 사항) **\$1**를 선택하여 추가 분할을 생성합니다.

   1. 모든 분할의 이름과 비율을 지정합니다. 비율의 합은 1이어야 합니다.

1. (선택 사항) **오류 임곗값(Error threshold)**을 가본값이 아닌 값으로 지정합니다.

1. (선택 사항) **입력 열(Input column)**에 숫자 값이 있는 열을 지정합니다. 열 값으로 각 분할에 포함된 레코드를 유추합니다. 작은 값이 한 분할에 포함되고 큰 값이 다른 분할에 포함됩니다.

1. (선택 사항) **중복 처리(Handle duplicates)**를 선택하여 중복된 값에 노이즈를 추가하고 완전히 고유한 값으로 구성된 데이터세트를 생성합니다.

1. (선택 사항) **무작위 시드(Random seed)** 값을 지정합니다.

1. **Preview**(미리 보기)를 선택합니다.

1. **추가**를 선택합니다.

------
#### [ Stratified split ]

다음 절차에 따라 데이터세트에서 계층화 분할을 수행합니다.

데이터세트의 계층화 분할 방법은 다음과 같습니다.

1. 분할하려는 데이터 세트를 포함하는 노드 옆에서 **\$1**를 선택합니다.

1. **변환 추가(Add transform)**를 선택합니다.

1. **데이터 분할(Split data)**을 선택합니다.

1. **변환(Transform)**에서 **계층화 분할(Stratified split)**을 선택합니다.

1. (선택 사항) **분할(Split)**에서 개별 분할의 이름과 비율을 지정합니다. 비율의 합은 1이어야 합니다.

1. (선택 사항) **\$1**를 선택하여 추가 분할을 생성합니다.

   1. 모든 분할의 이름과 비율을 지정합니다. 비율의 합은 1이어야 합니다.

1. **입력 열(Input column)** 최대 100개의 고유 값이 있는 열을 지정합니다. Data Wrangler는 100개가 넘는 고유 값이 있는 열을 계층화할 수 없습니다.

1. (선택 사항) **오류 임곗값(Error threshold)**을 가본값이 아닌 값으로 지정합니다.

1. (선택 사항) **무작위 시드(Random seed)** 값을 다른 시드로 지정합니다.

1. **Preview**(미리 보기)를 선택합니다.

1. **추가**를 선택합니다.

------
#### [ Split by column keys ]

다음 절차에 따라 데이터세트에서 열 키 기준 분할을 수행합니다.

데이터세트의 열 키 기준 분할 방법은 다음과 같습니다.

1. 분할하려는 데이터세트를 포함하는 노드 옆에서 **\$1**를 선택합니다.

1. **변환 추가(Add transform)**를 선택합니다.

1. **데이터 분할(Split data)**을 선택합니다.

1. **변환(Transform)**에서 **키 기준 분할(Split by key)**을 선택합니다.

1. (선택 사항) **분할(Split)**에서 개별 분할의 이름과 비율을 지정합니다. 비율의 합은 1이어야 합니다.

1. (선택 사항) **\$1**를 선택하여 추가 분할을 생성합니다.

   1. 모든 분할의 이름과 비율을 지정합니다. 비율의 합은 1이어야 합니다.

1. **키 열(Key columns)**에 두 데이터세트에 모두 표시하고 싶지 않은 값이 있는 열을 지정합니다.

1. (선택 사항) **오류 임곗값(Error threshold)**을 가본값이 아닌 값으로 지정합니다.

1. **Preview**(미리 보기)를 선택합니다.

1. **추가**를 선택합니다.

------

## 값을 유형으로 구문 분석
<a name="data-wrangler-transform-cast-type"></a>

이 변환으로 열을 새 유형으로 캐스팅할 수 있습니다. 지원되는 Data Wrangler 데이터 유형은 다음과 같습니다.
+ Long
+ Float
+ 부울
+ DD-MM-YYYY(일-월-년) 형식의 날짜 
+ 문자열

## 문자열 검증
<a name="data-wrangler-transform-validate-string"></a>

**문자열 검증(Validate string)** 변환으로 텍스트 데이터 행이 지정된 조건을 충족함을 나타내는 새 열을 생성할 수 있습니다. 예를 들어, 사용자는 **문자열 검증** 변환으로 문자열에 소문자만 포함되어 있는지 확인할 수 있습니다. **문자열 검증**에서 지원되는 변환은 다음과 같습니다.

이 변환 그룹에는 다음과 같은 변환이 포함됩니다. 변환이 부울 값을 출력하는 경우, `True`은(는) `1`(으)로, `False`은(는) `0`(으)로 표시됩니다.


| 이름 | 함수 | 
| --- | --- | 
|  문자열 길이  |  문자열 길이가 지정된 길이와 같으면 `True`을 반환합니다. 그렇지 않은 경우 `False`를 반환합니다.  | 
|  다음으로 시작  |  문자열이 지정된 접두사로 시작되면 `True`을 반환합니다. 그렇지 않은 경우 `False`를 반환합니다.  | 
|  다음으로 끝남  |  문자열 길이가 지정된 길이와 같으면 `True`을 반환합니다. 그렇지 않은 경우 `False`를 반환합니다.  | 
|  영숫자임  |  문자열에 숫자와 문자만 포함된 경우 `True`을 반환합니다. 그렇지 않은 경우 `False`를 반환합니다.  | 
|  알파벳(문자)임  |  문자열에 문자만 포함된 경우 `True`을 반환합니다. 그렇지 않은 경우 `False`를 반환합니다.  | 
|  자릿수임  |  문자열에 자릿수만 포함된 경우 `True`을 반환합니다. 그렇지 않은 경우 `False`를 반환합니다.  | 
|  공란임  |  문자열에 숫자와 문자만 포함된 경우 `True`을 반환합니다. 그렇지 않은 경우 `False`를 반환합니다.  | 
|  제목임  |  문자열에 공백이 있으면 `True`을 반환합니다. 그렇지 않은 경우 `False`를 반환합니다.  | 
|  소문자임  |  문자열에 소문자만 포함된 경우 `True`을 반환합니다. 그렇지 않은 경우 `False`를 반환합니다.  | 
|  대문자임  |  문자열에 대문자만 포함된 경우 `True`을 반환합니다. 그렇지 않은 경우 `False`를 반환합니다.  | 
|  숫자임  |  문자열에 숫자만 포함된 경우 `True`을 반환합니다. 그렇지 않은 경우 `False`를 반환합니다.  | 
|  소수임  |  문자열에 소수만 포함된 경우 `True`을 반환합니다. 그렇지 않은 경우 `False`를 반환합니다.  | 

## JSON 데이터 중첩 해제
<a name="data-wrangler-transform-flatten-column"></a>

.csv 파일이 있는 경우, 데이터세트에 JSON 문자열 값이 있을 수 있습니다. 마찬가지로, Parquet 파일 또는 JSON 문서 열에 데이터가 중첩되어 있을 수 있습니다.

**구조화 평탄화(Flatten structured)** 연산자로 1단계 키를 별도 열로 분리할 수 있습니다. 1단계 키는 값 내에 중첩되지 않은 키입니다.

예를 들어, 개인의 신상정보가 JSON 문자열로 저장된 *person* 열이 있는 데이터세트가 있을 수 있습니다. 이 때 JSON 문자열의 모양은 다음과 같습니다.

```
 "{"seq": 1,"name": {"first": "Nathaniel","last": "Ferguson"},"age": 59,"city": "Posbotno","state": "WV"}"
```

**구조화 평탄화(Flatten structured)** 연산자는 다음과 같은 1단계 키를 데이터세트의 추가 열로 변환합니다.
+ seq
+ 이름
+ age
+ city
+ state

Data Wrangler는 키 값을 열 아래에 값으로 표시합니다. 다음은 JSON의 열 이름과 값입니다.

```
seq, name,                                    age, city, state
1, {"first": "Nathaniel","last": "Ferguson"}, 59, Posbotno, WV
```

**구조화 평탄화(Flatten structured)** 연산자는 JSON이 포함된 데이터세트의 각 값에 대해 1단계 키에 대한 열을 만듭니다. 중첩 키용 열을 생성하려면 연산자를 다시 호출합니다. 앞의 예제에서 연산자를 호출하면 다음과 같은 열이 생성됩니다.
+ name\$1first
+ name\$1last

다음 예제는 연산을 다시 호출한 결과 데이터세트입니다.

```
seq, name,                                    age, city, state, name_first, name_last
1, {"first": "Nathaniel","last": "Ferguson"}, 59, Posbotno, WV, Nathaniel, Ferguson
```

**평탄화할 키(Keys to flatten on)**를 선택하여 추출하고자 하는 1단계 키를 별도 열로 지정합니다. 키를 지정하지 않으면 Data Wrangler에서는 기본적으로 모든 키를 추출합니다.

## 배열 분해
<a name="data-wrangler-transform-explode-array"></a>

**배열 분해(Explode array)**로 배열 값을 별도의 출력 행으로 확장할 수 있습니다. 예를 들어, 연산을 통해 배열의 각 값 [[1, 2, 3,], [4, 5, 6], [7, 8, 9]]를 가져와 다음 행으로 구성된 새 열을 생성할 수 있습니다.

```
                [1, 2, 3]
                [4, 5, 6]
                [7, 8, 9]
```

Data Wrangler는 새 열의 이름을 input\$1column\$1name\$1flatten으로 지정합니다.

사용자는 **배열 분해** 연산을 여러 번 호출하여 중첩된 값을 별도의 출력 열로 가져올 수 있습니다. 다음 예제에서 중첩된 배열이 있는 데이터세트에서 작업을 여러 번 호출한 결과를 볼 수 있습니다.

중첩 배열 값을 별도 열에 넣기


| id | 배열 | id | array\$1items | id | array\$1items\$1items | 
| --- | --- | --- | --- | --- | --- | 
| 1 | [ [cat, dog], [bat, frog] ] | 1 | [cat, dog] | 1 | cat | 
| 2 |  [[rose, petunia], [lily, daisy]]  | 1 | [bat, frog] | 1 | dog | 
|  |  | 2 | [rose, petunia] | 1 | bat | 
|  |  | 2 | [lily, daisy] | 1 | frog | 
|  |  |  | 2 | 2 | rose | 
|  |  |  | 2 | 2 | petunia | 
|  |  |  | 2 | 2 | lily | 
|  |  |  | 2 | 2 | daisy | 

## 이미지 데이터 변환
<a name="data-wrangler-transform-image"></a>

Data Wrangler로 머신러닝(ML) 파이프라인에서 사용 중인 이미지를 가져오고 변환할 수 있습니다. 이미지 데이터를 준비한 후 사용자는 Data Wrangler 흐름에서 ML 파이프라인으로 내보낼 수 있습니다.

사용자는 여기에 있는 정보로 Data Wrangler에서 이미지 데이터를 가져오고 변환하는 방법을 익힐 수 있습니다. Data Wrangler는 OpenCV를 사용하여 이미지를 가져옵니다. 지원되는 이미지 형식에 대한 추가 정보는 [이미지 파일 읽기 및 쓰기](https://docs.opencv.org/3.4/d4/da8/group__imgcodecs.html#ga288b8b3da0892bd651fce07b3bbd3a56)에서 확인하세요.

이미지 데이터 변환의 개념을 숙지한 후에는 [Amazon SageMaker Data Wrangler로 이미지 데이터 준비](https://aws.amazon.com/blogs/machine-learning/prepare-image-data-with-amazon-sagemaker-data-wrangler/) 자습서를 살펴보세요.

다음 산업 및 사용 사례는 변환된 이미지 데이터에 머신러닝을 적용하는 것이 유용할 수 있는 예제입니다.
+ 제조 - 조립 라인 품목의 하자 식별
+ 식품 - 상하거나 썩은 식품 식별
+ 의학 - 조직 내 병변 식별

Data Wrangler에서 이미지 데이터로 작업할 때는 다음 프로세스를 거칩니다.

1. 가져오기 - Amazon S3 버킷에서 이미지가 포함된 디렉터리를 선택하여 이미지를 선택합니다.

1. 변환 - 내장 변환으로 머신러닝 파이프라인에서 사용할 이미지를 준비합니다.

1. 내보내기 - 변환한 이미지를 파이프라인에서 액세스할 수 있는 위치로 내보냅니다.

다음 절차에 따라 이미지 데이터를 가져옵니다.

**이미지 데이터를 가져오려면**

1. **연결 생성(Create connection)** 페이지로 이동합니다.

1. **Amazon S3**를 선택합니다.

1. 이미지 데이터가 포함된 Amazon S3 파일 경로를 지정합니다.

1. **파일 유형(File type)**에서 **이미지(Image)**를 선택합니다.

1. (선택 사항) **중첩된 디렉터리 가져오기(Import nested directories)**를 선택하여 여러 Amazon S3 경로에서 이미지를 가져옵니다.

1. **가져오기**를 선택합니다.

Data Wrangler는 내장 이미지 변환 시 오픈 소스 [imgaug](https://imgaug.readthedocs.io/en/latest/) 라이브러리를 사용합니다. 사용자는 다음과 같은 내장 변환을 사용할 수 있습니다.
+ **ResizeImage**
+ **EnhanceImage**
+ **CorruptImage**
+ **SplitImage**
+ **DropCorruptedImages**
+ **DropImageDuplicates**
+ **Brightness(밝기)**
+ **ColorChannels**
+ **Grayscale**
+ **Rotate**

다음 절차에 따라 코드 작성 없이 이미지를 변환합니다.

**코드를 작성하지 않고 이미지 데이터를 변환하려면**

1. Data Wrangler 흐름에서 가져온 이미지를 나타내는 노드 옆의 **\$1**를 선택합니다.

1. **변환 추가(Add transform)**를 선택합니다.

1. **단계 추가(Add step)**를 선택합니다.

1. 변환을 선택하고 구성합니다.

1. **Preview**(미리 보기)를 선택합니다.

1. **추가**를 선택합니다.

Data Wrangler에서 제공하는 변환을 사용하는 것 외에도 사용자는 자체 사용자 지정 코드 조각을 사용할 수도 있습니다. 사용자 지정 코드 조각에 대한 추가 정보는 [사용자 지정 변환](#data-wrangler-transform-custom) 섹션을 참조하세요. 사용자는 코드 조각에서 OpenCV 및 imgaug 라이브러리를 가져오고 이와 관련된 변환을 사용할 수 있습니다. 다음은 이미지의 가장자리를 감지하는 코드 조각의 예제입니다.

```
# A table with your image data is stored in the `df` variable
import cv2
import numpy as np
from pyspark.sql.functions import column

from sagemaker_dataprep.compute.operators.transforms.image.constants import DEFAULT_IMAGE_COLUMN, IMAGE_COLUMN_TYPE
from sagemaker_dataprep.compute.operators.transforms.image.decorators import BasicImageOperationDecorator, PandasUDFOperationDecorator


@BasicImageOperationDecorator
def my_transform(image: np.ndarray) -> np.ndarray:
  # To use the code snippet on your image data, modify the following lines within the function
    HYST_THRLD_1, HYST_THRLD_2 = 100, 200
    edges = cv2.Canny(image,HYST_THRLD_1,HYST_THRLD_2)
    return edges
    

@PandasUDFOperationDecorator(IMAGE_COLUMN_TYPE)
def custom_image_udf(image_row):
    return my_transform(image_row)
    

df = df.withColumn(DEFAULT_IMAGE_COLUMN, custom_image_udf(column(DEFAULT_IMAGE_COLUMN)))
```

Data Wrangler 흐름에서 변환을 적용할 때 Data Wrangler는 데이터세트의 이미지 샘플에만 변환을 적용합니다. 애플리케이션 사용 환경을 최적화하기 위해 Data Wrangler는 모든 이미지에 변환을 적용하지 않습니다.

모든 이미지에 변환을 적용하려면 Data Wrangler 흐름을 Amazon S3 위치로 내보냅니다. 사용자는 내보낸 이미지를 훈련 또는 추론 파이프라인에서 사용할 수 있습니다. 대상 노드 또는 Jupyter notebook을 사용하여 데이터를 내보냅니다. 사용자는 Data Wrangler 흐름에서 두 가지 중 한 가지 방법으로 데이터를 내보낼 수 있습니다. 메서드 사용에 대한 자세한 정보는 [Amazon S3로 내보내기](data-wrangler-data-export.md#data-wrangler-data-export-s3) 섹션을 참조하세요.

## 데이터 필터링
<a name="data-wrangler-transform-filter-data"></a>

Data Wrangler로 열의 데이터를 필터링합니다. 열의 데이터를 필터링할 때는 다음 필드를 지정합니다.
+ **열 이름(Column name)** - 데이터 필터링 시 사용하는 열 이름.
+ **조건(Condition)** - 열 값에 적용하는 필터 유형.
+ **값(Value)** - 필터를 적용하는 열의 값 또는 범주.

사용자는 다음 조건에 따라 필터링할 수 있습니다.
+ **=** - 지정한 값 또는 범주와 일치하는 값 반환.
+ **\$1=** - 지정한 값 또는 범주와 일치하지 않는 값 반환.
+ **>=** - **Long** 또는 **Float** 데이터의 경우, 지정한 값보다 크거나 같은 값 필터링.
+ **<=** - **Long** 또는 **Float** 데이터의 경우, 지정한 값보다 작거나 같은 값 필터링.
+ **>** - **Long** 또는 **Float** 데이터의 경우, 지정한 값보다 큰 값 필터링.
+ **<** - **Long** 또는 **Float** 데이터의 경우, 지정한 값보다 작은 값 필터링.

`male` 및 `female` 범주가 있는 열에서는 사용자는 모든 `male` 값을 필터링할 수 있습니다. 모든 `female` 값을 필터링할 수도 있습니다. 열에 `male` 및 `female` 값만 있기 때문에 필터는 `female` 값만 있는 열을 반환합니다.

또한 여러 필터를 추가할 수 있습니다. 필터는 여러 열 또는 동일한 열에 적용할 수 있습니다. 예를 들어, 특정 범위 내의 값만 있는 열을 만들려면 두 개의 다른 필터를 추가합니다. 한 필터는 열에 입력한 값보다 큰 값이 있어야 하도록 지정합니다. 다른 필터는 열에 입력한 값보다 작은 값이 있어야 하도록 지정합니다.

다음 절차에 따라 데이터에 필터 변환을 추가합니다.

**데이터를 필터링하려면 다음과 같이 하세요.**

1. Data Wrangler 흐름에서 필터링하려는 데이터가 있는 노드 옆에 있는 **\$1**를 선택합니다.

1. **변환 추가(Add transform)**를 선택합니다.

1. **단계 추가(Add step)**를 선택합니다.

1. **데이터 필터링(Filter data)**을 선택합니다.

1. 다음 필드를 지정합니다.
   + **열 이름(Column name)** - 필터링하는 열.
   + **조건(Condition)** - 필터링 조건.
   + **값(Value)** - 필터를 적용하는 열의 값 또는 범주.

1. (선택 사항) 생성한 필터에 따라 **\$1**를 선택합니다.

1. 필터를 구성합니다.

1. **Preview**(미리 보기)를 선택합니다.

1. **추가**를 선택합니다.

## Amazon Personalize용 행 매핑
<a name="data-wrangler-transform-personalize"></a>

Data Wrangler는 항목 추천과 사용자 세그먼트를 생성하는 완전 관리형 머신러닝 서비스 Amazon Personalize와 통합됩니다. 사용자는 **Amazon Personalize용 행 매핑(Map columns for Amazon Personalize)** 변환으로 Amazon Personalize가 해석할 수 있는 형식으로 데이터를 가져올 수 있습니다. Amazon Personalize 관련 변환에 대한 추가 정보는 [Amazon SageMaker Data Wrangler로 이미지 가져오기](https://docs.aws.amazon.com/personalize/latest/dg/preparing-importing-with-data-wrangler.html#dw-transform-data)에서 확인하세요. Amazon Personalize에 대한 추가 정보는 [Amazon Personalize가 무엇인가요?](https://docs.aws.amazon.com/personalize/latest/dg/what-is-personalize.html)를 참조하세요.

# 분석 및 시각화
<a name="data-wrangler-analyses"></a>

Amazon SageMaker Data Wrangler에는 클릭 몇 번으로 시각화 및 데이터 분석을 생성하는 데 도움이 되는 분석 기능이 내장되어 있습니다. 자체 코드를 사용하여 사용자 지정 분석을 만들 수도 있습니다.

데이터 흐름에서 단계를 선택한 다음 **분석 추가**를 선택하여 데이터프레임에 분석을 추가할 수 있습니다. 생성한 분석에 액세스하려면 분석이 포함된 단계를 선택하고 분석을 선택합니다.

모든 분석은 데이터세트의 100,000개 행을 사용하여 생성됩니다.

데이터 프레임에 다음 분석을 추가할 수 있습니다.
+ 히스토그램 및 산점도를 포함한 데이터 시각화.
+ 항목 수, 최소값 및 최대값 (숫자 데이터용), 빈도가 가장 높은 범주와 가장 빈도가 낮은 범주(범주형 데이터용)를 포함하는 데이터세트의 간략한 요약.
+ 각 특징에 대한 중요도 점수를 생성하는 데 사용할 수 있는 데이터세트의 빠른 모델.
+ 대상 누출 보고서. 이는 하나 이상의 특징이 대상 특징과 강한 상관관계가 있는지 확인하는 데 사용할 수 있습니다.
+ 자체 코드를 사용한 사용자 지정 시각화.

다음 섹션을 통해 이런 옵션에 대해 자세히 알아보세요.

## 히스토그램(Histogram)
<a name="data-wrangler-visualize-histogram"></a>

히스토그램을 사용하면 각 특징의 특징 값 수를 확인할 수 있습니다. 사용자는 **색상 기준** 옵션을 사용하여 기능 간의 관계를 검사할 수 있습니다. 예를 들어, 다음 히스토그램은 2009년부터 2019년까지 Amazon에서 가장 많이 팔린 도서의 사용자 평점 분포를 장르별로 채색하여 차트로 보여줍니다.

![\[Data Wrangler 콘솔의 히스토그램 차트 예시입니다.\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/images/studio/mohave/histogram.png)


사용자는 **패싯** 기능을 사용하여 다른 열의 각 값에 대해 한 열의 히스토그램을 생성할 수 있습니다. 예를 들어, 다음 다이어그램은 Amazon에서 가장 많이 팔린 도서에 대한 사용자 리뷰 히스토그램을 연도별로 나누어 보여줍니다.

![\[Data Wrangler 콘솔의 히스토그램 예시입니다.\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/images/studio/mohave/review_by_year.png)


## 산점도
<a name="data-wrangler-visualize-scatter-plot"></a>

**산점도** 기능을 사용하여 특징 간의 관계를 검사할 수 있습니다. 산점도를 만들려면 **X축**과 **Y축**에 플롯할 기능을 선택합니다. 이 두 열 모두 숫자 형식의 열이어야 합니다.

추가 열을 기준으로 산점도에 색을 지정할 수 있습니다. 예를 들어, 다음 예제는 2009년과 2019년 사이에 Amazon에서 가장 많이 팔린 도서의 리뷰 수와 사용자 평점을 비교한 산점도를 보여줍니다. 산점도는 책 장르별로 색이 지정되어 있습니다.

![\[Data Wrangler 콘솔의 산점도 예시입니다.\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/images/studio/mohave/scatter-plot.png)


또한 특징별로 산점도를 패싯할 수 있습니다. 예를 들어, 다음 이미지는 동일한 리뷰와 사용자 평점을 비교한 산점도를 연도별로 나누어 보여주는 예입니다.

![\[Data Wrangler 콘솔의 패싯 산점도 예시입니다.\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/images/studio/mohave/scatter-plot-facet.png)


## 표 요약
<a name="data-wrangler-table-summary"></a>

**표 요약** 분석을 사용하면 데이터를 빠르게 요약할 수 있습니다.

로그 및 부동 데이터를 비롯한 수치 데이터가 있는 열의 경우 표 요약에 각 열의 항목 수(개수), 최소값(최소), 최대값(최대), 평균, 표준편차(stddev)가 표시됩니다.

문자열, 부울 또는 날짜/시간 데이터가 있는 열을 포함하는 숫자가 아닌 데이터가 있는 열의 경우 표 요약에는 항목 수(개수), 가장 빈도가 낮은 값(최소), 가장 빈도가 높은 값(최대)이 보고됩니다.

## 빠른 모델
<a name="data-wrangler-quick-model"></a>

**빠른 모델** 시각화를 사용하여 데이터를 빠르게 평가하고 각 특징에 대한 중요도 점수를 산출할 수 있습니다. [기능 중요도 점수](http://spark.apache.org/docs/2.1.0/api/python/pyspark.ml.html#pyspark.ml.classification.DecisionTreeClassificationModel.featureImportances)는 기능이 대상 레이블을 예측하는 데 얼마나 유용한지를 나타냅니다. 기능 중요도 점수는 [0, 1] 사이이며 숫자가 높을수록 해당 특징이 전체 데이터세트에서 더 중요하다는 것을 나타냅니다. 빠른 모델 차트의 상단에는 모델 점수가 있습니다. 분류 문제는 F1 점수를 나타냅니다. 회귀 문제에는 평균제곱오차(MSE) 점수가 있습니다.

빠른 모형 차트를 만들 때는 평가할 데이터세트와 기능 중요도를 비교할 대상 레이블을 선택합니다. Data Wrangler는 다음을 수행합니다.
+ 선택한 데이터세트의 대상 레이블 및 각 특징에 대한 데이터 형식을 유추합니다.
+ 문제 유형을 결정합니다. Data Wrangler는 레이블 열에 있는 고유 값의 수를 기반으로 이것이 회귀 문제 유형인지 분류 문제인지 판단합니다. Data Wrangler는 범주형 임곗값을 100으로 설정합니다. 레이블 열에 100개가 넘는 고유 값이 있는 경우 Data Wrangler는 이를 회귀 문제로 분류하고 그렇지 않으면 분류 문제로 분류합니다.
+ 훈련을 위해 특징 및 레이블 데이터를 사전 처리합니다. 알고리즘을 사용하려면 특징을 vector 유형으로 인코딩하고 레이블을 double 유형으로 인코딩해야 합니다.
+ 데이터의 70%를 사용하여 랜덤 포레스트(random forest) 알고리즘을 훈련시킵니다. Spark의 [RandomForestRegressor](https://spark.apache.org/docs/latest/ml-classification-regression.html#random-forest-regression)는 회귀 문제에 대한 모델을 훈련시키는 데 사용됩니다. [RandomForestRegressor](https://spark.apache.org/docs/latest/ml-classification-regression.html#random-forest-classifier)는 분류 문제에 대한 모델을 훈련시키는 데 사용됩니다.
+ 나머지 30% 의 데이터로 랜덤 포레스트 모델을 평가합니다. Data Wrangler는 F1 점수를 사용하여 분류 모델을 평가하고 MSE 점수를 사용하여 회귀 모델을 평가합니다.
+ Gini(지니) 중요도 방법을 사용하여 각 기능의 기능 중요도를 계산합니다.

다음 이미지는 빠른 모델 기능의 사용자 인터페이스를 보여줍니다.

![\[Data Wrangler 콘솔에서 빠른 모델 기능의 UI 예시입니다.\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/images/studio/mohave/quick-model.png)


## 대상 누출
<a name="data-wrangler-analysis-target-leakage"></a>

대상 누출은 기계 학습 훈련 데이터세트에 대상 레이블과 강한 상관 관계가 있지만 실제 데이터에서는 사용할 수 없는 데이터가 있을 때 발생합니다. 예를 들어 모델을 사용하여 예측하려는 열의 프록시 역할을 하는 열이 데이터세트에 있을 수 있습니다.

**대상 누출** 분석을 사용할 때는 다음을 지정합니다.
+ **대상**: ML 모델이 예측을 하려는 특징입니다.
+ **문제 유형**: 작업 중인 ML 문제 유형입니다. 문제 유형은 **분류** 또는 **회귀**일 수 있습니다.
+  (선택 사항) **최대 기능**: 시각화에 표시할 수 있는 최대 특징 수로, 특징을 대상 누출 위험을 기준으로 순위를 매겨 보여줍니다.

분류의 경우, 대상 누출 분석은 수신기 작동 특성 아래 영역 또는, 최고 **최대 특성**까지, 각 열에 대한 AUC-ROC 곡선을 사용합니다. 회귀 분석의 경우, 이는 결정 계수 또는 R2 지표를 사용합니다.

AUC - ROC 곡선은 최대 약 1000개 행의 표본에 대해 교차 검증을 사용하여 각 열에 대해 개별적으로 계산된 예측 지표를 제공합니다. 1점은 완벽한 예측 능력을 나타내며, 이는 종종 대상 누출을 나타냅니다. 점수가 0.5점 이하이면 열의 정보 자체로는 대상 예측에 유용한 정보를 제공하지 못함을 나타냅니다. 열 자체로는 정보를 제공하지 않지만 다른 기능과 함께 사용할 경우 대상을 예측하는 데 유용할 수 있지만 점수가 낮으면 기능이 중복되었음을 의미할 수 있습니다.

예를 들어, 다음 이미지는 당뇨병 분류 문제, 즉 사람이 당뇨병을 가지고 있는지의 여부 예측에 대한 대상 누출 보고서를 보여줍니다. AUC-ROC 곡선은 5가지 특징의 예측 능력을 계산하는 데 사용되며, 모두 대상 누 출로부터 안전한 것으로 확인됩니다.

![\[Data Wrangler 콘솔의 대상 누출 보고서의 예시입니다.\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/images/studio/mohave/target-leakage.png)


## 다중 공선성
<a name="data-wrangler-multicollinearity"></a>

다중 공선성(Multicollinearity)은 두 개 이상의 예측 변수가 서로 관련되어 있는 상황입니다. 예측 변수는 대상 변수를 예측하는 데 사용하는 데이터세트의 특징입니다. 다중 공선성이 있는 경우 예측 변수는 대상 변수를 예측할 뿐만 아니라 서로를 예측할 수도 있습니다.

**분산 확대 지수**, **주성분 분석(Principal Component Analysis, PCA)** 또는 **올가미 기능 선택(Lasso feature selection)**을 데이터의 다중 공선성에 대한 측정값으로 사용할 수 있습니다. 추가 정보는 다음을 참조하세요.

------
#### [ Variance Inflation Factor (VIF) ]

분산 확대 지수(VIF)는 변수 쌍 간의 공선성을 측정한 것입니다. Data Wrangler는 변수가 서로 얼마나 밀접하게 관련되어 있는지를 나타내는 척도로 VIF 점수를 반환합니다. VIF 점수는 1보다 크거나 같은 양수입니다.

점수가 1이면 변수가 다른 변수와 상관관계가 없음을 의미합니다. 점수가 1보다 크면 상관관계가 높음을 나타냅니다.

이론적으로 VIF 점수는 무한대일 수 있습니다. Data Wrangler는 50점을 최고 점수로 사용합니다. VIF 점수가 50점을 초과하는 경우 Data Wrangler는 점수를 50으로 설정합니다.

다음 지침을 사용하여 VIF 점수를 해석할 수 있습니다.
+ VIF 점수가 5보다 작거나 같으면 변수가 다른 변수와 중간 정도의 상관관계가 있음을 나타냅니다.
+ VIF 점수가 5보다 크거나 같으면 변수가 다른 변수와 높은 상관관계가 있음을 나타냅니다.

------
#### [ Principle Component Analysis (PCA) ]

주성분 분석(PCA)은 특징 공간의 여러 방향에 따른 데이터의 분산을 측정합니다. 특징 공간은 데이터세트의 대상 변수를 예측하는 데 사용하는 모든 예측 변수로 구성됩니다.

예를 들어 타이타닉호가 빙산에 부딪힌 후 누가 살아남았는지 예측하려는 경우 특징 공간에 승객의 연령, 성별, 지불한 요금이 포함될 수 있습니다.**

PCA는 특징 공간에서 정렬된 분산 목록을 생성합니다. 이러한 분산을 특이값(singular value)이라고도 합니다. 분산 목록의 값은 0보다 크거나 같습니다. 이 값을 사용하여 데이터에 다중 공선성이 얼마나 있는지 확인할 수 있습니다.

숫자가 거의 균일한 경우 데이터는 다중 공선성이 거의 없습니다. 값 간에 변동성이 많으면 다중 공선성이 나타나는 경우가 많습니다. Data Wrangler는 PCA를 수행하기 전에 각 특성을 평균이 0이고 표준편차가 1이 되도록 정규화합니다.

**참고**  
이 상황에서의 PCA는 특이값 분해(Singular Value Decomposition, SVD)라고도 합니다.

------
#### [ Lasso feature selection ]

올가미 특징 선택은 L1 정규화 기법을 사용하여 데이터세트에 가장 예측 가능한 특징만 포함합니다.

분류와 회귀 분석 모두에서 정규화 기법은 각 특징에 대한 계수를 생성합니다. 계수의 절대값은 특징에 대한 중요도 점수를 제공합니다. 중요도 점수가 높을수록 대상 변수를 더 잘 예측할 수 있음을 의미입니다. 일반적인 특징 선택 방법은 올가미 계수가 0이 아닌 모든 특징을 사용하는 것입니다.

------

## 시계열 데이터에서 이상 항목 탐지
<a name="data-wrangler-time-series-anomaly-detection"></a>

이상 탐지 시각화를 사용하여 시계열 데이터의 이상치를 확인할 수 있습니다. 이상을 결정하는 요인을 이해하려면 시계열을 예측 항과 오차 항으로 분해한다는 점을 이해해야 합니다. 시계열의 계절성과 추세를 예측 항으로 취급합니다. 잔차(residual)를 오차항으로 취급합니다.

오차 항의 경우 임곗값을 표준 편차의 배수로 지정하면, 잔차가 평균에서 멀어질 때 이상으로 간주될 수 있습니다. 예를 들어, 임곗값을 표준편차의 3배로 지정할 수 있습니다. 평균에서 표준 편차의 3배보다 더 큰 잔차는 이상입니다.

다음 절차를 사용하여 **이상 탐지** 분석을 수행할 수 있습니다.

1. Data Wrangler 데이터 흐름을 엽니다.

1. 데이터 흐름의 **데이터 형식**에서 **\$1**를 선택하고 **분석 추가**를 선택합니다.

1. **분석 유형**에서 **시계열**을 선택합니다.

1. **시각화**에서는 **이상 탐지**를 선택합니다.

1. **이상 임곗값**에서 예외로 간주하는 임곗값을 선택합니다.

1. **미리 보기**를 선택하여 분석 미리 보기를 생성합니다.

1. **추가**를 선택하여 Data Wrangler 데이터 흐름에 변환을 추가합니다.

## 시계열 데이터의 계절적 추세 분해
<a name="data-wrangler-seasonal-trend-decomposition"></a>

Seasonal Trend Decomposition(계절적 추세 분해) 시각화를 사용하여 시계열 데이터에 계절성이 있는지 여부를 확인할 수 있습니다. 분해는 STL(LOESS를 사용한 계절적 추세 분해) 방법을 사용합니다. 시계열은 계절 요소, 추세 요소, 잔차 요소로 분해됩니다. 추세 요소는 시리즈의 장기적 진행 상황을 반영합니다. 계절 요소는 일정 기간 동안 반복되는 신호입니다. 시계열에서 추세와 계절 요소를 제거하면 잔차가 남습니다.

다음 절차를 사용하여 **계절-추세 분해** 분석을 수행할 수 있습니다.

1. Data Wrangler 데이터 흐름을 엽니다.

1. 데이터 흐름의 **데이터 형식**에서 **\$1**를 선택하고 **분석 추가**를 선택합니다.

1. **분석 유형**에서 **시계열**을 선택합니다.

1. **시각화**에서는 **계절-추세 분해**를 선택합니다.

1. **이상 임곗값**에서 예외로 간주하는 임곗값을 선택합니다.

1. **미리 보기**를 선택하여 분석 미리 보기를 생성합니다.

1. **추가**를 선택하여 Data Wrangler 데이터 흐름에 변환을 추가합니다.

## 바이어스 리포트
<a name="data-wrangler-bias-report"></a>

Data Wrangler의 바이어스 보고서를 사용하여 데이터의 잠재적 편향을 찾아낼 수 있습니다. 바이어스 보고서를 생성하려면 예측하려는 대상 열(**레이블**)과 **패싯**(편향 여부를 검사할 열)을 지정해야 합니다.

**레이블**: 모델이 예측하는 데 사용하려는 특징. 예를 들어 고객 전환율을 예측하는 경우 고객의 주문 여부에 대한 데이터가 포함된 열을 선택할 수 있습니다. 또한 이 특징이 레이블인지 임곗값인지도 지정해야 합니다. 레이블을 지정하는 경우 먼저 데이터에서 긍정적인 결과가 어떤 것인지 지정해야 합니다.** 고객 전환 예제에서 긍정적인 결과는 주문 열에서 1이 될 수 있으며, 이는 지난 3개월 이내에 주문한 고객의 긍정적인 결과를 나타냅니다. 임곗값을 지정하는 경우 긍정적인 결과를 정의하는 하한을 지정해야 합니다. 예를 들어 고객 주문 열이 작년의 주문 수를 표시하는 경우 1을 지정하는 것이 좋습니다.

**패싯**: 편견이 있는지 검사하려는 열입니다. 예를 들어, 고객 전환율을 예측하려는 경우 고객 연령으로 패싯할 수 있습니다. 데이터가 특정 연령대에 편향되어 있다고 생각하기 때문에 이 패싯을 선택할 수 있습니다. 패싯을 값으로 측정할지 임곗값으로 측정할지를 식별해야 합니다. 예를 들어, 하나 이상의 특정 연령을 검사하려면 **값**을 선택하고 해당 연령을 지정합니다. 연령 그룹을 살펴보려면 **임곗값**을 선택하고 검사하려는 연령의 임곗값을 지정합니다.

특징과 레이블을 선택한 후 계산하려는 편향 지표의 유형을 선택합니다.

자세한 내용은 [훈련 전 데이터의 편향에 대한 보고서 생성](https://docs.aws.amazon.com/sagemaker/latest/dg/data-bias-reports.html)을 참조하세요.

## 사용자 지정 시각화 만들기
<a name="data-wrangler-visualize-custom"></a>

Data Wrangler 흐름에 분석을 추가하여 사용자 지정 시각화를 만들 수 있습니다. 적용한 모든 변환이 포함된 데이터세트는 [Pandas DataFrame](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.html)으로 제공됩니다. Data Wrangler는 `df` 변수를 사용하여 데이터프레임을 저장합니다. 변수를 호출하여 데이터프레임에 액세스할 수 있습니다.

[Altair](https://altair-viz.github.io/) 출력 차트를 `chart` 저장하려면 출력 변수 를 제공해야 합니다. 예를 들어, 다음 코드 블록을 사용하여 타이타닉 데이터세트에 대한 사용자 지정 히스토그램을 만들 수 있습니다.

```
import altair as alt
df = df.iloc[:30]
df = df.rename(columns={"Age": "value"})
df = df.assign(count=df.groupby('value').value.transform('count'))
df = df[["value", "count"]]
base = alt.Chart(df)
bar = base.mark_bar().encode(x=alt.X('value', bin=True, axis=None), y=alt.Y('count'))
rule = base.mark_rule(color='red').encode(
    x='mean(value):Q',
    size=alt.value(5))
chart = bar + rule
```

**사용자 지정 시각화를 만들려면:**

1. 시각화하려는 변환이 포함된 노드 옆의 **\$1**를 선택합니다.

1. **분석 추가**를 선택합니다.

1. **분석 유형**에서 **사용자 지정 시각화**를 선택합니다.

1. **분석 이름**에서 이름을 지정합니다.

1. 코드 상자에 코드를 입력합니다.

1. **미리보기**를 선택하여 시각화를 미리 볼 수 있습니다.

1. **저장**을 선택하여 시각화를 추가합니다.

![\[Data Wrangler 콘솔에서 시각화를 추가하는 방법의 예시입니다.\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/images/studio/mohave/custom-visualization.png)


Python의 Altair 시각화 패키지 사용법을 모르는 경우, 사용자 지정 코드 조각을 사용하면 시작 시 도움이 됩니다.

Data Wrangler에는 검색 가능한 시각화 코드 조각 모음이 있습니다. 시각화 코드 조각을 사용하려면, **예제 조각 검색**을 선택하고 검색 창에서 쿼리를 지정합니다.

다음 예제에서는 **Binned 산점도** 코드 조각을 사용합니다. 2차원에 대한 히스토그램을 플롯합니다.

코드 조각에는 코드를 변경할 때 필요한 사항을 파악하는 데 도움이 되는 주석이 있습니다. 일반적으로 코드에 데이터세트의 열 이름을 지정해야 합니다.

```
import altair as alt

# Specify the number of top rows for plotting
rows_number = 1000
df = df.head(rows_number)  
# You can also choose bottom rows or randomly sampled rows
# df = df.tail(rows_number)
# df = df.sample(rows_number)


chart = (
    alt.Chart(df)
    .mark_circle()
    .encode(
        # Specify the column names for binning and number of bins for X and Y axis
        x=alt.X("col1:Q", bin=alt.Bin(maxbins=20)),
        y=alt.Y("col2:Q", bin=alt.Bin(maxbins=20)),
        size="count()",
    )
)

# :Q specifies that label column has quantitative type.
# For more details on Altair typing refer to
# https://altair-viz.github.io/user_guide/encoding.html#encoding-data-types
```

# 다양한 데이터세트에 데이터 흐름 재사용
<a name="data-wrangler-parameterize"></a>

Amazon Simple Service (Amazon S3) 데이터 소스의 경우 사용자는 파라미터를 생성하고 사용할 수 있습니다. 파라미터는 Data Wrangler 흐름에 저장한 변수입니다. 이 값은 데이터 소스 Amazon S3 경로의 어떤 부분에도 들어갈 수 있습니다. 파라미터를 사용하여 Data Wrangler 흐름으로 가져오거나 처리 작업으로 내보내는 데이터를 빠르게 변경할 수 있습니다. 또한 사용자는 파라미터를 사용하여 데이터의 특정 하위 집합을 선택하고 가져올 수 있습니다.

Data Wrangler 흐름을 만든 후에는 변환한 데이터를 기반으로 모델을 훈련시켰을 수 있습니다. 스키마가 동일한 데이터세트의 경우 사용자는 파라미터를 사용하여 다른 데이터세트에 동일한 변환을 적용하고 다른 모델을 훈련시킬 수 있습니다. 사용자는 새 데이터세트를 사용하여 모델을 추론하거나, 새 데이터세트를 사용하여 모델을 재훈련시킬 수 있습니다.

일반적으로 파라미터의 속성은 다음과 같습니다.
+ 이름 - 파라미터에 지정하는 이름
+ 유형 - 파라미터가 나타내는 값의 유형
+ 기본값 - 새 값을 지정하지 않은 경우의 파라미터 값

**참고**  
날짜시간 파라미터에는 기본값으로 사용하는 시간 범위 속성이 있습니다.

Data Wrangler는 중괄호(`{{}}`)를 사용하여 Amazon S3 경로에서 파라미터가 사용되고 있음을 나타냅니다. 예를 들어 사용자는 `s3://amzn-s3-demo-bucket1/{{example_parameter_name}}/example-dataset.csv`과 같은 URL을 사용할 수 있습니다.

가져온 Amazon S3 데이터 소스를 편집할 때 파라미터를 생성합니다. 사용자는 파일 경로의 어느 부분이든 파라미터 값으로 설정할 수 있습니다. 사용자는 파라미터 값을 값 또는 패턴으로 설정할 수 있습니다. 다음은 Data Wrangler 흐름에서 사용 가능한 파라미터 값 유형입니다.
+ 숫자
+ 문자열
+ 패턴
+ 날짜시간

**참고**  
Amazon S3 경로에는 버킷 이름에 대한 패턴 파라미터 또는 날짜시간 파라미터를 생성할 수 없습니다.

숫자를 숫자 파라미터의 기본값으로 설정해야 합니다. 사용자는 파라미터를 편집하거나 처리 작업을 시작할 때 파라미터 값을 다른 숫자로 변경할 수 있습니다. 예를 들어, S3 경로 `s3://amzn-s3-demo-bucket/example-prefix/example-file-1.csv`에서 사용자는 `1` 대신 `number_parameter`로 불리는 숫자 파라미터를 생성할 수 있습니다. 이제 S3 경로가 `s3://amzn-s3-demo-bucket/example-prefix/example-file-{{number_parameter}}.csv`로 표시됩니다. 파라미터 값을 변경할 때까지 경로는 계속해서 `example-file-1.csv` 데이터세트를 가리킵니다. `number_parameter`의 값을 `2`로 변경하면 경로는 `s3://amzn-s3-demo-bucket/example-prefix/example-file-2.csv`이/가 됩니다. Amazon S3 위치에 파일을 업로드한 경우 사용자는 Data Wrangler로 `example-file-2.csv`을/를 가져올 수 있습니다.

문자열 파라미터는 문자열을 기본값으로 저장합니다. 예를 들어, 사용자는 S3 경로 `s3://amzn-s3-demo-bucket/example-prefix/example-file-1.csv`에서 파일명 `example-file-1.csv` 대신 `string_parameter`로 불리는 문자열 파라미터를 생성할 수 있습니다. 이제 경로가 `s3://amzn-s3-demo-bucket/example-prefix/{{string_parameter}}`로 표시됩니다. 파라미터 값을 변경할 때까지 계속 `s3://amzn-s3-demo-bucket/example-prefix/example-file-1.csv`로 유지됩니다.

파일 이름을 문자열 파라미터로 지정하는 대신 사용자는 전체 Amazon S3 경로를 사용하여 문자열 파라미터를 생성할 수 있습니다. 사용자는 모든 Amazon S3 위치의 데이터세트를 문자열 파라미터로 지정할 수 있습니다.

패턴 파라미터는 정규 표현식(Python REGEX) 문자열을 기본값으로 저장합니다. 사용자는 패턴 파라미터를 사용하여 동시에 여러 데이터 파일을 가져올 수 있습니다. 한 번에 두 개 이상의 객체를 가져오려면 가져오려는 Amazon S3 객체와 일치하는 파라미터 값을 지정하세요.

사용자는 다음 데이터세트에 대한 패턴 파라미터를 생성할 수도 있습니다.
+ s3://amzn-s3-demo-bucket1/example-prefix/example-file-1.csv
+ s3://amzn-s3-demo-bucket1/example-prefix/example-file-2.csv
+ s3://amzn-s3-demo-bucket1/example-prefix/example-file-10.csv
+ s3://amzn-s3-demo-bucket/example-prefix/example-file-0123.csv

`s3://amzn-s3-demo-bucket1/example-prefix/example-file-1.csv`의 경우, 사용자는 `1` 대신 패턴 파라미터를 생성하고 파라미터의 기본값을 `\d+`로 설정할 수 있습니다. `\d+` REGEX 문자열은 하나 이상의 십진수와 매칭합니다. `pattern_parameter`이라는 패턴 파라미터를 생성하면 S3 경로가 `s3://amzn-s3-demo-bucket1/example-prefix/example-file-{{pattern_parameter}}.csv`로 표시됩니다.

사용자는 패턴 파라미터를 사용하여 버킷 내 모든 CSV 객체를 매칭시킬 수도 있습니다. 버킷의 모든 객체를 매칭시키려면 기본값이 `.*`인 패턴 파라미터를 생성하고 경로를 `s3://amzn-s3-demo-bucket/{{pattern_parameter}}.csv`로 설정합니다. `.*` 문자는 경로에 있는 모든 문자열 문자와 매칭합니다.

`s3://amzn-s3-demo-bucket/{{pattern_parameter}}.csv` 경로는 다음 데이터세트와 매칭할 수 있습니다.
+ `example-file-1.csv`
+ `other-example-file.csv`
+ `example-file-a.csv`

날짜시간 파라미터는 다음 정보를 포함하는 형식을 저장합니다.
+ Amazon S3 경로 내에서 문자열을 파싱하기 위한 형식.
+ 매칭하는 날짜시간 값을 제한하기 위한 상대 시간 범위

예를 들어, Amazon S3 파일 경로 `s3://amzn-s3-demo-bucket/2020/01/01/example-dataset.csv`에서 2020/01/01은 `year/month/day`의 형식으로 된 날짜시간을 나타냅니다. 사용자는 파라미터의 시간 범위를 `1 years` 또는 `24 hours`와/과 같은 간격으로 설정할 수 있습니다. `1 years`의 간격은 현재 시간과 현재 시간보다 정확히 1년 전 시간 사이에 해당하는 날짜시간을 가진 모든 S3 경로와 매칭합니다. 현재 시간은 데이터에 수행한 변환을 내보내기 시작하는 시간입니다. 데이터 내보내기에 대한 추가 정보는 [내보내기](data-wrangler-data-export.md) 섹션을 참조하세요. 현재 날짜가 2022/01/01이고 시간 범위가 `1 years`인 경우 S3 경로는 다음과 같은 데이터세트와 매칭합니다.
+ s3://amzn-s3-demo-bucket/2021/01/01/example-dataset.csv
+ s3://amzn-s3-demo-bucket/2021/06/30/example-dataset.csv
+ s3://amzn-s3-demo-bucket/2021/12/31/example-dataset.csv

상대 시간 범위 내의 날짜시간 값은 시간이 경과함에 따라 변경됩니다. 상대 시간 범위에 속하는 S3 경로도 다를 수 있습니다.

Amazon S3 파일 경로가 `s3://amzn-s3-demo-bucket1/20200101/example-dataset.csv`인 경우 `20220101`는 날짜시간 파라미터가 될 수 있는 경로의 예입니다.

Data Wrangler 흐름에서 생성한 모든 파라미터의 표를 보려면 Amazon S3 경로가 포함된 텍스트 상자 오른쪽에 있는 `\$1\$1\$1\$1'를 선택합니다. 생성한 파라미터가 더 이상 필요하지 않으면 사용자는 편집하거나 삭제할 수 있습니다. 파라미터를 편집하거나 삭제하려면 파라미터 오른쪽에 있는 아이콘을 선택합니다.

**중요**  
파라미터를 삭제하기 전에 Data Wrangler 흐름의 어느 곳에서도 이를 사용하지 않았음을 확인하세요. 흐름 내에 남아 있는 삭제된 파라미터는 오류를 발생시킬 수 있습니다.

사용자는 Data Wrangler 흐름의 모든 단계에 대한 파라미터를 만들 수 있습니다. 사용자는 생성한 파라미터를 편집하거나 삭제할 수 있습니다. 사용 사례와 더 이상 관련이 없는 데이터에 변환을 적용하는 경우 사용자는 파라미터 값을 수정할 수 있습니다. 파라미터의 값을 수정하면 가져오는 데이터가 변경됩니다.

다음 섹션에서는 파라미터 사용에 대한 추가 예제와 일반 지침을 제공합니다. 사용자는 이 섹션을 사용하여 자신에게 가장 적합한 파라미터를 이해할 수 있습니다.

**참고**  
다음 섹션에는 Data Wrangler 인터페이스를 사용하여 파라미터를 재정의하고 처리 작업을 생성하는 절차가 포함되어 있습니다.  
사용자는 다음 절차를 사용하여 파라미터를 재정의할 수도 있습니다.  
Data Wrangler 흐름을 내보내고 파라미터 값을 재정의하려면 다음을 수행하세요.  
내보내고자 하는 노드 옆에 있는 **\$1**를 선택합니다.
**Export to(내보내기)**를 선택합니다.
데이터를 내보낼 위치를 선택합니다.
`parameter_overrides`에서 생성한 파라미터에 대해 다른 값을 지정합니다.
Jupyter notebook 실행.

## 패턴을 사용하여 파일에 Data Wrangler 흐름 적용
<a name="data-wrangler-pattern-parameters"></a>

사용자는 파라미터를 사용하여 Data Wrangler 흐름의 변환을 Amazon S3 URI 경로의 패턴과 매칭하는 여러 파일에 적용할 수 있습니다. 이를 통해 S3 버킷에서 매우 구체적으로 변환하려는 파일을 지정할 수 있습니다. 예를 들어 경로가 `s3://amzn-s3-demo-bucket1/example-prefix-0/example-prefix-1/example-prefix-2/example-dataset.csv`인 데이터세트가 있을 수 있습니다. 이름이 `example-dataset.csv`인 여러 데이터세트가 다양한 예제 접두사 아래에 저장됩니다. 접두사에 순차적으로 번호가 매겨질 수도 있습니다. 사용자는 Amazon S3 URI에서 숫자 패턴을 생성할 수 있습니다. 패턴 파라미터는 REGEX를 사용하여 표현식의 패턴과 일치하는 파일을 원하는 수만큼 선택합니다. 다음은 유용할 수 있는 REGEX 패턴입니다.
+ `.*`- 개행 문자를 제외한 모든 문자를 0개 이상 매칭합니다
+ `.+`- 개행 문자를 제외한 모든 문자 중 하나 이상과 매칭합니다
+ `\d+`- 하나 이상의 십진수와 매칭합니다
+ `\w+`- 하나 이상의 영숫자 문자와 매칭합니다
+ `[abc-_]{2,4}`- 괄호 세트 내에 제공된 문자 세트로 구성된 문자열(2, 3 또는 4자)을 매칭합니다
+ `abc|def`- 한 문자열 또는 다른 문자열을 매칭합니다. 예를 들어, 연산은 `abc` 또는 `def`와 매칭합니다

사용자는 다음 경로의 각 숫자를 값이 `\d+`인 단일 파라미터로 바꿀 수 있습니다.
+ `s3://amzn-s3-demo-bucket1/example-prefix-3/example-prefix-4/example-prefix-5/example-dataset.csv`
+ `s3://amzn-s3-demo-bucket1/example-prefix-8/example-prefix-12/example-prefix-13/example-dataset.csv`
+ `s3://amzn-s3-demo-bucket1/example-prefix-4/example-prefix-9/example-prefix-137/example-dataset.csv`

다음 절차는 경로가 `s3://amzn-s3-demo-bucket1/example-prefix-0/example-prefix-1/example-prefix-2/example-dataset.csv`인 데이터세트의 패턴 파라미터를 만듭니다.

패턴 파라미터를 생성하려면 다음을 수행합니다.

1. 가져온 데이터 세트 옆의 **Edit dataset(데이터 세트 편집)**를 선택합니다.

1. `example-prefix-0`에 있는 `0`을 강조 표시합니다.

1. 다음 필드에 값을 입력합니다.
   + **Name(이름)** - 파라미터의 이름
   + **Type(유형)** - **패턴**
   + **Value(값)** -**\$1d\$1** 하나 이상의 숫자에 해당하는 정규 표현식

1. **Create(생성)**을 선택합니다.

1. S3 URI 내 `1` 및 `2`를 파라미터로 바꿉니다. 경로는 다음과 같은 형식이어야 합니다: `s3://amzn-s3-demo-bucket1/example-prefix-{{example_parameter_name}}/example-prefix-{{example_parameter_name}}/example-prefix-{{example_parameter_name}}/example-dataset.csv`

다음은 패턴 파라미터를 만드는 일반적인 절차입니다.

1. Data Wrangler 흐름으로 이동합니다.

1. 가져온 데이터 세트 옆의 **Edit dataset(데이터 세트 편집)**를 선택합니다.

1. 패턴 파라미터 값으로 사용 중인 URI의 일부분을 강조 표시합니다.

1. **Create custom parameter(사용자 지정 파라미터 생성)**를 선택합니다.

1. 다음 필드에 값을 입력합니다.
   + **Name(이름)** - 파라미터의 이름
   + **Type(유형)** - **패턴**
   + **Value(값)** - 저장하려는 패턴이 포함된 정규 표현식.

1. **Create(생성)**을 선택합니다.

## 숫자 값을 사용하여 파일에 Data Wrangler 흐름 적용
<a name="data-wrangler-numeric-parameters"></a>

사용자는 파라미터를 사용하여 Data Wrangler 흐름의 변형을 경로가 비슷한 여러 파일에 적용할 수 있습니다. 예를 들어 경로가 `s3://amzn-s3-demo-bucket1/example-prefix-0/example-prefix-1/example-prefix-2/example-dataset.csv`인 데이터 세트가 있을 수 있습니다.

`example-prefix-1`의 데이터세트에 적용한 Data Wrangler 흐름의 변환이 있을 수 있습니다. `example-prefix-10`또는 `example-prefix-20`의 `example-dataset.csv`에 동일한 변환을 적용하기를 원할 수도 있습니다.

사용자는 값 `1`을 저장하는 파라미터를 만들 수 있습니다. 변환을 다른 데이터세트에 적용하려는 경우 사용자는 파라미터 값을 다른 값으로 바꾸는 처리 작업을 만들 수 있습니다. 파라미터는 Data Wrangler 흐름의 변형을 새 데이터에 적용하려는 경우 변경할 수 있는 자리 표시자 역할을 합니다. 사용자는 Data Wrangler 처리 작업을 생성하여 Data Wrangler 흐름의 변환을 다른 데이터 세트에 적용할 때 파라미터 값을 재정의할 수 있습니다.

`s3://amzn-s3-demo-bucket1/example-prefix-0/example-prefix-1/example-prefix-2/example-dataset.csv`을 위한 숫자 파라미터를 생성하려면 다음 절차에 따르세요.

이전 S3 URI 경로에 대한 파라미터를 생성하려면 다음과 같이 하세요.

1. Data Wrangler 흐름으로 이동합니다.

1. 가져온 데이터 세트 옆의 **Edit dataset(데이터 세트 편집)**를 선택합니다.

1. `example-prefix-number`의 예제 접두사에서 숫자를 강조 표시합니다.

1. **Create custom parameter(사용자 지정 파라미터 생성)**를 선택합니다.

1. **Name(이름)**에 파라미터의 이름을 입력합니다.

1. **Type(유형)**에서 **정수**를 선택합니다.

1. **Value(값)**에 숫자를 지정합니다.

1. 이 절차를 반복하여 나머지 숫자에 대한 파라미터를 생성합니다.

파라미터를 만든 후 데이터세트에 변환을 적용하고 해당 변환의 대상 노드를 만드세요. 대상 노드에 대한 추가 정보는 섹션 [내보내기](data-wrangler-data-export.md)을/를 참조하세요.

다음 절차를 사용하여 Data Wrangler 흐름의 변환을 다른 시간 범위에 적용하세요. 흐름의 변환을 위한 대상 노드를 이미 만들었다고 가정합니다.

Data Wrangler 처리 작업에서 숫자 파라미터 값을 변경하려면 다음과 같이 하세요.

1. Data Wrangler 흐름에서 **Create job(작업 생성)**을 선택합니다

1. 날짜시간 파라미터가 포함된 데이터세트에 대한 변환이 포함된 대상 노드만 선택합니다.

1. **Configure job(작업 구성)**을 선택합니다.

1. **Parameters(파라미터)**를 선택합니다.

1. 앞서 생성한 파라미터 이름을 선택합니다.

1. 파라미터 값을 변경합니다.

1. 다른 파라미터에 대해서도 이 절차를 반복합니다.

1. **Run(실행)**을 선택합니다.

## 문자열을 사용하여 파일에 Data Wrangler 흐름 적용
<a name="data-wrangler-string-parameters"></a>

사용자는 파라미터를 사용하여 Data Wrangler 흐름의 변형을 경로가 비슷한 여러 파일에 적용할 수 있습니다. 예를 들어 경로가 `s3://amzn-s3-demo-bucket1/example-prefix/example-dataset.csv`인 데이터세트가 있을 수 있습니다.

`example-prefix`의 데이터세트에 적용한 Data Wrangler 흐름의 변환이 있을 수 있습니다. `another-example-prefix`또는 `example-prefix-20`의 `example-dataset.csv`에 동일한 변환을 적용하기를 원할 수도 있습니다.

사용자는 값 `example-prefix`을 저장하는 파라미터를 만들 수 있습니다. 변환을 다른 데이터세트에 적용하려는 경우 사용자는 파라미터 값을 다른 값으로 바꾸는 처리 작업을 만들 수 있습니다. 파라미터는 Data Wrangler 흐름의 변형을 새 데이터에 적용하려는 경우 변경할 수 있는 자리 표시자 역할을 합니다. 사용자는 Data Wrangler 처리 작업을 생성하여 Data Wrangler 흐름의 변환을 다른 데이터세트에 적용할 때 파라미터 값을 재정의할 수 있습니다.

`s3://amzn-s3-demo-bucket1/example-prefix/example-dataset.csv`의 문자열 파라미터를 생성하려면 다음 절차에 따르세요.

이전 S3 URI 경로에 대한 파라미터를 생성하려면 다음과 같이 하세요.

1. Data Wrangler 흐름으로 이동합니다.

1. 가져온 데이터 세트 옆의 **Edit dataset(데이터 세트 편집)**를 선택합니다.

1. 예제 접두사 `example-prefix`을/를 강조 표시합니다.

1. **Create custom parameter(사용자 지정 파라미터 생성)**를 선택합니다.

1. **Name(이름)**에 파라미터의 이름을 입력합니다.

1. **Type(유형)**에서 **문자열**을 선택합니다.

1. **값**에 접두사를 지정합니다.

파라미터를 만든 후 데이터세트에 변환을 적용하고 해당 변환의 대상 노드를 만드세요. 대상 노드에 대한 추가 정보는 섹션 [내보내기](data-wrangler-data-export.md)을/를 참조하세요.

다음 절차를 사용하여 Data Wrangler 흐름의 변환을 다른 시간 범위에 적용하세요. 흐름의 변환을 위한 대상 노드를 이미 만들었다고 가정합니다.

Data Wrangler 처리 작업에서 숫자 파라미터 값을 변경하려면 다음과 같이 하세요.

1. Data Wrangler 흐름에서 **Create job(작업 생성)**을 선택합니다

1. 날짜시간 파라미터가 포함된 데이터세트에 대한 변환이 포함된 대상 노드만 선택합니다.

1. **Configure job(작업 구성)**을 선택합니다.

1. **Parameters(파라미터)**를 선택합니다.

1. 앞서 생성한 파라미터 이름을 선택합니다.

1. 파라미터 값을 변경합니다.

1. 다른 파라미터에 대해서도 이 절차를 반복합니다.

1. **Run(실행)**을 선택합니다.

## 다양한 날짜시간 범위에 Data Wrangler 흐름 적용
<a name="data-wrangler-datetime-parameters"></a>

날짜시간 파라미터를 사용하여 Data Wrangler 흐름의 변환을 다양한 시간 범위에 적용할 수 있습니다. Amazon S3 URI에서 타임스탬프가 있는 부분을 강조 표시하고 해당 부분에 대한 파라미터를 생성합니다. 파라미터를 생성할 때 현재 시간에서 과거 시간까지의 시간 범위를 지정합니다. 예를 들어 다음과 같은 Amazon S3 URI가 있을 수 있습니다: `s3://amzn-s3-demo-bucket1/example-prefix/2022/05/15/example-dataset.csv`. 사용자는 날짜시간 파라미터로 `2022/05/15`을/를 저장할 수 있습니다. 연도를 시간 범위로 지정하는 경우 시간 범위에는 날짜시간 파라미터가 포함된 처리 작업을 실행한 순간과 정확히 1년 전의 시간이 포함됩니다. 처리 작업을 실행하는 시점이 2022년 9월 6일이나 `2022/09/06`인 경우 시간 범위에는 다음이 포함될 수 있습니다:
+ `s3://amzn-s3-demo-bucket1/example-prefix/2022/03/15/example-dataset.csv`
+ `s3://amzn-s3-demo-bucket1/example-prefix/2022/01/08/example-dataset.csv`
+ `s3://amzn-s3-demo-bucket1/example-prefix/2022/07/31/example-dataset.csv`
+ `s3://amzn-s3-demo-bucket1/example-prefix/2021/09/07/example-dataset.csv`

Data Wrangler 흐름의 변환은 위의 모든 접두사에 적용됩니다. 처리 작업에서 파라미터 값을 변경해도 Data Wrangler 흐름의 파라미터 값은 변경되지 않습니다. 다른 시간 범위 내의 데이터세트에 변환을 적용하려면 다음을 수행합니다.

1. 사용하려는 모든 변환이 포함된 대상 노드를 생성합니다.

1. Data Wrangler 작업을 생성합니다.

1. 파라미터에 다른 시간 범위를 사용하도록 작업을 구성합니다. 처리 작업에서 파라미터 값을 변경해도 Data Wrangler 흐름의 파라미터 값은 변경되지 않습니다.

대상 노드 및 Data Wrangler 작업에 대한 추가 정보는 [내보내기](data-wrangler-data-export.md)를/을 참조하세요.

다음 절차는 Amazon S3 경로에 대한 날짜시간 파라미터를 생성합니다: `s3://amzn-s3-demo-bucket1/example-prefix/2022/05/15/example-dataset.csv`.

이전 S3 URI 경로에 대한 날짜시간 파라미터를 생성하려면 다음과 같이 하세요.

1. Data Wrangler 흐름으로 이동합니다.

1. 가져온 데이터세트 옆의 **Edit dataset(데이터세트 편집)**를 선택합니다.

1. 날짜시간 파라미터 값으로 사용 중인 URI 부분을 강조 표시합니다.

1. **Create custom parameter(사용자 지정 파라미터 생성)**를 선택합니다.

1. **Name(이름)**에 파라미터의 이름을 입력합니다.

1. **Type(유형)**에서 **날짜시간**을 선택합니다.
**참고**  
기본적으로 Data Wrangler는 날짜 형식을 선택할 수 있는 드롭다운 메뉴를 제공하는 **Predefined(사전 정의)**을 선택합니다. 하지만 사용 중인 타임스탬프 형식은 사용할 수 없을 수도 있습니다. **Predefined(사전 정의)**를 기본 옵션으로 사용하는 대신 사용자는 **Custom(사용자 지정)**을 선택하고 타임스탬프 형식을 수동으로 지정할 수 있습니다.

1. **Date format(날짜 형식)**의 경우 **Predefined(사전 정의)** 다음에 드롭다운 메뉴를 열고 **yyyy/MM/dd**를 선택합니다. **yyyy/MM/dd** 형식은 타임스탬프의 연도/월/일에 해당합니다.

1. **Time zone(표준 시간대)**에서 시간대를 선택합니다.
**참고**  
분석 중인 데이터에 사용자의 시간대와 다른 시간대에서 찍힌 타임스탬프가 있을 수 있습니다. 선택한 시간대가 데이터의 시간대와 일치하는지 확인하세요.

1. **Time range(시간 범위)**에 파라미터의 시간 범위를 지정합니다.

1. (선택 사항) 파라미터를 사용하는 방법을 설명하는 설명을 입력합니다.

1. **생성(Create)**을 선택합니다.

날짜시간 파라미터를 만든 후 데이터세트에 변환을 적용하고 해당 변환의 대상 노드를 만드세요. 대상 노드에 대한 추가 정보는 섹션 [내보내기](data-wrangler-data-export.md)을/를 참조하세요.

다음 절차를 사용하여 Data Wrangler 흐름의 변환을 다른 시간 범위에 적용하세요. 흐름의 변환을 위한 대상 노드를 이미 만들었다고 가정합니다.

Data Wrangler 처리 작업에서 날짜시간 파라미터의 값을 변경하려면 다음과 같이 하세요.

1. Data Wrangler 흐름에서 **Create job(작업 생성)**을 선택합니다

1. 날짜시간 파라미터가 포함된 데이터세트에 대한 변환이 포함된 대상 노드만 선택합니다.

1. **Configure job(작업 구성)**을 선택합니다.

1. **Parameters(파라미터)**를 선택합니다.

1. 앞서 생성한 날짜시간 파라미터 이름을 선택합니다.

1. **Time range(시간 범위)**에서 데이터세트의 시간 범위를 변경합니다.

1. **실행**을 선택합니다.

# 내보내기
<a name="data-wrangler-data-export"></a>

Data Wrangler 흐름에서 데이터 처리 파이프라인에 대해 수행한 변환 중 일부 또는 전부를 내보낼 수 있습니다.

Data Wrangler 흐름은 데이터에 대해 수행한 일련의 데이터 준비 단계입니다.** 데이터 준비 과정에서 데이터에 대한 변환을 한 번 이상 수행합니다. 각 변환은 변환 단계를 사용하여 이루어집니다. 흐름에는 데이터 가져오기와 자신이 수행한 변환을 나타내는 일련의 노드가 있습니다. 노드 예는 다음 이미지를 참조하세요.

![\[Data Wrangler 콘솔의 데이터 흐름 예시입니다.\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/images/studio/mohave/data-wrangler-destination-nodes-photo-0.png)


앞서 나온 이미지는 두 개의 노드가 있는 Data Wrangler 흐름을 보여줍니다. **Source - sampled** 노드는 데이터를 가져온 데이터 소스를 보여줍니다. **Data types** 노드는 Data Wrangler가 데이터세트를 사용 가능한 형식으로 바꾸도록 변환했음을 나타냅니다.

Data Wrangler 흐름에 추가하는 각 변환은 추가 노드로 나타납니다. 추가할 수 있는 변환에 대한 자세한 내용은 [데이터 변환하기](data-wrangler-transform.md) 섹션을 참조하세요. 다음 이미지는 데이터세트의 열 이름을 변경하기 위해 **Rename-column** 노드가 있는 Data Wrangler 흐름을 보여줍니다.

데이터 변환을 다음으로 내보낼 수 있습니다.
+ Amazon S3
+ 파이프라인
+ Amazon SageMaker 특성 저장소
+ Python 코드

**중요**  
IAM `AmazonSageMakerFullAccess` 관리형 정책을 사용하여 Data Wrangler를 사용할 수 있는 AWS 권한을 부여하는 것이 좋습니다. 관리형 정책을 사용하지 않는 경우 Data Wrangler에 Amazon S3 버킷 액세스 권한을 부여하는 IAM 정책을 사용할 수 있습니다. 정책에 대한 자세한 정보는 [보안 및 권한](data-wrangler-security.md) 섹션을 참조하세요.

데이터 흐름을 내보내면 사용하는 AWS 리소스에 대한 요금이 부과됩니다. 비용 할당 태그를 사용하여 해당 리소스의 비용을 구성하고 관리할 수 있습니다. 사용자 프로필용으로 이러한 태그를 만들면 Data Wrangler가 데이터 흐름을 내보내는 데 사용되는 리소스에 해당 태그를 자동으로 적용합니다. 자세한 내용은 [비용 할당 태그 사용하기](https://docs.aws.amazon.com//awsaccountbilling/latest/aboutv2/cost-alloc-tags.html)를 참조하세요.

## Amazon S3로 내보내기
<a name="data-wrangler-data-export-s3"></a>

Data Wrangler를 사용하면 Amazon S3 버킷 내 위치로 데이터를 내보낼 수 있습니다. 다음 방법 중 하나를 사용하여 위치를 지정할 수 있습니다.
+ 대상 노드 – Data Wrangler가 데이터를 처리한 후 저장하는 위치입니다.
+ 내보낼 위치 – Amazon S3로 변환한 결과 데이터를 내보냅니다.
+ 데이터 내보내기 – 작은 데이터세트의 경우 변환한 데이터를 빠르게 내보낼 수 있습니다.

다음 섹션을 통해 이런 각각의 옵션에 대해 자세히 알아보세요.

------
#### [ Destination Node ]

Amazon S3에 대해 수행한 일련의 데이터 처리 단계를 출력하려면 대상 노드를 생성합니다. 대상 노드는 데이터를 처리한 후 Data Wrangler에 데이터를 저장할 위치를 알려줍니다.** 대상 노드를 생성한 후 데이터를 출력하는 처리 작업을 생성합니다. 처리 작업은 Amazon SageMaker 처리 작업입니다.** 대상 노드를 사용 중인 경우 Amazon S3로 변환한 데이터를 출력하는 데 필요한 계산 리소스가 실행됩니다.

대상 노드를 사용하여 Data Wrangler 흐름에서 수행한 일부 변환 또는 모든 변환을 내보낼 수 있습니다.

여러 대상 노드를 사용하여 다양한 변환 또는 변환 세트를 내보낼 수 있습니다. 다음 예에서는 단일 Data Wrangler 흐름의 두 대상 노드를 보여줍니다.

![\[Data Wrangler 흐름의 두 대상 노드를 보여주는 데이터 흐름 예시입니다.\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/images/studio/mohave/data-wrangler-destination-nodes-photo-4.png)


다음 절차에 따라 대상 노드를 생성하고 Amazon S3 버킷으로 내보낼 수 있습니다.

데이터 흐름을 내보내려면 대상 노드와 데이터를 내보내는 Data Wrangler 작업을 생성합니다. Data Wrangler 작업을 생성하면 흐름을 내보내는 SageMaker Processing 작업이 시작됩니다. 대상 노드를 생성한 후 내보내려는 대상 노드를 선택할 수 있습니다.
**참고**  
Data Wrangler 흐름에서 **작업 생성**을 선택하여 처리 작업 사용 지침을 볼 수 있습니다.

대상 노드를 만들려면 다음 절차에 따르세요.

1. 내보내려는 변환을 나타내는 노드 옆의 **\$1**를 선택합니다.

1. **대상 추가**를 선택합니다.  
![\[Data Wrangler 콘솔에서 대상을 추가하는 방법을 보여주는 데이터 흐름 예시입니다.\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/images/studio/mohave/destination-nodes/destination-nodes-add-destination-0.png)

1. **Amazon S3**를 선택합니다.  
![\[Data Wrangler 콘솔에서 대상을 추가하는 방법을 보여주는 데이터 흐름 예시입니다.\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/images/studio/mohave/destination-nodes/destination-nodes-add-destination-S3-selected.png)

1. 다음 필드를 지정합니다.
   + **데이터세트 이름** – 내보내는 데이터세트에 대해 지정하는 이름입니다.
   + **파일 유형** – 내보내는 파일의 형식입니다.
   + **구분 기호**(CSV 및 Parquet 파일만 해당) – 다른 값을 구분하는 데 사용되는 값입니다.
   + **압축**(CSV 및 Parquet 파일만 해당) – 파일 크기를 줄이는 데 사용되는 압축 방법입니다. 다음 압축 방법을 사용할 수 있습니다.
     + bzip2
     + deflate
     + gzip
   + (선택 사항) **Amazon S3 위치** – 파일을 출력하는 데 사용하는 S3 위치입니다.
   + (선택 사항) **파티션 수** – 처리 작업의 출력으로 작성 중인 데이터세트의 수입니다.
   + (선택 사항) **열 기준 분할** – 열에서 동일한 고유 값을 사용하여 모든 데이터를 씁니다.
   + (선택 사항) **추론 파라미터** – **추론 아티팩트 생성**을 선택하면 Data Wrangler 흐름에서 사용한 모든 변환이 추론 파이프라인으로 들어오는 데이터에 적용됩니다. 파이프라인의 모델은 변환된 데이터에 대한 예측을 수행합니다.

1. **대상 추가**를 선택합니다.

다음 절차를 사용하여 처리 작업을 생성합니다.

**데이터 흐름** 페이지에서 작업을 만들고 내보내려는 대상 노드를 선택합니다.
**참고**  
Data Wrangler 흐름에서 **작업 생성**을 선택하여 처리 작업 생성 지침을 볼 수 있습니다.

1. **작업 생성**을 선택합니다. 다음 이미지는 **작업 생성**을 선택한 후 나타나는 창을 보여줍니다.  
![\[Data Wrangler 콘솔의 데이터 흐름 만들기 작업 창의 예시입니다.\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/images/studio/mohave/destination-nodes/destination-nodes-create-job.png)

1. **작업 이름**에는 내보내기 작업의 이름을 지정합니다.

1. 내보내려는 대상 노드를 선택합니다.

1. (선택 사항) AWS KMS 키 ARN을 지정합니다. AWS KMS 키는 데이터를 보호하는 데 사용할 수 있는 암호화 키입니다. AWS KMS 키에 대한 자세한 내용은 단원을 참조하십시오[AWS Key Management Service](https://docs.aws.amazon.com//kms/latest/developerguide/overview.html).

1. (선택 사항) **훈련된 파라미터**에서 다음을 수행했다면 **재구성**을 선택하세요.
   + 샘플링된 데이터세트
   + 데이터를 사용하여 데이터세트에 새 열을 만드는 변환을 적용했습니다.

   전체 데이터 세트에 대해 수행한 변환을 재구성하는 방법에 대한 자세한 내용은 [변환을 전체 데이터세트로 재구성하고 내보내기](#data-wrangler-data-export-fit-transform) 단원을 참조하세요.
**참고**  
이미지 데이터의 경우 Data Wrangler는 사용자가 수행한 변환을 모든 이미지에 내보냅니다. 자신의 사용 사례에 변환 재구성을 적용할 수는 없습니다.

1. **작업 구성**을 선택합니다. 다음 이미지는 **작업 구성** 페이지를 보여줍니다.  
![\[Data Wrangler 콘솔의 데이터 흐름 구성 작업 페이지의 예시입니다.\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/images/studio/mohave/destination-nodes/destination-nodes-configure-job.png)

1. (선택 사항) Data Wrangler 작업을 구성합니다. 다음과 같이 구성할 수 있습니다.
   + **작업 구성**
   + **Spark 메모리 구성**
   + **네트워크 구성**
   + **Tags**
   + **파라미터**
   + **일정 연결**

1. **실행**을 선택합니다.

------
#### [ Export to ]

대상 노드를 사용하는 대신, **내보낼 위치** 옵션으로 Jupyter notebook을 사용하여 Data Wrangler 흐름을 Amazon S3로 내보낼 수 있습니다. Data Wrangler 흐름에서 원하는 데이터 노드를 선택하여 내보낼 수 있습니다. 데이터 노드를 내보내면 노드가 나타내는 변환과 그 이전의 변환이 내보내집니다.

다음 절차에 따라 Jupyter notebook을 생성하고 실행하여 Data Wrangler 흐름을 Amazon S3로 내보냅니다.

1. 내보내고자 하는 노드 옆에 있는 **\$1**를 선택합니다.

1. **내보낼 위치**를 선택합니다.

1. **(Jupyter notebook을 통해) Amazon S3**를 선택합니다.

1. Jupyter notebook을 실행합니다.  
![\[Data Wrangler 콘솔에서 Data Wrangler 흐름을 내보내는 방법을 보여주는 데이터 흐름 예시입니다.\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/images/studio/mohave/data-wrangler-destination-nodes-photo-export-to.png)

노트북을 실행하면 Data Wrangler 흐름 AWS 리전 과 동일한에서 데이터 흐름(.flow 파일)을 내보냅니다.

노트북은 처리 작업과 처리 작업에서 출력하는 데이터를 구성하는 데 사용할 수 있는 옵션을 제공합니다.

**중요**  
데이터 출력을 구성하기 위한 작업 구성을 제공합니다. 파티셔닝 및 드라이버 메모리 옵션의 경우 이미 알고 있는 경우가 아니면 구성을 지정하지 않는 것이 좋습니다.

**작업 구성**에서 다음을 구성할 수 있습니다.
+ `output_content_type` – 출력 파일의 콘텐츠 유형. 기본 형식으로 `CSV`를 사용하지만 `Parquet`를 지정할 수 있습니다.
+ `delimiter` – CSV 파일에 쓸 때 데이터세트의 값을 구분하는 데 사용되는 문자.
+ `compression` – 설정된 경우 출력 파일을 압축합니다. gzip을 기본 압축 형식으로 사용합니다.
+ `num_partitions` – Data Wrangler가 출력으로 쓰는 파티션 또는 파일 수.
+ `partition_by` – 출력을 분할하는 데 사용하는 열의 이름.

출력 파일 형식을 CSV에서 Parquet로 변경하려면 값을 `"CSV"`에서 `"Parquet"`로 변경합니다. 나머지 선행 필드의 경우 지정하려는 필드가 포함된 줄의 주석 처리를 제거합니다.

**(선택 사항) Spark 클러스터 드라이버 메모리 구성**에서 `config` 사전의 Spark 드라이버 메모리와 같은 작업에 대한 Spark 속성을 구성할 수 있습니다.

다음은 `config` 사전을 보여줍니다.

```
config = json.dumps({
    "Classification": "spark-defaults",
    "Properties": {
        "spark.driver.memory": f"{driver_memory_in_mb}m",
    }
})
```

구성을 처리 작업에 적용하려면 다음 줄의 주석 처리를 제거하세요.

```
# data_sources.append(ProcessingInput(
#     source=config_s3_uri,
#     destination="/opt/ml/processing/input/conf",
#     input_name="spark-config",
#     s3_data_type="S3Prefix",
#     s3_input_mode="File",
#     s3_data_distribution_type="FullyReplicated"
# ))
```

------
#### [ Export data ]

작은 데이터세트에 빠르게 내보내려는 변환이 있는 경우 **데이터 내보내기** 메서드를 사용할 수 있습니다. **데이터 내보내기**를 선택하면 Data Wrangler가 동기식으로 작동하여 Amazon S3로 변환한 데이터를 내보냅니다. 데이터 내보내기를 완료하거나 작업을 취소할 때까지는 Data Wrangler를 사용할 수 없습니다.

Data Wrangler 흐름에서 **데이터 내보내기** 메서드를 사용하는 방법에 대한 자세한 내용은 다음 절차를 참조하세요.

**데이터 내보내기** 메서드를 사용하려면 다음을 수행하세요.

1. Data Wrangler 흐름에서 노드를 열어서(두 번 클릭) 선택합니다.  
![\[Data Wrangler 콘솔에서 데이터를 내보내는 방법을 보여주는 데이터 흐름 예시입니다.\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/images/studio/mohave/export-s3.png)

1. 데이터를 내보낼 방법을 구성합니다.

1. **데이터 내보내기**를 선택합니다.

------

데이터 흐름을 Amazon S3 버킷으로 내보낼 경우 Data Wrangler는 흐름 파일의 복사본을 S3 버킷에 저장합니다. 그러면 흐름 파일이 *data\$1wrangler\$1flow* 접두사 아래에 저장됩니다. 기본 Amazon S3 버킷을 사용하여 흐름 파일을 저장하는 경우 `sagemaker-region-account number` 명명 규칙을 사용합니다. 예를 들어, 계정 번호가 111122223333이고 us-east-1에서 Studio Classic을 사용하는 경우 가져온 데이터세트는 `sagemaker-us-east-1-111122223333`에 저장됩니다. 이 예에서는 us-east-1에서 생성된 .flow 파일이 `s3://sagemaker-region-account number/data_wrangler_flows/`에 저장됩니다.

## Pipelines으로 내보내기
<a name="data-wrangler-data-export-pipelines"></a>

대규모 기계 학습(ML) 워크플로를 구축하고 배포하려는 경우 Pipelines을 사용하여 SageMaker AI 작업을 관리하고 배포하는 워크플로를 만들 수 있습니다. Pipelines을 사용하면 SageMaker AI 데이터 준비, 모델 훈련 및 모델 배포 작업을 관리하는 워크플로를 구축할 수 있습니다. Pipelines을 사용하여 SageMaker AI가 제공하는 퍼스트 파티 알고리즘을 사용할 수 있습니다. Pipelines에 대한 자세한 내용은 [SageMaker Pipelines](https://docs.aws.amazon.com/sagemaker/latest/dg/pipelines.html)을 참조하세요.

데이터 흐름에서 Pipelines으로 하나 이상의 단계를 내보내는 경우 Data Wrangler는 파이프라인을 정의, 인스턴스화, 실행, 관리하는 데 사용할 수 있는 Jupyter Notebook을 만듭니다.

### Jupyter notebook을 사용하여 파이프라인 생성하기
<a name="data-wrangler-pipelines-notebook"></a>

다음 절차를 사용하여 Jupyter Notebook을 만들어 Data Wrangler 흐름을 Pipelines으로 내보냅니다.

다음 절차를 사용하여 Jupyter notebook을 생성하고 이를 실행하여 Data Wrangler 흐름을 Pipelines으로 내보냅니다.

1. 내보내고자 하는 노드 옆에 있는 **\$1**를 선택합니다.

1. **Export to(내보내기)**를 선택합니다.

1. **(Jupyter Notebook을 통해) Pipelines**을 선택합니다.

1. Jupyter notebook을 실행합니다.

![\[Data Wrangler 콘솔에서 Data Wrangler 흐름을 내보내는 방법을 보여주는 데이터 흐름 예시입니다.\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/images/studio/mohave/data-wrangler-destination-nodes-photo-export-to.png)


Data Wrangler가 생성하는 Jupyter notebook을 사용하여 파이프라인을 정의할 수 있습니다. 파이프라인에는 Data Wrangler 흐름으로 정의되는 데이터 처리 단계가 포함됩니다.

노트북의 다음 코드에 있는 `steps` 목록에 단계를 추가하여 파이프라인에 다른 단계를 추가할 수 있습니다.

```
pipeline = Pipeline(
    name=pipeline_name,
    parameters=[instance_type, instance_count],
    steps=[step_process], #Add more steps to this list to run in your Pipeline
)
```

파이프라인 정의에 대한 자세한 내용은 [Define SageMaker AI Pipeline](https://docs.aws.amazon.com/sagemaker/latest/dg/define-pipeline.html)을 참조하세요.

## 추론 엔드포인트로 내보내기
<a name="data-wrangler-data-export-inference"></a>

Data Wrangler 흐름을 사용하여 Data Wrangler 흐름에서 SageMaker AI 직렬 추론 파이프라인을 생성함으로써 추론 시점에 데이터를 처리합니다. 추론 파이프라인은 훈련된 모델이 새 데이터에 대해 예측하도록 하는 일련의 단계입니다. Data Wrangler 내의 직렬 추론 파이프라인은 원시 데이터를 변환하여 예측을 위해 기계 학습 모델에 제공합니다. Studio Classic 내 Jupyter Notebook에서 추론 파이프라인을 만들고, 실행하고, 관리합니다. 노트북에 액세스하는 방법에 대한 자세한 내용은 [Jupyter notebook을 사용하여 추론 엔드포인트 생성하기](#data-wrangler-inference-notebook) 섹션을 참조하세요.

노트북 내에서 기계 학습 모델을 훈련시키거나 이미 훈련한 모델을 지정할 수 있습니다. Amazon SageMaker Autopilot 또는 XGBoost를 사용하여 Data Wrangler 흐름에서 변환한 데이터를 사용하여 모델을 훈련할 수 있습니다.

파이프라인은 배치 추론 또는 실시간 추론을 수행하는 기능을 제공합니다. SageMaker Model Registry에 Data Wrangler 흐름을 추가할 수도 있습니다. 호스팅 모델에 대한 자세한 내용은 [다중 모델 엔드포인트](multi-model-endpoints.md) 섹션을 참조하세요.

**중요**  
다음과 같은 변환이 있는 경우 Data Wrangler 흐름을 추론 엔드포인트로 내보낼 수 없습니다.  
조인
연결
그룹화 기준
이전 변환을 사용하여 데이터를 준비해야 하는 경우 다음 절차에 따르세요.  
Data Wrangler 흐름을 생성합니다.
지원되지 않는 이전 변환을 적용합니다.
Amazon S3 버킷으로 데이터를 내보냅니다.
별도의 Data Wrangler 흐름을 생성합니다.
이전 흐름에서 내보낸 데이터를 가져옵니다.
나머지 변환을 적용합니다.
당사에서 제공하는 Jupyter notebook을 사용하여 직렬 추론 파이프라인을 생성합니다.
Amazon S3 버킷으로 데이터를 내보내는 방법에 대한 자세한 내용은 [Amazon S3로 내보내기](#data-wrangler-data-export-s3) 섹션을 참조하세요. 직렬 추론 파이프라인을 생성하는 데 사용되는 Jupyter notebook을 여는 방법에 대한 자세한 내용은 [Jupyter notebook을 사용하여 추론 엔드포인트 생성하기](#data-wrangler-inference-notebook) 섹션을 참조하세요.

Data Wrangler는 추론 시 데이터를 제거하는 변환을 무시합니다. 예를 들어 **누락 삭제** 구성을 사용하는 경우 Data Wrangler는 [누락된 값 처리](data-wrangler-transform.md#data-wrangler-transform-handle-missing) 변환을 무시합니다.

변환을 전체 데이터세트에 재구성한 경우 변환은 추론 파이프라인으로 이어집니다. 예를 들어 중앙값을 사용하여 누락된 값을 대입한 경우 변환 재구성의 중앙값이 추론 요청에 적용됩니다. Jupyter notebook을 사용하거나 추론 파이프라인으로 데이터를 내보내는 경우 Data Wrangler 흐름에서 변환을 재구성할 수 있습니다. 변환 재구성에 대한 자세한 내용은 [변환을 전체 데이터세트로 재구성하고 내보내기](#data-wrangler-data-export-fit-transform) 섹션을 참조하세요.

직렬 추론 파이프라인은 입력 및 출력 문자열에 대해 다음 데이터 형식을 지원합니다. 각 데이터 형식에는 일련의 요구 사항이 있습니다.

**지원되는 데이터 형식**
+ `text/csv` – CSV 문자열의 데이터 형식
  + 문자열에는 헤더가 있을 수 없습니다.
  + 추론 파이프라인에 사용되는 특성은 훈련 데이터세트의 특성과 순서가 같아야 합니다.
  + 특성 간에는 쉼표 구분 기호가 있어야 합니다.
  + 레코드는 줄 바꿈 문자로 구분해야 합니다.

  다음은 추론 요청에 제공할 수 있는 유효한 형식의 CSV 문자열의 예입니다.

  ```
  abc,0.0,"Doe, John",12345\ndef,1.1,"Doe, Jane",67890                    
  ```
+ `application/json` – JSON 문자열의 데이터 형식
  + 추론 파이프라인용 데이터세트에 사용되는 특성은 훈련 데이터세트의 특성과 순서가 같아야 합니다.
  + 데이터에는 특정 스키마가 있어야 합니다. 스키마를 일련의 `features`이 있는 단일 `instances` 객체로 정의합니다. 각 `features` 객체는 관측치를 나타냅니다.

  다음은 추론 요청에서 제공할 수 있는 유효한 형식의 JSON 문자열의 예입니다.

  ```
  {
      "instances": [
          {
              "features": ["abc", 0.0, "Doe, John", 12345]
          },
          {
              "features": ["def", 1.1, "Doe, Jane", 67890]
          }
      ]
  }
  ```

### Jupyter notebook을 사용하여 추론 엔드포인트 생성하기
<a name="data-wrangler-inference-notebook"></a>

Data Wrangler 흐름을 내보내 추론 파이프라인을 생성하려면 다음 절차를 따르세요.

Jupyter notebook을 사용하여 추론 파이프라인을 만들려면 다음을 수행하세요.

1. 내보내고자 하는 노드 옆에 있는 **\$1**를 선택합니다.

1. **Export to(내보내기)**를 선택합니다.

1. **(Jupyter Notebook을 통해) SageMaker AI 추론 파이프라인**을 선택합니다.

1. Jupyter notebook을 실행합니다.

Jupyter notebook을 실행하면 추론 흐름 아티팩트가 생성됩니다. 추론 흐름 아티팩트는 직렬 추론 파이프라인을 생성하는 데 사용되는 추가 메타데이터가 포함된 Data Wrangler 흐름 파일입니다. 내보내는 노드에는 이전 노드의 모든 변환이 포함됩니다.

**중요**  
Data Wrangler가 추론 파이프라인을 실행하려면 추론 흐름 아티팩트가 필요합니다. 자체 흐름 파일을 아티팩트로 사용할 수 없습니다. 이전 절차를 사용하여 생성해야 합니다.

## Python 코드로 내보내기
<a name="data-wrangler-data-export-python-code"></a>

데이터 흐름의 모든 단계를 데이터 처리 워크흐름에 수동으로 통합할 수 있는 Python 파일로 내보내려면 다음 절차를 따르세요.

다음 절차에 따라 Jupyter notebook을 생성하고 실행하여 Data Wrangler 흐름을 Python Code로 내보냅니다.

1. 내보내고자 하는 노드 옆에 있는 **\$1**를 선택합니다.

1. **내보낼 위치**를 선택합니다.

1. **Python 코드**를 선택합니다.

1. Jupyter notebook을 실행합니다.

![\[Data Wrangler 콘솔에서 Data Wrangler 흐름을 내보내는 방법을 보여주는 데이터 흐름 예시입니다.\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/images/studio/mohave/data-wrangler-destination-nodes-photo-export-to.png)


파이프라인에서 실행되도록 Python 스크립트를 구성해야 할 수도 있습니다. 예를 들어 Spark 환경을 실행하는 경우 AWS 리소스에 액세스할 권한이 있는 환경에서 스크립트를 실행하고 있는지 확인합니다.

## Amazon SageMaker 특성 저장소로 내보내기
<a name="data-wrangler-data-export-feature-store"></a>

Data Wrangler를 사용하여 생성한 특성을 Amazon SageMaker 특성 저장소로 내보낼 수 있습니다. 특성은 데이터세트의 열입니다. 특성 저장소는 특성 및 관련 메타데이터를 위한 중앙 집중식 저장소입니다. 특성 저장소를 사용하여 기계 학습(ML) 개발을 위해 큐레이션된 데이터를 생성, 공유, 관리할 수 있습니다. 중앙 집중식 저장소를 사용하면 데이터를 더 쉽게 검색하고 재사용할 수 있습니다. 특성 저장소에 대한 자세한 내용은 [Amazon SageMaker 특성 저장소](https://docs.aws.amazon.com/sagemaker/latest/dg/feature-store.html)를 참조하세요.

특성 저장소의 핵심 개념은 특성 그룹입니다. 특성 그룹은 특성, 특성 레코드(관측치), 관련 메타데이터의 모음입니다. 데이터베이스의 테이블과 유사합니다.

Data Wrangler를 사용하여 다음 중 하나를 수행할 수 있습니다.
+ 기존 특성 그룹을 새 레코드로 업데이트합니다. 레코드는 데이터세트의 관측치입니다.
+ Data Wrangler 흐름의 노드에서 새 특성 그룹을 생성합니다. Data Wrangler는 데이터세트의 관측치를 특성 그룹의 레코드로 추가합니다.

기존 특성 그룹을 업데이트하는 경우 데이터세트의 스키마가 특성 그룹의 스키마와 일치해야 합니다. 특성 그룹의 모든 레코드가 데이터세트의 관측치로 바뀝니다.

Jupyter notebook 또는 대상 노드를 사용하여 데이터세트의 관측치로 특성 그룹을 업데이트할 수 있습니다.

Iceberg 테이블 형식의 특성 그룹에 사용자 지정 오프라인 저장소 암호화 키가 있는 경우 이를 사용할 Amazon SageMaker Processing 작업 권한을 사용 중인 IAM에 부여해야 합니다. 최소한, Amazon S3에 쓰는 데이터를 암호화할 권한을 부여해야 합니다. 권한을 부여하려면 IAM 역할에 [GenerateDatakey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html)를 사용할 권한을 부여하세요. IAM 역할에 AWS KMS 키 사용 권한을 부여하는 방법에 대한 자세한 내용은 섹션을 참조하세요. [https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html) 

------
#### [ Destination Node ]

특성 그룹에 수행한 일련의 데이터 처리 단계를 출력하려는 경우 대상 노드를 생성할 수 있습니다. 대상 노드를 만들고 실행하면 Data Wrangler가 데이터로 특성 그룹을 업데이트합니다. 대상 노드 UI에서 새 특성 그룹을 생성할 수도 있습니다. 대상 노드를 생성한 후 데이터를 출력하는 처리 작업을 생성합니다. 처리 작업은 Amazon SageMaker 처리 작업입니다. 대상 노드를 사용 중인 경우 특성 그룹으로 변환한 데이터를 출력하는 데 필요한 계산 리소스가 실행됩니다.

대상 노드를 사용하여 Data Wrangler 흐름에서 수행한 일부 변환 또는 모든 변환을 내보낼 수 있습니다.

다음 절차에 따라 대상 노드를 만들어 데이터세트의 관측치로 특성 그룹을 업데이트하세요.

대상 노드를 사용하여 특성 그룹을 업데이트하려면 다음을 수행하세요.
**참고**  
Data Wrangler 흐름에서 **작업 생성**을 선택하여 처리 작업을 사용하여 특성 그룹을 업데이트하는 지침을 볼 수 있습니다.

1. 내보내려는 데이터 세트가 들어 있는 노드 옆의 **\$1** 기호를 선택합니다.

1. **대상 추가**에서 **SageMaker AI Feature Store**를 선택합니다.  
![\[Data Wrangler 콘솔에서 대상을 추가하는 방법을 보여주는 데이터 흐름 예시입니다.\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/images/studio/mohave/feature-store-destination-node-selection.png)

1. 특성 그룹을 선택(두 번 클릭)합니다. Data Wrangler는 특성 그룹의 스키마가 특성 그룹 업데이트에 사용하는 데이터의 스키마와 일치하는지 확인합니다.

1. (선택 사항) 온라인 저장소와 오프라인 저장소가 모두 있는 특성 그룹에 대해 **오프라인 저장소로만 내보내기**를 선택합니다. 이 옵션을 선택하면 데이터세트의 관측치로만 오프라인 저장소가 업데이트됩니다.

1. Data Wrangler가 데이터세트의 스키마를 검증한 후 **추가**를 선택합니다.

데이터세트의 데이터로 새 특성 그룹을 생성하려면 다음 절차에 따르세요.

다음 방법 중 하나로 특성 그룹을 저장할 수 있습니다.
+ 온라인 – 레코드를 실시간으로 조회할 수 있는 특성 그룹을 위한 지연 시간이 짧고 가용성이 높은 캐시입니다. 온라인 저장소를 사용하면 특성 그룹 내 레코드의 최신 값에 빠르게 액세스할 수 있습니다.
+ 오프라인 – Amazon S3 버킷에 특성 그룹의 데이터를 저장합니다. (1초 미만으로) 짧은 지연 시간의 읽기가 필요하지 않을 때는 데이터를 오프라인으로 저장할 수 있습니다. 데이터 탐색, 모델 훈련, 배치 추론에 사용되는 특성에는 오프라인 저장소를 사용하여 사용할 수 있습니다.
+ 온라인 및 오프라인 모두 – 온라인 저장소와 오프라인 저장소에 모두 데이터를 저장합니다.

대상 노드를 사용하여 특성 그룹을 생성하려면 다음을 수행하세요.

1. 내보내려는 데이터세트가 들어 있는 노드 옆의 **\$1** 기호를 선택합니다.

1. **대상 추가**에서 **SageMaker AI Feature Store**를 선택합니다.

1. **특성 그룹 생성**을 선택합니다.

1. 데이터세트에 이벤트 시간 열이 없는 경우 다음 대화 상자에서 **‘EventTime' 열 생성**을 선택합니다.

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

1. **JSON 스키마 복사**를 선택합니다. 특성 그룹을 생성할 때 스키마를 특성 정의에 붙여넣습니다.

1. **생성(Create)**을 선택합니다.

1. **특성 그룹 이름**에는 특성 그룹의 이름을 지정합니다.

1. **설명(선택 사항)**에는 특성 그룹을 더 쉽게 검색할 수 있도록 설명을 지정합니다.

1. 온라인 저장소용 특성 그룹을 생성하려면 다음을 수행합니다.

   1. **온라인으로 스토리지 활성화**를 선택합니다.

   1. **온라인 스토어 암호화 키**에서 AWS 관리형 암호화 키 또는 자체 암호화 키를 지정합니다.

1. 오프라인 저장소의 특성 그룹을 생성하려면 다음을 수행합니다.

   1. **오프라인으로 스토리지 활성화**를 선택합니다. 다음 필드의 값을 지정합니다.
      + **S3 버킷 이름** – 특성 그룹을 저장하는 Amazon S3 버킷의 이름입니다.
      + (선택 사항) **데이터세트 디렉터리 이름** – 특성 그룹 저장에 사용하는 Amazon S3 접두사입니다.
      + **IAM 역할 ARN** – 특성 저장소에 대한 액세스 권한이 있는 IAM 역할입니다.
      + **테이블 형식** – 오프라인 저장소의 테이블 형식입니다. **Glue** 또는 **Iceberg**를 지정할 수 있습니다. 기본 형식은 **Glue**입니다.
      + **오프라인 저장소 암호화 키** – 기본적으로, 특성 저장소는 AWS Key Management Service 관리형 키를 사용하지만 이 필드를 사용하여 자체 키를 지정할 수 있습니다.

   1. 다음 필드의 값을 지정합니다.
      + **S3 버킷 이름** – 특성 그룹을 저장하는 버킷의 이름입니다.
      + **(선택 사항) 데이터세트 디렉터리 이름** – 특성 그룹을 저장하는 데 사용하는 Amazon S3 접두사입니다.
      + **IAM 역할 ARN** – 특성 저장소에 대한 액세스 권한이 있는 IAM 역할입니다.
      + **오프라인 저장소 암호화 키** – 기본적으로, 특성 저장소는 AWS 관리형 키를 사용하지만 이 필드를 사용하여 자체 키를 지정할 수 있습니다.

1. **계속**을 선택합니다.

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

1. 창에서 자리 표시자 대괄호를 제거합니다.

1. 6단계의 JSON 텍스트를 붙여넣습니다.

1. **계속**을 선택합니다.

1. **레코드 식별자 특성 이름**의 경우 데이터세트의 각 레코드에 대해 고유한 식별자가 있는 데이터세트의 열을 선택합니다.

1. **이벤트 시간 특성 이름**의 경우 타임스탬프 값이 있는 열을 선택합니다.

1. **계속**을 선택합니다.

1. (선택 사항) 특성 그룹을 더 쉽게 찾을 수 있도록 태그를 추가합니다.

1. **계속**을 선택합니다.

1. **특성 그룹 생성**을 선택합니다.

1. Data Wrangler 흐름으로 돌아가서 **특성 그룹** 검색창 옆에 있는 새로 고침 아이콘을 선택합니다.

**참고**  
흐름 내에서 특성 그룹의 대상 노드를 이미 생성한 경우에는 동일한 특성 그룹에 대해 다른 대상 노드를 생성할 수 없습니다. 동일한 특성 그룹에 대해 다른 대상 노드를 생성하려면 다른 흐름 파일을 생성해야 합니다.

Data Wrangler 작업을 생성하려면 다음 절차에 따르세요.

**데이터 흐름** 페이지에서 작업을 만들고 내보내려는 대상 노드를 선택합니다.

1. **작업 생성**을 선택합니다. 다음 이미지는 **작업 생성**을 선택한 후 나타나는 창을 보여줍니다.

1. **작업 이름**에는 내보내기 작업의 이름을 지정합니다.

1. 내보내려는 대상 노드를 선택합니다.

1. (선택 사항) **출력 KMS 키**에서 AWS KMS 키의 ARN, ID 또는 별칭을 지정합니다. KMS 키는 암호화 키입니다. 이 키를 사용하여 작업의 출력 데이터를 암호화할 수 있습니다. AWS KMS 키에 대한 자세한 내용은 단원을 참조하십시오[AWS Key Management Service](https://docs.aws.amazon.com//kms/latest/developerguide/overview.html).

1. 다음 이미지는 **작업 구성** 탭이 열려 있는 **작업 구성** 페이지를 보여줍니다.  
![\[Data Wrangler 콘솔의 데이터 흐름 만들기 작업 페이지의 예시입니다.\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/images/studio/mohave/destination-nodes/destination-nodes-configure-job.png)

   (선택 사항) **훈련된 파라미터**에서 다음을 수행했다면 **재구성**을 선택하세요.
   + 샘플링된 데이터세트
   + 데이터를 사용하여 데이터세트에 새 열을 만드는 변환을 적용했습니다.

   전체 데이터세트에 대해 수행한 변환을 재구성하는 방법에 대한 자세한 내용은 [변환을 전체 데이터세트로 재구성하고 내보내기](#data-wrangler-data-export-fit-transform) 섹션을 참조하세요.

1. **작업 구성**을 선택합니다.

1. (선택 사항) Data Wrangler 작업을 구성합니다. 다음과 같이 구성할 수 있습니다.
   + **작업 구성**
   + **Spark 메모리 구성**
   + **네트워크 구성**
   + **Tags**
   + **파라미터**
   + **일정 연결**

1. **실행**을 선택합니다.

------
#### [ Jupyter notebook ]

Jupyter notebook에 대해 다음 절차에 따라 Amazon SageMaker 특성 저장소로 내보냅니다.

다음 절차에 따라 Jupyter notebook을 생성하고 실행하여 Data Wrangler 흐름을 특성 저장소로 내보냅니다.

1. 내보내고자 하는 노드 옆에 있는 **\$1**를 선택합니다.

1. **내보낼 위치**를 선택합니다.

1. **(Jupyter notebook을 통해) Amazon SageMaker 특성 저장소**를 선택합니다.

1. Jupyter notebook을 실행합니다.

![\[Data Wrangler 콘솔에서 Data Wrangler 흐름을 내보내는 방법을 보여주는 데이터 흐름 예시입니다.\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/images/studio/mohave/data-wrangler-destination-nodes-photo-export-to.png)


Jupyter notebook을 실행하면 Data Wrangler 작업이 실행됩니다. Data Wrangler 작업을 실행하면 SageMaker AI 처리 작업이 시작됩니다. 처리 작업에서는 흐름을 온라인 및 오프라인 특성 저장소에 수집합니다.

**중요**  
이 노트북을 실행하는 데 사용하는 IAM 역할에는 AWS 관리형 정책인 `AmazonSageMakerFullAccess` 및 `AmazonSageMakerFeatureStoreAccess`가 연결되어 있어야 합니다.

특성 그룹을 생성할 때 온라인 또는 오프라인 특성 저장소 하나만 활성화하면 됩니다. 둘 다 활성화할 수도 있습니다. 온라인 저장소 생성을 비활성화하려면 `EnableOnlineStore`를 `False`로 설정합니다.

```
# Online Store Configuration
online_store_config = {
    "EnableOnlineStore": False
}
```

노트북은 내보내는 데이터 프레임의 열 이름과 유형을 사용하여 특성 그룹을 생성하는 데 사용되는 특성 그룹 스키마를 생성합니다. 특성 그룹은 레코드를 설명하기 위해 특성 저장소에서 정의된 특성으로 구성된 그룹입니다. 특성 그룹은 특성 그룹에 포함된 스키마와 특성을 정의합니다. 특성 그룹 정의는 특성 목록, 레코드 식별자 특성 이름, 이벤트 시간 특성 이름, 온라인 저장소와 오프라인 저장소의 구성으로 이루어집니다.

특성 그룹의 각 특성은 문자열, 분수 또는 정수 유형 중 하나를 가질 수 있습니다.****** 내보낸 데이터 프레임의 열이 이러한 유형에 속하지 않는 경우 기본값은 `String`입니다.

다음은 특성 그룹 스키마 예제입니다.

```
column_schema = [
    {
        "name": "Height",
        "type": "long"
    },
    {
        "name": "Input",
        "type": "string"
    },
    {
        "name": "Output",
        "type": "string"
    },
    {
        "name": "Sum",
        "type": "string"
    },
    {
        "name": "Time",
        "type": "string"
    }
]
```

또한 레코드 식별자 이름과 이벤트 시간 특성 이름을 지정해야 합니다.
+ 레코드 식별자 이름은 특성 저장소에 정의된 레코드를 고유하게 식별하는 값을 가진 특성의 이름입니다.** 식별자 값마다 최신 레코드만 온라인 저장소에 저장됩니다. 레코드 식별자 특성 이름은 특성 정의 이름 중 하나여야 합니다.
+ 이벤트 시간 특성 이름은 특성 그룹에 레코드의 `EventTime`을 저장하는 특성의 이름입니다.** `EventTime`은 특성 내 레코드의 생성 또는 업데이트에 해당하는 새 이벤트가 발생한 시점을 나타냅니다. 특성 그룹의 모든 레코드에는 그에 해당하는 `EventTime`이 있어야 합니다.

노트북은 이러한 구성을 사용하여 특성 그룹을 생성하고 데이터를 대규모로 처리한 다음, 처리된 데이터를 온라인 및 오프라인 특성 저장소에 수집합니다. 자세히 알아보려면 [데이터 소스 및 수집](https://docs.aws.amazon.com/sagemaker/latest/dg/feature-store-ingest-data.html)을 참조하세요.

------

노트북은 이러한 구성을 사용하여 특성 그룹을 생성하고 데이터를 대규모로 처리한 다음, 처리된 데이터를 온라인 및 오프라인 특성 저장소에 수집합니다. 자세히 알아보려면 [데이터 소스 및 수집](https://docs.aws.amazon.com/sagemaker/latest/dg/feature-store-ingest-data.html)을 참조하세요.

## 변환을 전체 데이터세트로 재구성하고 내보내기
<a name="data-wrangler-data-export-fit-transform"></a>

데이터를 가져올 때 Data Wrangler는 데이터 샘플을 사용하여 인코딩을 적용합니다. 기본적으로, Data Wrangler는 처음 50,000개 행을 샘플로 사용하지만 전체 데이터세트를 가져오거나 다른 샘플링 방법을 사용할 수 있습니다. 자세한 내용은 [가져오기](data-wrangler-import.md) 단원을 참조하세요.

다음 변환은 데이터를 사용하여 데이터세트에 열을 생성합니다.
+ [카테고리 인코딩](data-wrangler-transform.md#data-wrangler-transform-cat-encode)
+ [텍스트 특성 추출](data-wrangler-transform.md#data-wrangler-transform-featurize-text)
+ [이상치 처리하기](data-wrangler-transform.md#data-wrangler-transform-handle-outlier)
+ [누락된 값 처리](data-wrangler-transform.md#data-wrangler-transform-handle-missing)

샘플링을 사용하여 데이터를 가져온 경우 이전 변환은 샘플의 데이터만 사용하여 열을 생성합니다. 변환에서 관련 데이터를 모두 사용하지는 않았을 수도 있습니다. 예를 들어 **카테고리 인코딩** 변환을 사용하는 경우 전체 데이터세트에 샘플에는 없는 카테고리가 있었을 수 있습니다.

대상 노드나 Jupyter notebook을 사용하여 변환을 전체 데이터세트에 맞춰 재구성할 수 있습니다. Data Wrangler는 흐름의 변환을 내보낼 때 SageMaker Processing 작업을 생성합니다. 처리 작업이 완료될 때 Data Wrangler는 기본 Amazon S3 위치 또는 사용자가 지정한 S3 위치에 다음 파일을 저장합니다.
+ 데이터세트에 맞게 재구성되는 변환을 지정하는 Data Wrangler 흐름 파일
+ 재구성 변환이 적용된 데이터세트

Data Wrangler 내에서 Data Wrangler 흐름 파일을 열고 변환을 다른 데이터세트에 적용할 수 있습니다. 예를 들어 훈련 데이터세트에 변환을 적용한 경우 Data Wrangler 흐름 파일을 열고 사용하여 추론에 사용되는 데이터세트에 변환을 적용할 수 있습니다.

대상 노드를 사용하여 변환을 재구성하고 내보내는 방법에 대한 자세한 내용은 다음 페이지를 참조하세요.
+ [Amazon S3로 내보내기](#data-wrangler-data-export-s3)
+ [Amazon SageMaker 특성 저장소로 내보내기](#data-wrangler-data-export-feature-store)

다음 절차에 따라 Jupyter notebook을 실행하여 변환을 재구성하고 데이터를 내보냅니다.

Jupyter notebook을 실행하고 변환을 재구성하고 Data Wrangler 흐름을 내보내려면 다음을 수행하세요.

1. 내보내고자 하는 노드 옆에 있는 **\$1**를 선택합니다.

1. **내보낼 위치**를 선택합니다.

1. 데이터를 내보낼 위치를 선택합니다.

1. `refit_trained_params` 객체의 경우 `refit`을 `True`로 설정합니다.

1. `output_flow` 필드의 경우 재구성 변환이 포함된 출력 흐름 파일의 이름을 지정합니다.

1. Jupyter notebook을 실행합니다.

## 새 데이터를 자동으로 처리하는 일정을 생성합니다.
<a name="data-wrangler-data-export-schedule-job"></a>

데이터를 주기적으로 처리하는 경우 처리 작업을 자동으로 실행하는 일정을 생성할 수 있습니다. 예를 들어 새 데이터를 받을 때 처리 작업을 자동으로 실행하는 일정을 생성할 수 있습니다. 처리 작업에 대한 자세한 내용은 [Amazon S3로 내보내기](#data-wrangler-data-export-s3) 및 [Amazon SageMaker 특성 저장소로 내보내기](#data-wrangler-data-export-feature-store) 섹션을 참조하세요.

작업을 생성할 때는 작업을 생성할 권한이 있는 IAM 역할을 지정해야 합니다. 기본적으로 Data Wrangler에 액세스하는 데 사용하는 IAM 역할은 `SageMakerExecutionRole`입니다.

다음 권한을 통해 Data Wrangler가 EventBridge에 액세스하고 EventBridge가 처리 작업을 실행하도록 할 수 있습니다.
+ Data Wrangler에 EventBridge 사용 권한을 제공하는 Amazon SageMaker Studio Classic 실행 역할에 다음 AWS 관리형 정책을 추가합니다.

  ```
  arn:aws:iam::aws:policy/AmazonEventBridgeFullAccess
  ```

  정책에 대한 자세한 내용은 [EventBridge의AWS 관리형 정책](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-use-identity-based.html#eb-full-access-policy)을 참조하세요.
+ Data Wrangler에서 작업을 생성할 때 지정하는 IAM 역할에 다음 정책을 추가합니다.

------
#### [ JSON ]

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
              "Effect": "Allow",
              "Action": "sagemaker:StartPipelineExecution",
              "Resource": "arn:aws:sagemaker:us-east-1:111122223333:pipeline/data-wrangler-*"
          }
      ]
  }
  ```

------

  기본 IAM 역할을 사용하는 경우 Amazon SageMaker Studio Classic 실행 역할에 이전 정책을 추가합니다.

  다음 신뢰 정책을 이 역할에 추가하여 EventBridge가 신뢰 정책을 받아들이도록 합니다.

  ```
  {
      "Effect": "Allow",
      "Principal": {
          "Service": "events.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
  }
  ```

**중요**  
일정을 생성하면 Data Wrangler는 EventBridge에 `eventRule`을 생성합니다. 생성한 이벤트 규칙과 처리 작업 실행에 사용되는 인스턴스에 모두 요금이 부과됩니다.  
EventBridge 요금에 대한 자세한 내용은 [Amazon EventBridge 요금](https://aws.amazon.com/eventbridge/pricing/)을 참조하세요. 처리 작업 요금에 대한 자세한 내용은 [Amazon SageMaker 요금](https://aws.amazon.com/sagemaker/pricing/)을 참조하세요.

다음 방법 중 하나를 사용하여 일정을 설정할 수 있습니다.
+ [CRON 표현식](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-create-rule-schedule.html)
**참고**  
Data Wrangler는 다음 표현식을 지원하지 않습니다.  
LW\$1
요일 약어
월 약어
+ [RATE 표현식](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-create-rule-schedule.html#eb-rate-expressions)
+ 반복 – 작업을 실행할 시간당 또는 일별 간격을 설정합니다.
+ 특정 시간 – 작업을 실행할 특정한 날과 시간을 설정합니다.

다음 섹션에는 작업 생성 절차가 나와 있습니다.

------
#### [ CRON ]

다음 절차에 따라 CRON 표현식으로 일정을 생성합니다.

CRON 표현식으로 일정을 지정하려면 다음을 수행하세요.

1. Data Wrangler 흐름을 엽니다.

1. **작업 생성**을 선택합니다.

1. (선택 사항) **출력 KMS 키**에서 작업 출력을 구성할 AWS KMS 키를 지정합니다.

1. **다음, 2. 작업 구성**을 선택합니다.

1. **일정 연결**을 선택합니다.

1. **새 예약 생성**을 선택합니다.

1. **일정 이름**에는 일정의 이름을 지정합니다.

1. **실행 빈도**에는 **CRON**을 선택합니다.

1. 유효한 CRON 표현식을 지정합니다.

1. **생성(Create)**을 선택합니다.

1. (선택 사항) 추가 일정에 따라 작업을 실행하려면 **다른 일정 추가**를 선택합니다.
**참고**  
최대 두 개의 일정을 연결할 수 있습니다. 일정은 독립적이며 시간이 겹치지 않는 한 서로 영향을 주지 않습니다.

1. 다음 중 하나를 선택합니다.
   + **지금 예약 및 실행** – Data Wrangler를 사용하면 작업이 즉시 실행되고 이후에 일정에 따라 실행됩니다.
   + **일정만** – Data Wrangler를 사용하면 지정한 일정에 따라서만 작업이 실행됩니다.

1. **실행**을 선택합니다.

------
#### [ RATE ]

다음 절차에 따라 RATE 표현식으로 일정을 생성합니다.

RATE 표현식으로 일정을 지정하려면 다음을 수행하세요.

1. Data Wrangler 흐름을 엽니다.

1. **작업 생성**을 선택합니다.

1. (선택 사항) **출력 KMS 키**에서 작업의 출력을 구성할 AWS KMS 키를 지정합니다.

1. **다음, 2. 작업 구성**을 선택합니다.

1. **일정 연결**을 선택합니다.

1. **새 예약 생성**을 선택합니다.

1. **일정 이름**에는 일정의 이름을 지정합니다.

1. **실행 빈도**에는 **속도**를 선택합니다.

1. **값**에는 정수를 지정합니다.

1. **단위**에는 다음 중 하나를 선택합니다.
   + **분**
   + **시간**
   + **일**

1. **생성(Create)**을 선택합니다.

1. (선택 사항) 추가 일정에 따라 작업을 실행하려면 **다른 일정 추가**를 선택합니다.
**참고**  
최대 두 개의 일정을 연결할 수 있습니다. 일정은 독립적이며 시간이 겹치지 않는 한 서로 영향을 주지 않습니다.

1. 다음 중 하나를 선택합니다.
   + **지금 예약 및 실행** – Data Wrangler를 사용하면 작업이 즉시 실행되고 이후에 일정에 따라 실행됩니다.
   + **일정만** – Data Wrangler를 사용하면 지정한 일정에 따라서만 작업이 실행됩니다.

1. **실행**을 선택합니다.

------
#### [ Recurring ]

작업을 반복적으로 실행하는 일정을 만들려면 다음 절차에 따르세요.

CRON 표현식으로 일정을 지정하려면 다음을 수행하세요.

1. Data Wrangler 흐름을 엽니다.

1. **작업 생성**을 선택합니다.

1. (선택 사항) **출력 KMS 키**에서 작업 출력을 구성할 AWS KMS 키를 지정합니다.

1. **다음, 2. 작업 구성**을 선택합니다.

1. **일정 연결**을 선택합니다.

1. **새 예약 생성**을 선택합니다.

1. **일정 이름**에는 일정의 이름을 지정합니다.

1. **실행 빈도**의 경우 **반복**이 기본적으로 선택되어 있는지 확인하세요.

1. **x시간마다** 하루 동안 작업이 실행되는 시간당 빈도를 지정합니다. 유효한 값은 **1** 및 **23**을 포함한 범위의 정수입니다.

1. **지정일**에는 다음 옵션 중 하나를 선택합니다.
   + **매일**
   + **주말**
   + **평일**
   + **요일 선택**

   1. (선택 사항) **요일 선택**을 선택한 경우 작업을 실행할 요일을 선택합니다.
**참고**  
일정이 매일 재설정됩니다. 작업이 5시간마다 실행되도록 예약하면 하루 중 다음 시간에 작업이 실행됩니다.  
00:00
05:00
10:00
15:00
20:00

1. **생성(Create)**을 선택합니다.

1. (선택 사항) 추가 일정에 따라 작업을 실행하려면 **다른 일정 추가**를 선택합니다.
**참고**  
최대 두 개의 일정을 연결할 수 있습니다. 일정은 독립적이며 시간이 겹치지 않는 한 서로 영향을 주지 않습니다.

1. 다음 중 하나를 선택합니다.
   + **지금 예약 및 실행** – Data Wrangler를 사용하면 작업이 즉시 실행되고 이후에 일정에 따라 실행됩니다.
   + **일정만** – Data Wrangler를 사용하면 지정한 일정에 따라서만 작업이 실행됩니다.

1. **실행**을 선택합니다.

------
#### [ Specific time ]

특정 시간에 작업을 실행하는 일정을 생성하려면 다음 절차에 따르세요.

CRON 표현식으로 일정을 지정하려면 다음을 수행하세요.

1. Data Wrangler 흐름을 엽니다.

1. **작업 생성**을 선택합니다.

1. (선택 사항) **출력 KMS 키**에서 작업 출력을 구성할 AWS KMS 키를 지정합니다.

1. **다음, 2. 작업 구성**을 선택합니다.

1. **일정 연결**을 선택합니다.

1. **새 예약 생성**을 선택합니다.

1. **일정 이름**에는 일정의 이름을 지정합니다.

1. **생성(Create)**을 선택합니다.

1. (선택 사항) 추가 일정에 따라 작업을 실행하려면 **다른 일정 추가**를 선택합니다.
**참고**  
최대 두 개의 일정을 연결할 수 있습니다. 일정은 독립적이며 시간이 겹치지 않는 한 서로 영향을 주지 않습니다.

1. 다음 중 하나를 선택합니다.
   + **지금 예약 및 실행** – Data Wrangler를 사용하면 작업이 즉시 실행되고 이후에 일정에 따라 실행됩니다.
   + **일정만** – Data Wrangler를 사용하면 지정한 일정에 따라서만 작업이 실행됩니다.

1. **실행**을 선택합니다.

------

Amazon SageMaker Studio Classic을 사용하여 실행하도록 예약된 작업을 볼 수 있습니다. 처리 작업은 Pipelines 내에서 실행됩니다. 각 처리 작업에는 자체적인 파이프라인이 있습니다. 파이프라인 내에서 처리 단계로 실행됩니다. 파이프라인 내에서 생성한 일정을 볼 수 있습니다. 파이프라인을 보는 방법에 대한 자세한 내용은 [파이프라인 세부 정보 보기](pipelines-studio-list.md) 섹션을 참조하세요.

예약한 작업을 보려면 다음 절차를 따르세요.

예약한 작업을 보려면 다음을 수행하세요.

1. Amazon SageMaker Studio Classic을 엽니다.

1. Pipelines 열기

1. 생성한 작업의 파이프라인을 확인합니다.

   작업을 실행 중인 파이프라인은 작업 이름을 접두사로 사용합니다. 예를 들어 `housing-data-feature-enginnering`이라는 작업을 생성한 경우 파이프라인의 이름은 `data-wrangler-housing-data-feature-engineering`입니다.

1. 작업이 포함된 파이프라인을 선택합니다.

1. 파이프라인의 상태를 확인합니다. **성공** **상태**인 파이프라인이 처리 작업을 성공적으로 실행했습니다.

처리 작업의 실행을 중지하려면 다음을 수행하세요.

처리 작업의 실행을 중지하려면 일정을 지정하는 이벤트 규칙을 삭제하세요. 이벤트 규칙을 삭제하면 일정과 관련된 모든 작업의 실행이 중지됩니다. 규칙 삭제에 대한 자세한 내용은 [Amazon EventBridge 규칙 비활성화 또는 삭제](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-delete-rule.html)를 참조하세요.

일정과 관련된 파이프라인도 중지하고 삭제할 수 있습니다. 파이프라인 중지에 대한 자세한 내용은 [StopPipelineExecution](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_StopPipelineExecution.html)을 참조하세요. 파이프라인 삭제에 대한 자세한 내용은 [DeletePipeline](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DeletePipeline.html#API_DeletePipeline_RequestSyntax)을 참조하세요.

# 데이터 인사이트를 얻기 위해 Amazon SageMaker Studio Classic 노트북의 대화형 데이터 준비 위젯 사용
<a name="data-wrangler-interactively-prepare-data-notebook"></a>

Data Wrangler 데이터 준비 위젯을 사용하여 데이터와 상호 작용하고, 시각화하고, 실행 가능한 인사이트를 탐색하고, 데이터 품질 문제를 해결할 수 있습니다.

Amazon SageMaker Studio Classic 노트북에서 데이터 준비 위젯에 액세스할 수 있습니다. 각 열에 대해 위젯은 분산을 더 잘 이해하는 데 도움이 되는 시각화를 생성합니다. 열에 데이터 품질 문제가 있는 경우 헤더에 경고가 표시됩니다.

데이터 품질 문제를 보려면 경고가 표시된 열 헤더를 선택합니다. 인사이트와 시각화에서 얻은 정보를 사용하여 위젯에 내장된 변환을 적용하여 문제를 해결하는 데 도움이 될 수 있습니다.

예를 들어 위젯은 고유한 값이 하나뿐인 열이 있음을 감지하여 경고를 표시할 수 있습니다. 경고에는 데이터세트에서 열을 삭제할 수 있는 옵션이 제공됩니다.

## 위젯 실행 시작하기
<a name="data-wrangler-interactively-prepare-data-notebook-getting-started"></a>

다음 정보를 이용하여 노트북 실행을 시작하는 데 도움이 될 수 있습니다.

Amazon SageMaker Studio Classic에서 노트북을 엽니다. 노트북을 여는 방법에 대한 자세한 내용은 [Amazon SageMaker Studio Classic 노트북 만들기 또는 열기](notebooks-create-open.md) 섹션을 참조하세요.

**중요**  
위젯을 실행하기 위해 노트북은 다음 이미지 중 하나를 사용해야 합니다.  
Python 3(데이터 과학)와 Python 3.7
Python 3(데이터 과학 2.0)와 Python 3.8
Python 3(데이터 과학 3.0)와 Python 3.10
SparkAnalytics 1.0
SparkAnalytics 2.0
기본 이미지에 대한 자세한 내용은 [Studio Classic 노트북에 사용할 수 있는 Amazon SageMaker 이미지](notebooks-available-images.md) 섹션을 참조하세요.

다음 코드를 사용하여 데이터 준비 위젯과 panda를 가져옵니다. 위젯은 pandas 데이터프레임을 사용하여 데이터를 분석합니다.

```
import pandas as pd
import sagemaker_datawrangler
```

다음 예제 코드는 `df`라는 데이터프레임에 파일을 로드합니다.

```
df = pd.read_csv("example-dataset.csv")
```

pandas 데이터프레임 객체로 로드할 수 있는 모든 형식의 데이터세트를 사용할 수 있습니다. pandas 형식에 대한 자세한 내용은 [IO 도구(텍스트, CSV, HDF5 등)](https://pandas.pydata.org/pandas-docs/stable/user_guide/io.html)를 참조하세요.

다음 셀은 `df` 변수를 실행하여 위젯을 시작합니다.

```
df
```

데이터프레임 상단에는 다음과 같은 옵션이 있습니다.
+ **Pandas 테이블 보기** - 대화형 시각화와 pandas 테이블 사이를 전환합니다.
+ **데이터세트의 모든 행을 사용하여 인사이트를 계산하세요. 전체 데이터세트를 사용하면 인사이트를 생성하는 데 걸리는 시간이 늘어날 수 있습니다.** - 옵션을 선택하지 않으면 Data Wrangler는 데이터세트의 처음 10,000개 행에 대한 인사이트를 계산합니다.

데이터프레임에는 데이터세트의 처음 1000개 행이 표시됩니다. 각 열 헤더에는 열의 특성을 보여주는 누적 막대 차트가 있습니다. 유효한 값, 잘못된 값, 누락된 값의 비율을 보여줍니다. 누적 막대 차트의 여러 부분을 마우스로 가리키면 계산된 백분율을 확인할 수 있습니다.

각 열의 헤더에는 시각화가 있습니다. 다음은 열에 포함할 수 있는 시각화 유형을 보여줍니다.
+ 카테고리 - 막대 차트
+ 숫자 - 히스토그램
+ 날짜시간 - 막대 차트
+ 텍스트 - 막대 차트

데이터 준비 위젯은 각 시각화에 대해 이상치를 주황색으로 강조 표시합니다.

열을 선택하면 측면 패널이 열립니다. 측면 패널에는 **인사이트** 탭이 표시됩니다. 이 패널에는 다음 유형의 값에 대한 개수가 표시됩니다.
+ 잘못된 값 - 유형이 열 유형과 일치하지 않는 값.
+ 누락된 값 - 누락된 값(예: `NaN` 또는 `None`).
+ 유효한 값 - 누락되거나 무효하지 않은 값.

숫자 열의 경우 **인사이트** 탭에는 다음과 같은 요약 통계가 표시됩니다.
+ 최소값 - 가장 작은 값입니다.
+ 최대값 - 가장 큰 값입니다.
+ 평균 - 값의 평균입니다.
+ 모드 - 가장 자주 나타나는 값입니다.
+ 표준 편차 - 값의 표준 편차입니다.

카테고리 열의 경우 **인사이트** 탭에는 다음과 같은 요약 통계가 표시됩니다.
+ 고유한 값 - 열에서 고유한 값의 수입니다.
+ 최고 - 가장 자주 나타나는 값입니다.

헤더에 경고 아이콘이 있는 열에는 데이터 품질 문제가 있습니다. 열을 선택하면 **데이터 품질** 탭이 열리고 이 탭을 사용하여 문제를 해결하는 데 도움이 되는 변환을 찾을 수 있습니다. 경고는 다음 심각도 수준 중 하나를 가집니다.
+ 낮음 - 분석에 영향을 미치지 않을 수도 있지만 해결하는 데 유용할 수 있는 문제입니다.
+ 보통 - 분석에 영향을 미칠 수 있지만 해결해야 할 중요성은 없는 문제입니다.
+ 높음 - 수정이 강력히 권장되는 심각한 문제입니다.

**참고**  
위젯은 열을 정렬하여 데이터프레임 상단에 데이터 품질 문제가 있는 값을 표시합니다. 또한 문제를 일으키는 값을 강조 표시합니다. 강조 표시의 색상은 심각도 수준에 해당합니다.

**제안된 변환**에서 데이터 품질 문제를 해결할 변환을 선택할 수 있습니다. 위젯은 문제를 해결할 수 있는 여러 변환을 제공할 수 있습니다. 문제에 가장 적합한 변환에 대한 권장 사항을 제공할 수 있습니다. 커서를 변환 위로 가져가면 해당 변환에 대한 자세한 정보를 얻을 수 있습니다.

데이터세트에 변환을 적용하려면 **적용 및 코드 내보내기를** 선택합니다. 변환은 데이터세트를 수정하고 수정된 값으로 시각화를 업데이트합니다. 변환 코드는 노트북의 다음 셀에 표시됩니다. 데이터세트에 추가 변환을 적용하는 경우 위젯은 변환을 셀에 추가합니다. 위젯이 생성하는 코드를 사용하여 다음을 수행할 수 있습니다.
+ 요구 사항에 더 잘 맞도록 사용자 지정하세요.
+ 자체 워크플로에서 사용하세요.

노트북의 모든 셀을 다시 실행하여 수행한 모든 변형을 재현할 수 있습니다.

위젯은 대상 열에 대한 인사이트와 경고를 제공할 수 있습니다. 대상 열은 예측하려는 열입니다. 다음 절차에 따라 대상 열 인사이트를 얻을 수 있습니다.

대상 열 인사이트를 얻으려면 다음을 수행하세요.

1. 대상 열로 사용할 열을 선택합니다.

1. **대상 열로 선택**을 선택합니다.

1. 문제 유형을 선택합니다. 위젯의 인사이트와 경고는 문제 유형에 맞게 조정됩니다. 문제 유형은 다음과 같습니다.
   + **분류** - 대상 열에 카테고리 데이터가 있습니다.
   + **회귀** - 대상 열에 숫자 데이터가 있습니다.

1. **실행**을 선택합니다.

1. (선택 사항) **대상 열 인사이트**에서 제안된 변환 중 하나를 선택합니다.

## 위젯의 인사이트 및 변환에 대한 참조
<a name="data-wrangler-notebook-dataprep-assistant-reference"></a>

기능 열(대상 열이 아닌 열)의 경우 다음과 같은 인사이트를 얻어 데이터세트 관련 문제를 경고할 수 있습니다.
+ **누락된 값** - 열에 `None`, `NaN`(숫자가 아님) 또는 `NaT`(타임스탬프가 아님)와 같은 누락된 값이 있습니다. 많은 기계 학습 알고리즘은 입력 데이터에 누락된 값을 지원하지 않습니다. 따라서 누락된 데이터를 채우거나 행을 삭제하는 것은 중요한 데이터 준비 단계입니다. 누락된 값 경고가 표시되는 경우 다음 변환 중 하나를 사용하여 문제를 해결할 수 있습니다.
  + **누락 삭제** - 누락된 값이 있는 행을 삭제합니다. 누락된 데이터가 있는 행의 비율이 적고 누락된 값을 산입하는 것이 적절하지 않은 경우에는 행을 삭제하는 것이 좋습니다.
  + **새 값으로 바꾸기** - 텍스트로 된 누락된 값을 `Other`로 바꿉니다. 출력 코드에서 `Other`를 다른 값으로 변경할 수 있습니다. 숫자로 된 누락된 값을 0으로 바꿉니다.
  + **평균으로 바꾸기** - 누락된 값을 열의 평균으로 바꿉니다.
  + **중앙값으로 바꾸기** - 누락된 값을 열의 중앙값으로 바꿉니다.
  + **열 삭제** - 데이터세트에서 누락된 값이 있는 열을 삭제합니다. 누락된 데이터가 있는 행의 비율이 높으면 열 전체를 삭제하는 것이 좋습니다.
+ **위장된 누락된 값** - 열에 위장된 누락된 값이 있습니다. 위장된 누락된 값은 누락된 값으로 명시적으로 인코딩되지 않은 값입니다. 예를 들어 누락된 값을 나타내는 데 `NaN`을 사용하는 대신 값은 `Placeholder`가 될 수 있습니다. 다음 변환 중 하나를 사용하여 누락된 값을 처리할 수 있습니다.
  + **누락 삭제** - 누락된 값이 있는 행을 삭제합니다.
  + **새 값으로 바꾸기** - 텍스트로 된 누락된 값을 `Other`로 바꿉니다. 출력 코드에서 `Other`를 다른 값으로 변경할 수 있습니다. 숫자로 된 누락된 값을 0으로 바꿉니다.
+ **상수 열** - 열에는 값이 하나뿐입니다. 따라서 예측력이 없습니다. **열 삭제** 변환을 사용하여 데이터 세트에서 열을 삭제하는 것이 좋습니다.
+ **ID 열** - 열에 반복되는 값이 없습니다. 열의 모든 값은 고유합니다. ID 또는 데이터베이스 키일 수 있습니다. 추가 정보가 없으면 열에 예측력이 없습니다. **열 삭제** 변환을 사용하여 데이터세트에서 열을 삭제하는 것이 좋습니다.
+ **높은 카디널리티** - 열의 고유한 값 비율이 높습니다. 카디널리티가 높으면 카테고리 열의 예측력이 제한됩니다. 분석에서 열의 중요도를 살펴보고 **열 삭제** 변환을 사용하여 열을 삭제하는 방법을 고려해 보세요.

대상 열에 대해 다음과 같은 인사이트를 얻어 데이터세트 관련 문제를 경고할 수 있습니다. 경고와 함께 제공된 제안된 변환을 사용하여 문제를 해결할 수 있습니다.
+ **대상의 혼합 데이터 유형(회귀)** - 대상 열에 숫자가 아닌 값이 있습니다. 데이터 입력 오류가 있을 수 있습니다. 변환할 수 없는 값이 있는 행은 제거하는 것이 좋습니다.
+ **빈번한 레이블** - 대상 열의 특정 값이 회귀 상황에서 일반적인 값보다 더 자주 나타납니다. 데이터 수집 또는 처리에 오류가 있을 수 있습니다. 자주 나타나는 카테고리는 해당 값이 기본값으로 사용되거나 누락된 값을 나타내는 자리 표시자임을 의미할 수 있습니다. 누락된 값을 `Other`로 바꾸려면 **새 값으로 바꾸기** 변환을 사용하는 것이 좋습니다.
+ **클래스당 인스턴스가 너무 적음** - 대상 열에 드물게 나타나는 카테고리가 있습니다. 일부 카테고리에는 대상 열을 유용하게 사용할 수 있을 만큼 행이 충분하지 않습니다. 다음과 같은 변환 중 하나를 사용할 수 있습니다.
  + **희귀 대상 삭제** - 관찰이 10개 미만인 고유한 값을 삭제합니다. 예를 들어, 값이 열에 9번 나타나면 `cat` 값을 삭제합니다.
  + **희귀 대상 바꾸기** - 데이터세트에 거의 나타나지 않는 카테고리를 `Other` 값으로 바꿉니다.
+ **클래스가 너무 불균형함(다중 클래스 분류)** - 데이터세트에 다른 카테고리보다 훨씬 더 자주 나타나는 범주가 있습니다. 클래스 불균형은 예측 정확도에 영향을 미칠 수 있습니다. 가장 정확한 예측을 위해서는 현재 자주 나타나지 않는 카테고리가 있는 행으로 데이터세트를 업데이트하는 것이 좋습니다.
+ **많은 클래스/너무 많은 클래스** - 대상 열에 많은 클래스가 있습니다. 클래스가 많으면 훈련 시간이 길어지거나 예측 품질이 떨어질 수 있습니다. 다음 중 하나를 수행하는 것이 좋습니다.
  + 일부 카테고리를 자체 카테고리로 그룹화. 예를 들어 6개의 카테고리가 밀접하게 관련되어 있는 경우 단일 카테고리를 사용하는 것이 좋습니다.
  + 여러 카테고리에 적용할 수 있는 ML 알고리즘 사용.

# 보안 및 권한
<a name="data-wrangler-security"></a>

Athena 또는 Amazon Redshift에서 데이터를 쿼리하면 쿼리된 데이터 세트가 Studio Classic을 사용하는 AWS 리전의 기본 SageMaker AI S3 버킷에 자동으로 저장됩니다. 또한 Amazon SageMaker Data Wrangler에서 Jupyter notebook을 내보내고 실행하면 데이터 흐름 또는 .flow 파일이 *data\$1wrangler\$1flows*라는 접두사 아래에 동일한 기본 버킷에 저장됩니다.

높은 수준의 보안 요건을 위해 사용자는 이 기본 SageMaker AI S3 버킷에 액세스할 수 있는 AWS 역할을 제한하는 버킷 정책을 구성할 수 있습니다. 다음 섹션을 사용하여 S3 버킷에 이 정책 유형을 추가합니다. 이 페이지의 지침을 따르려면 AWS Command Line Interface ()를 사용합니다AWS CLI. 방법을 알아보려면 IAM 사용 설명서[의 AWS CLI 구성을](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html) 참조하세요.

또한 Data Wrangler를 사용하는 각 IAM 역할에 필요한 리소스에 액세스할 수 있는 권한을 부여해야 합니다. Data Wrangler에 액세스하는 데 사용하는 IAM 역할에 대한 세분화된 권한이 필요하지 않은 경우, 사용자는 Studio Classic 사용자를 만드는 데 사용하는 IAM 역할에 IAM 관리 정책([https://console.aws.amazon.com/iam/home?#/policies/arn:aws:iam::aws:policy/AmazonSageMakerFullAccess](https://console.aws.amazon.com/iam/home?#/policies/arn:aws:iam::aws:policy/AmazonSageMakerFullAccess))을 추가할 수 있습니다. 이 정책은 Data Wrangler를 사용할 수 있는 모든 권한을 부여합니다. 더 세분화된 권한이 필요한 경우 [Data Wrangler를 사용할 수 있는 IAM 역할 권한 부여](#data-wrangler-security-iam-policy) 섹션을 참조하세요.

## Data Wrangler로 가져온 데이터세트에 대한 액세스를 제한하는 버킷 정책 추가
<a name="data-wrangler-security-bucket-policy"></a>

사용자는 Amazon S3 버킷 정책을 사용하여 Data Wrangler 리소스가 포함된 S3 버킷에 정책을 추가할 수 있습니다. Data Wrangler가 Studio Classic을 사용하는 AWS 리전의 기본 SageMaker AI S3 버킷에 업로드하는 리소스에는 다음이 포함됩니다.
+ 쿼리한 Amazon Redshift 결과. 이들은 *redshift/* 접두사 아래에 저장됩니다.
+ 쿼리한 Athena 결과. 이들은 *Athena/* 접두사 아래에 저장됩니다.
+ 내보낸 Jupyter notebook Data Wrangler를 실행할 때 Amazon S3에 업로드된 .flow 파일이 생성됩니다. 이러한 파일은 *data\$1wrangler\$1flows/* 접두사 아래에 저장됩니다.

다음 절차를 사용하여 사용자가 해당 버킷에 대한 IAM 역할 액세스를 제한하기 위해 추가할 수 있는 S3 버킷 정책을 생성합니다. S3 버킷에 정책을 추가하는 방법을 알아보려면 [S3 버킷 정책을 추가하려면 어떻게 해야 하나요?](https://docs.aws.amazon.com/AmazonS3/latest/user-guide/add-bucket-policy.html)를 참조합니다.

**Data Wrangler 리소스를 저장하는 S3 버킷에 버킷 정책을 설정하려면:**

1. Data Wrangler에 액세스할 수 있도록 하려는 IAM 역할을 하나 이상 구성합니다.

1. 명령 프롬프트나 쉘을 엽니다. 생성하는 각 역할에 대해 *role-name*을 역할 이름으로 바꾸고 다음을 실행합니다.

   ```
   $ aws iam get-role --role-name role-name
   ```

   응답에는 `AROA`로 시작하는 `RoleId` 문자열이 표시됩니다. 이 문자열을 복사합니다.

1. Data Wrangler를 사용하는 AWS 리전의 SageMaker AI 기본 버킷에 다음 정책을 추가합니다. *region*을 버킷이 위치한 AWS 리전으로 바꾸고 *account-id*를 AWS 계정 ID로 바꿉니다. *AROAEXAMPLEID*로 시작하는 `userId`를 Data Wrangler 사용 권한을 부여하려는 AWS 역할의 IDs로 바꿉니다.

------
#### [ JSON ]

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Effect": "Deny",
         "Principal": "*",
         "Action": "s3:*",
         "Resource": [
           "arn:aws:s3:::sagemaker-us-east-1-111122223333/data_wrangler_flows/",
           "arn:aws:s3:::sagemaker-us-east-1-111122223333/data_wrangler_flows/*",
           "arn:aws:s3:::sagemaker-us-east-1-111122223333/athena",
           "arn:aws:s3:::sagemaker-us-east-1-111122223333/athena/*",
           "arn:aws:s3:::sagemaker-us-east-1-111122223333/redshift",
           "arn:aws:s3:::sagemaker-us-east-1-111122223333/redshift/*"
           
         ],
         "Condition": {
           "StringNotLike": {
             "aws:userId": [
               "AROAEXAMPLEID_1:*",
               "AROAEXAMPLEID_2:*"
             ]
           }
         }
       }
     ]
   }
   ```

------

## Data Wrangler에 대한 허용 목록 만들기
<a name="data-wrangler-security-allowlist"></a>

사용자는 Amazon SageMaker Studio Classic 사용자 인터페이스에서 Data Wrangler를 실행하기 시작할 때마다 SageMaker AI 애플리케이션 프로그래밍 인터페이스(API)를 직접적으로 호출하여 Data Wrangler 애플리케이션을 만듭니다.

조직에서는 기본적으로 사용자에게 이러한 API 직접 호출을 수행할 권한을 제공하지 않을 수 있습니다. 권한을 제공하려면 먼저 [Data Wrangler 허용 목록 예제](https://s3.us-west-2.amazonaws.com/amazon-sagemaker-data-wrangler-documentation-artifacts/DataWranglerAllowListExample.txt)의 정책 템플릿을 사용하여 사용자 IAM 역할에 대한 정책을 생성하여 연결해야 합니다.

**참고**  
위의 정책 예제는 사용자에게 Data Wrangler 애플리케이션에 대한 액세스 권한만 제공합니다.

정책 생성에 대한 자세한 내용은 [JSON의 탭에서 정책 생성하기](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create-console.html#access_policies_create-json-editor)를 참조하세요. 정책을 생성할 때는 [Data Wrangler 허용 목록 예제](https://s3.us-west-2.amazonaws.com/amazon-sagemaker-data-wrangler-documentation-artifacts/DataWranglerAllowListExample.txt)에서 JSON 정책을 복사하여 **JSON** 탭에 붙여 넣습니다.

**중요**  
사용자가 다음 작업을 실행하지 못하도록 하는 IAM 정책을 모두 삭제하세요.  
[CreateApp](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateApp.html)
[DescribeApp](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeApp.html)
정책을 삭제하지 않아도 사용자는 여전히 정책의 영향을 받을 수 있습니다.

템플릿을 사용하여 정책을 생성한 후 사용자의 IAM 역할에 정책을 연결하세요. 정책을 연결하는 방법에 대한 자세한 내용은 [IAM 자격 증명 권한 추가(콘솔)](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-attach-detach.html#add-policies-console)를 참조하세요.

## Data Wrangler를 사용할 수 있는 IAM 역할 권한 부여
<a name="data-wrangler-security-iam-policy"></a>

사용자는 일반 IAM 관리 정책 [https://console.aws.amazon.com/iam/home?#/policies/arn:aws:iam::aws:policy/AmazonSageMakerFullAccess](https://console.aws.amazon.com/iam/home?#/policies/arn:aws:iam::aws:policy/AmazonSageMakerFullAccess)와 함께 IAM 역할에 Data Wrangler를 사용할 권한을 부여할 수 있습니다. 이는 모든 SageMaker AI 서비스를 사용하는 데 필요한 [권한](https://docs.aws.amazon.com/sagemaker/latest/dg/security-iam-awsmanpol-AmazonSageMakerFullAccess.html)을 포함하는 일반 정책입니다. 이 정책은 IAM 역할에 Data Wrangler에 대한 전체 액세스 권한을 부여합니다. `AmazonSageMakerFullAccess`를 사용하여 Data Wrangler에 대한 액세스 권한을 부여할 때 다음 사항을 반드시 숙지해야 합니다.
+ Amazon Redshift에서 데이터를 가져오는 경우 **데이터베이스 사용자 이름**의 접두사는 `sagemaker_access`이어야 합니다.
+ 이 관리 정책은 이름에 `SageMaker AI`,`SageMaker AI`, `sagemaker` 또는 `aws-glue` 중 하나가 포함된 버킷에 대한 액세스 권한만 부여합니다. Data Wrangler를 사용하여 이름에 이러한 구문을 사용하지 않고 S3 버킷에서 가져오려면 이 페이지의 마지막 섹션을 참조하여 IAM 개체에 S3 버킷에 액세스할 수 있는 권한을 부여하는 방법을 알아보세요.

엄격한 보안이 필요한 경우 사용자는 이 섹션의 정책을 IAM 엔티티에 연결하여 Data Wrangler를 사용하는 데 필요한 권한을 부여할 수 있습니다.

Amazon Redshift 또는 Athena에 IAM 역할이 Data Wrangler로부터 가져와야 하는 데이터세트가 있는 경우, 이러한 리소스에 액세스하려면 먼저 해당 엔티티에 정책을 추가해야 합니다. 다음 정책은 사용자가 Amazon Redshift 및 Athena에서 데이터를 가져올 수 있는 권한을 IAM 역할에 부여하는 데 사용할 수 있는 가장 제한적인 정책입니다.

IAM 역할에 사용자 지정 정책을 연결하는 방법을 알아보려면 IAM 사용 설명서의 [IAM 정책 관리](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage.html#create-managed-policy-console)를 참조합니다.

**Athena 데이터세트 가져오기에 대한 액세스 권한을 부여하는 정책 예제**

다음 정책은 IAM 역할에 별도의 IAM 정책을 통해 데이터가 저장되는 기본 S3 버킷에 액세스할 권한이 있다고 가정합니다.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "athena:ListDataCatalogs",
                "athena:ListDatabases",
                "athena:ListTableMetadata",
                "athena:GetQueryExecution",
                "athena:GetQueryResults",
                "athena:StartQueryExecution",
                "athena:StopQueryExecution"
            ],
            "Resource": [
                "*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "glue:CreateTable"
            ],
            "Resource": [
                "arn:aws:glue:*:*:table/*/sagemaker_tmp_*",
                "arn:aws:glue:*:*:table/sagemaker_featurestore/*",
                "arn:aws:glue:*:*:catalog",
                "arn:aws:glue:*:*:database/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "glue:DeleteTable"
            ],
            "Resource": [
                "arn:aws:glue:*:*:table/*/sagemaker_tmp_*",
                "arn:aws:glue:*:*:catalog",
                "arn:aws:glue:*:*:database/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "glue:GetDatabases",
                "glue:GetTable",
                "glue:GetTables"
            ],
            "Resource": [
                "arn:aws:glue:*:*:table/*",
                "arn:aws:glue:*:*:catalog",
                "arn:aws:glue:*:*:database/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "glue:CreateDatabase",
                "glue:GetDatabase"
            ],
            "Resource": [
                "arn:aws:glue:*:*:catalog",
                "arn:aws:glue:*:*:database/sagemaker_featurestore",
                "arn:aws:glue:*:*:database/sagemaker_processing",
                "arn:aws:glue:*:*:database/default",
                "arn:aws:glue:*:*:database/sagemaker_data_wrangler"
            ]
        }
    ]
}
```

------

****Amazon Redshift 데이터세트 가져오기에 대한 액세스 권한을 부여하는 정책 예제****

다음 정책은 이름에 `sagemaker_access` 접두사가 있는 데이터베이스 사용자를 사용하여 Data Wrangler에 Amazon Redshift 연결을 설정할 수 있는 권한을 부여합니다. 추가 데이터베이스 사용자를 사용하여 연결할 수 있는 권한을 부여하려면 다음 정책의 `"Resources"` 아래에 항목을 추가하세요. 다음 정책은 해당되는 경우 IAM 역할에 별도의 IAM 정책을 통해 데이터가 저장되는 기본 S3 버킷에 액세스할 권한이 있다고 가정합니다.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "redshift-data:ExecuteStatement",
                "redshift-data:DescribeStatement",
                "redshift-data:CancelStatement",
                "redshift-data:GetStatementResult",
                "redshift-data:ListSchemas",
                "redshift-data:ListTables"
            ],
            "Resource": [
                "*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "redshift:GetClusterCredentials"
            ],
            "Resource": [
                "arn:aws:redshift:*:*:dbuser:*/sagemaker_access*",
                "arn:aws:redshift:*:*:dbname:*"
            ]
        }
    ]
}
```

------

**S3 버킷에 대한 액세스 권한을 부여하기 위한 정책**

데이터세트가 Amazon S3에 저장되어 있는 경우 사용자는 다음과 유사한 정책으로 IAM 역할에 이 버킷에 액세스할 수 있는 권한을 부여할 수 있습니다. 이 예제에서는 *test*라는 이름의 버킷에 프로그램 차원의 읽기-쓰기 액세스 권한을 부여합니다.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": ["s3:ListBucket"],
      "Resource": ["arn:aws:s3:::test"]
    },
    {
      "Effect": "Allow",
      "Action": [
        "s3:PutObject",
        "s3:GetObject",
        "s3:DeleteObject"
      ],
      "Resource": ["arn:aws:s3:::test/*"]
    }
  ]
}
```

------

Athena 및 Amazon Redshift에서 데이터를 가져오려면 사용 중인 AWS 리전 Data Wrangler의 기본 Amazon S3 버킷에서 다음 접두사에 액세스할 수 있는 IAM 역할 권한을 부여해야 합니다. `athena/`, `redshift/`. 리전에 기본 Amazon S3 버킷이 아직 없는 AWS 경우 IAM 역할에도이 리전에 버킷을 생성할 수 있는 권한을 부여해야 합니다.

또한 IAM 역할이 Amazon SageMaker Feature Store, Pipelines, Data Wrangler 작업 내보내기 옵션을 사용할 수 있게 하려면 먼저 이 버킷의 `data_wrangler_flows/` 접두사에 대한 액세스 권한을 부여해야 합니다.

 Data Wrangler는 `athena/` 및 `redshift/` 접두사를 사용하여 미리 보기 파일과 가져온 데이터세트를 저장합니다. 자세한 내용은 [가져온 데이터 스토리지](data-wrangler-import.md#data-wrangler-import-storage) 단원을 참조하세요.

Data Wrangler는 Data Wrangler에서 내보낸 Jupyter notebook을 실행할 때 `data_wrangler_flows/` 접두사를 사용하여 .flow 파일을 저장합니다. 자세한 내용은 [내보내기](data-wrangler-data-export.md) 단원을 참조하세요.

다음과 유사한 정책을 사용하여 이전 단락에 설명된 권한을 부여하세요.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:GetObject",
                "s3:PutObject"
            ],
            "Resource": [
                "arn:aws:s3:::sagemaker-us-east-1-111122223333/data_wrangler_flows/",
                "arn:aws:s3:::sagemaker-us-east-1-111122223333/data_wrangler_flows/*",
                "arn:aws:s3:::sagemaker-us-east-1-111122223333/athena",
                "arn:aws:s3:::sagemaker-us-east-1-111122223333/athena/*",
                "arn:aws:s3:::sagemaker-us-east-1-111122223333/redshift",
                "arn:aws:s3:::sagemaker-us-east-1-111122223333/redshift/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:CreateBucket",
                "s3:ListBucket"
            ],
            "Resource": "arn:aws:s3:::sagemaker-us-east-1-111122223333"
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:ListAllMyBuckets",
                "s3:GetBucketLocation"
            ],
            "Resource": "*"
        }
    ]
}
```

------

Amazon S3 버킷 URI를 지정하여 다른 AWS 계정에서 Amazon S3 버킷의 데이터에 액세스할 수도 있습니다. 이렇게 하려면 다른 계정의 Amazon S3 버킷에 대한 액세스 권한을 부여하는 IAM 정책은 다음 예와 비슷한 정책을 사용해야 합니다. 여기서 `BucketFolder`는 사용자 버킷 `UserBucket`에 있는 특정 디렉터리입니다. 다른 사용자에게 버킷에 대한 액세스 권한을 부여하는 사용자에게 이 정책을 추가해야 합니다.

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
       {
            "Effect": "Allow",
            "Action": [
                "s3:GetObject",
                "s3:PutObject",
                "s3:PutObjectAcl"
            ],
            "Resource": "arn:aws:s3:::UserBucket/BucketFolder/*"
            },
                {
                "Effect": "Allow",
                "Action": [
                    "s3:ListBucket"
                ],
                "Resource": "arn:aws:s3:::UserBucket",
                "Condition": {
                "StringLike": {
                    "s3:prefix": [
                    "BucketFolder/*"
                    ]
                }
            }
        } 
    ]
}
```

------

버킷 소유자가 아닌 버킷에 액세스하는 사용자는 다음 예제와 비슷한 정책을 사용자에게 추가해야 합니다. 참고로 아래의 `AccountX` 및 `TestUser`는/은 각각 버킷 소유자와 해당 사용자를 가리킵니다.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::111122223333:user/TestUser"
            },
            "Action": [
                "s3:GetObject",
                "s3:PutObject",
                "s3:PutObjectAcl"
            ],
            "Resource": [
                "arn:aws:s3:::UserBucket/BucketFolder/*"
            ]
        },
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::111122223333:user/TestUser"
            },
            "Action": [
                "s3:ListBucket"
            ],
            "Resource": [
                "arn:aws:s3:::UserBucket"
            ]
        }
    ]
}
```

------

**SageMaker AI Studio 사용에 대한 액세스 권한을 부여하는 정책 예시**

다음과 같은 정책을 사용하여 Studio Classic 인스턴스를 설정하는 데 사용할 수 있는 IAM 실행 역할을 만듭니다.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "sagemaker:CreatePresignedDomainUrl",
                "sagemaker:DescribeDomain",
                "sagemaker:ListDomains",
                "sagemaker:DescribeUserProfile",
                "sagemaker:ListUserProfiles",
                "sagemaker:*App",
                "sagemaker:ListApps"
            ],
            "Resource": "*"
        }
    ]
}
```

------

## Snowflake 및 Data Wrangler
<a name="data-wrangler-security-snowflake"></a>

 AWS 리소스에 대한 모든 권한은 Studio Classic 인스턴스에 연결된 IAM 역할을 통해 관리됩니다. Snowflake 관리자는 각 Snowflake 사용자에게 세분화된 권한과 허가를 부여할 수 있으므로 Snowflake 관련 권한을 관리합니다. 여기에는 데이터베이스, 스키마, 테이블, 웨어하우스 및 스토리지 통합 객체가 포함됩니다. 먼저 Data Wrangler 외부에서 올바른 권한이 설정되었는지 확인해야 합니다.

참고로 Snowflake `COPY INTO Amazon S3` 명령은 기본적으로 공용 인터넷을 통해 Snowflake에서 Amazon S3로 데이터를 이동하지만 전송 중인 데이터는 SSL을 사용하여 보호됩니다. Amazon S3에 저장된 데이터는 기본값 AWS KMS key을 사용하여 SSE-KMS로 암호화됩니다.

Snowflake 자격 증명 스토리지와 관련하여 Data Wrangler는 고객 자격 증명을 저장하지 않습니다. Data Wrangler는 Secrets Manager를 사용하여 자격 증명을 비밀로 저장하고 모범 사례 보안 계획의 일환으로 보안 암호를 교체합니다. Snowflake 또는 Studio Classic 관리자는 데이터 과학자의 Studio Classic 실행 역할에 자격 증명을 저장하는 보안 암호에 `GetSecretValue`를 수행할 권한이 부여되었는지 확인해야 합니다. Studio Classic 실행 역할에 이미 연결되어 있는 경우 `AmazonSageMakerFullAccess` 정책에는 Data Wrangler가 만든 보안 암호와 위 지침의 이름 지정 및 태그 지정 규칙에 따라 만든 암호를 읽을 수 있는 필수 권한이 있습니다. 규칙을 따르지 않는 보안 암호에는 별도로 액세스 권한을 부여해야 합니다. 보안되지 않은 채널을 통한 자격 증명 공유를 방지하려면 Secrets Manager를 사용하는 것이 좋습니다. 하지만 로그인한 사용자는 Studio Classic에서 터미널 또는 Python 노트북을 실행한 다음 Secrets Manager API에서 API 직접 호출을 실행하여 일반 텍스트 암호를 검색할 수 있습니다.

## 를 사용한 데이터 암호화 AWS KMS
<a name="data-wrangler-security-kms"></a>

Data Wrangler 내에서 사용자는 암호화된 파일을 해독하여 Data Wrangler 흐름에 추가할 수 있습니다. 기본 AWS KMS 키 또는 제공한 키를 사용하여 변환의 출력을 암호화할 수도 있습니다.

사용자는 다음과 같은 경우 파일을 가져올 수 있습니다.
+ 서버 측 암호화
+ SSE-KMS를 암호화 유형으로 사용

파일을 해독하고 Data Wrangler 흐름으로 가져오려면 먼저 사용 중인 SageMaker Studio Classic 사용자를 주요 사용자로 추가해야 합니다.

다음 스크린샷은 주요 사용자로 추가된 Studio Classic 사용자 역할을 보여줍니다. 왼쪽 패널 아래에 있는 사용자에 액세스하여 변경하려면 [IAM 역할](https://console.aws.amazon.com/iam/home#/roles)을 참조하세요.

![\[콘솔의 키 사용자 섹션입니다.\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/images/data-wrangler-kms.png)


### Data Wrangler에서 가져온 데이터 스토리지를 위한 Amazon S3 고객 관리형 키 설정
<a name="data-wrangler-s3-cmk-setup"></a>

 기본적으로 Data Wrangler는 다음과 같은 명명 규칙을 가진 Amazon S3 버킷을 사용합니다: `sagemaker-region-account number`. 예를 들어, 계정 번호가 `111122223333`이고 us-east-1에서 Studio Classic을 사용하는 경우 가져온 데이터세트는 `sagemaker-us-east-1-111122223333`과 같은 명명 규칙에 따라 저장됩니다.

다음 지침은 기본 Amazon S3 버킷의 고객 관리형 키를 설정하는 방법을 설명합니다.

1. 서버 측 암호화를 활성화하고 기본 S3 버킷의 고객 관리형 키를 설정하려면 [KMS 암호화 사용](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingKMSEncryption.html)을 참조하세요.

1. 1단계를 수행한 후 AWS KMS 에서 로 이동합니다 AWS Management Console. 이전 단계의 1단계에서 선택한 고객 관리형 키를 찾아 키 사용자로서 Studio Classic 역할을 추가합니다. 이렇게 하려면 [주요 사용자에게 고객 관리형 키를 사용할 수 있도록 허용](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html#key-policy-default-allow-users) 지침을 따릅니다.

### 내보내는 데이터 암호화
<a name="data-wrangler-export-kms"></a>

사용자는 다음 방법 중 하나를 사용하여 내보내는 데이터를 암호화할 수 있습니다.
+ Amazon S3 버킷에 객체 사용 SSE-KMS 암호화가 포함되도록 지정합니다.
+ Data Wrangler에서 내보내는 데이터를 암호화할 AWS KMS 키를 지정합니다.

**데이터 내보내기** 페이지에서 **AWS KMS 키 ID 또는 ARN** 값을 지정합니다.

 AWS KMS 키 사용에 대한 자세한 내용은 [(SSE-KMS)에 AWSAWS Key Management Service 저장된 AWS KMS 키를 사용한 서버 측 암호화를 사용하여 데이터 보호를 참조하세요](https://docs.aws.amazon.com//AmazonS3/latest/userguide/UsingKMSEncryption.html).

## Amazon AppFlow 권한
<a name="data-wrangler-appflow-permissions"></a>

전송할 때는 먼저 전송을 수행할 권한이 있는 IAM 역할을 지정해야 합니다. 사용자는 Data Wrangler를 사용할 권한이 있는 동일한 IAM 역할을 사용할 수 있습니다. 기본적으로 Data Wrangler에 액세스하는 데 사용하는 IAM 역할은 `SageMakerExecutionRole`입니다.

또한 IAM 역할에는 다음과 같은 권한이 있어야 합니다.
+ Amazon AppFlow 권한
+  AWS Glue 데이터 카탈로그에 대한 권한
+ 가 사용 가능한 데이터 소스를 AWS Glue 검색할 수 있는 권한

전송을 실행하면 Amazon AppFlow는 전송의 메타데이터를 AWS Glue 데이터 카탈로그에 저장합니다. Data Wrangler는 카탈로그의 메타데이터를 사용하여 사용자가 해당 데이터를 쿼리하고 가져올 수 있는지 여부를 결정합니다.

Amazon AppFlow에 권한을 추가하려면 `AmazonAppFlowFullAccess` AWS 관리형 정책을 IAM 역할에 추가합니다. 정책을 추가하는데 대한 추가 정보는 [IAM 자격 증명 권한 추가 및 제거](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-attach-detach.html)를 참조하세요.

Amazon S3로 데이터를 전송하는 경우 먼저 다음 정책도 첨부해야 합니다.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "VisualEditor0",
      "Effect": "Allow",
      "Action": [
        "s3:GetBucketTagging",
        "s3:ListBucketVersions",
        "s3:CreateBucket",
        "s3:ListBucket",
        "s3:GetBucketPolicy",
        "s3:PutEncryptionConfiguration",
        "s3:GetEncryptionConfiguration",
        "s3:PutBucketTagging",
        "s3:GetObjectTagging",
        "s3:GetBucketOwnershipControls",
        "s3:PutObjectTagging",
        "s3:DeleteObject",
        "s3:DeleteBucket",
        "s3:DeleteObjectTagging",
        "s3:GetBucketPublicAccessBlock",
        "s3:GetBucketPolicyStatus",
        "s3:PutBucketPublicAccessBlock",
        "s3:PutAccountPublicAccessBlock",
        "s3:ListAccessPoints",
        "s3:PutBucketOwnershipControls",
        "s3:PutObjectVersionTagging",
        "s3:DeleteObjectVersionTagging",
        "s3:GetBucketVersioning",
        "s3:GetBucketAcl",
        "s3:PutObject",
        "s3:GetObject",
        "s3:GetAccountPublicAccessBlock",
        "s3:ListAllMyBuckets",
        "s3:GetAnalyticsConfiguration",
        "s3:GetBucketLocation"
      ],
      "Resource": "*"
    }
  ]
}
```

------

 AWS Glue 권한을 추가하려면 `AWSGlueConsoleFullAccess` 관리형 정책을 IAM 역할에 추가합니다. Amazon AppFlow AWS Glue 권한에 대한 자세한 내용은 [link-to-appflow-page]를 참조하세요.

전송한 데이터를 가져오려면 Amazon AppFlow에서 AWS Glue 및 Data Wrangler에 액세스해야 합니다. Amazon AppFlow 액세스 권한을 부여하려면 IAM 역할에 다음 신뢰 정책을 추가합니다.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::123456789012:root",
                "Service": [
                    "appflow.amazonaws.com"
                ]
            },
            "Action": "sts:AssumeRole"
        }
    ]
}
```

------

Data Wrangler에 Amazon AppFlow 데이터를 표시하려면 IAM 역할에 다음 정책을 추가하세요.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "glue:SearchTables",
            "Resource": [
                "arn:aws:glue:*:*:table/*/*",
                "arn:aws:glue:*:*:database/*",
                "arn:aws:glue:*:*:catalog"
            ]
        }
    ]
}
```

------

## Data Wrangler에서 수명 주기 구성 사용하기
<a name="data-wrangler-lifecycle-configuration"></a>

커널 게이트웨이 애플리케이션을 실행하도록 구성된 Amazon EC2 인스턴스는 있지만 Data Wrangler 애플리케이션은 없을 수 있습니다. 커널 게이트웨이 애플리케이션은 Studio Classic 노트북 및 터미널을 실행하는 데 사용하는 환경 및 커널에 대한 액세스를 제공합니다. Data Wrangler 애플리케이션은 Data Wrangler를 실행하는 UI 애플리케이션입니다. Data Wrangler 인스턴스가 아닌 Amazon EC2 인스턴스는 Data Wrangler를 실행하려면 수명 주기 구성을 수정해야 합니다. 수명 주기 구성은 Amazon SageMaker Studio Classic 환경의 사용자 지정을 자동화하는 쉘 스크립트입니다.

수명 주기 구성에 대한 추가 정보는 [수명 주기 구성을 사용하여 Amazon SageMaker Studio Classic 사용자 지정](studio-lcc.md) 섹션을 참조하세요.

인스턴스의 기본 수명 주기 구성은 Data Wrangler 사용을 지원하지 않습니다. 인스턴스에서 Data Wrangler를 사용하도록 사용자는 기본 구성을 다음과 같이 수정할 수 있습니다.

```
#!/bin/bash
set -eux
STATUS=$(
python3 -c "import sagemaker_dataprep"
echo $?
)
if [ "$STATUS" -eq 0 ]; then
echo 'Instance is of Type Data Wrangler'
else
echo 'Instance is not of Type Data Wrangler'

# Replace this with the URL of your git repository
export REPOSITORY_URL="https://github.com/aws-samples/sagemaker-studio-lifecycle-config-examples.git"

git -C /root clone $REPOSTIORY_URL

fi
```

사용자는 스크립트를 `lifecycle_configuration.sh`로 저장할 수 있습니다.

수명 주기 구성을 Studio Classic 도메인 또는 사용자 프로필에 연결합니다. 수명 주기 구성 생성 및 연결에 대한 추가 정보는 [수명 주기 구성 생성 및 Amazon SageMaker Studio Classic과 연결](studio-lcc-create.md) 섹션을 참조합니다.

다음 지침은 Studio Classic 도메인 또는 사용자 프로필에 수명 주기 구성을 연결하는 방법을 보여줍니다.

수명 주기 구성을 만들거나 연결할 때 오류가 발생할 수 있습니다. 수명 주기 구성 오류 디버깅에 대해서는 [KernelGateway 앱 실패](studio-lcc-debug.md#studio-lcc-debug-kernel) 섹션을 참조하세요.

# 릴리스 정보
<a name="data-wrangler-release-notes"></a>

Data Wrangler는 새 기능과 버그 수정으로 정기적으로 업데이트됩니다. Studio Classic에서 사용 중인 Data Wrangler 버전을 업그레이드하려면 [Amazon SageMaker Studio Classic 앱 종료 및 업데이트](studio-tasks-update-apps.md)의 지침을 따르세요.


****  

| 릴리스 정보 | 
| --- | 
|  **8/31/2023** 새로운 기능: 이제 전체 데이터세트에 대한 데이터 품질 및 인사이트 보고서를 만들 수 있습니다. 자세한 내용은 [데이터 및 데이터 품질에 대한 인사이트 확보](data-wrangler-data-insights.md) 단원을 참조하십시오. **5/20/2023** 새로운 기능: 이제 Salesforce 데이터 클라우드에서 데이터를 가져올 수 있습니다. 자세한 내용은 [Salesforce 데이터 클라우드에서 데이터를 가져옵니다.](data-wrangler-import.md#data-wrangler-import-salesforce-data-cloud) 단원을 참조하십시오. **4/18/2023** 새로운 기능: 이제 Amazon Personalize가 해석할 수 있는 형식으로 데이터를 가져올 수 있습니다. 자세한 내용은 [Amazon Personalize용 행 매핑](data-wrangler-transform.md#data-wrangler-transform-personalize) 단원을 참조하십시오. **3/1/2023** 새로운 기능: 이제 Hive를 사용하여 Amazon EMR에서 데이터를 가져올 수 있습니다. 자세한 내용은 [Amazon EMR에서 데이터 가져오기](data-wrangler-import.md#data-wrangler-emr) 단원을 참조하십시오. **12/10/2022** 새로운 기능: 이제 Data Wrangler 플로우를 추론 엔드포인트로 내보낼 수 있습니다. 자세한 내용은 [추론 엔드포인트로 내보내기](data-wrangler-data-export.md#data-wrangler-data-export-inference) 단원을 참조하십시오. 새로운 기능: 이제 대화형 노트북 위젯을 사용하여 데이터를 준비할 수 있습니다. 자세한 내용은 [데이터 인사이트를 얻기 위해 Amazon SageMaker Studio Classic 노트북의 대화형 데이터 준비 위젯 사용](data-wrangler-interactively-prepare-data-notebook.md) 단원을 참조하십시오. 새로운 기능: 이제 SaaS 플랫폼에서 데이터를 가져올 수 있습니다. 자세한 내용은 [서비스형 소프트웨어(SaaS) 플랫폼에서 데이터 가져오기](data-wrangler-import.md#data-wrangler-import-saas) 단원을 참조하십시오. **10/12/2022** 새로운 기능: 이제 다양한 데이터세트에 대해 데이터 플로우를 재사용할 수 있습니다. 자세한 내용은 [다양한 데이터세트에 데이터 흐름 재사용](data-wrangler-parameterize.md) 단원을 참조하십시오. **10/05/2022** 새로운 기능: 이제 보안 주체 구성 요소 분석(PCA)을 변환으로 사용할 수 있습니다. 자세한 내용은 [데이터세트 내 차원 축소](data-wrangler-transform.md#data-wrangler-transform-dimensionality-reduction) 단원을 참조하십시오. **10/05/2022** 새로운 기능: 이제 Data Wrangler 플로우에서 파라미터를 재구성할 수 있습니다. 자세한 내용은 [내보내기](data-wrangler-data-export.md) 단원을 참조하십시오. **10/03/2022** 새로운 기능: 이제 Data Wrangler 플로우에서 모델을 배포할 수 있습니다. 자세한 내용은 [데이터 플로우에서 모델 자동 훈련하기](data-wrangler-autopilot.md) 단원을 참조하십시오. **9/20/2022** 새로운 기능: 이제 Athena에서 데이터 보존 기간을 설정할 수 있습니다. 자세한 내용은 [Athena에서 데이터 가져오기](data-wrangler-import.md#data-wrangler-import-athena) 단원을 참조하십시오. **6/9/2022** 새로운 기능: 이제 Amazon SageMaker Autopilot을 사용하여 Data Wrangler 플로우에서 직접 모델을 훈련할 수 있습니다. 자세한 내용은 [데이터 플로우에서 모델 자동 훈련하기](data-wrangler-autopilot.md) 단원을 참조하십시오. **5/6/2022** 새로운 기능: 이제 m5 및 r5 인스턴스를 추가로 사용할 수 있습니다. 자세한 내용은 [인스턴스](data-wrangler-data-flow.md#data-wrangler-data-flow-instances) 단원을 참조하십시오. **4/27/2022** 새로운 기능: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/data-wrangler-release-notes.html) **4/1/2022** 새로운 기능: 이제 Databricks를 데이터 소스로 사용할 수 있습니다. 자세한 내용은 [Data Bricks에서 데이터 가져오기(JDBC)](data-wrangler-import.md#data-wrangler-databricks) 단원을 참조하십시오. **2/2/2022** 새로운 기능: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/data-wrangler-release-notes.html) **10/16/2021** 새로운 기능: Data Wrangler는 이제 Athena 워크그룹을 지원합니다. 자세한 내용은 [Athena에서 데이터 가져오기](data-wrangler-import.md#data-wrangler-import-athena) 단원을 참조하십시오. **10/6/2021** 새로운 기능: Data Wrangler는 이제 시계열 데이터 변환을 지원합니다. 자세한 내용은 [시계열 변환](data-wrangler-transform.md#data-wrangler-transform-time-series) 단원을 참조하십시오. **7/15/2021** 새로운 기능: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/data-wrangler-release-notes.html) 개선 사항: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/data-wrangler-release-notes.html)  버그 수정: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/data-wrangler-release-notes.html) **4/26/2021**  개선 사항: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/data-wrangler-release-notes.html) 버그 수정: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/data-wrangler-release-notes.html) **2/8/2021**  새로운 기능: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/data-wrangler-release-notes.html) 개선 사항: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/data-wrangler-release-notes.html) 버그 수정: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/data-wrangler-release-notes.html)  | 

# 문제 해결
<a name="data-wrangler-trouble-shooting"></a>

Amazon SageMaker Data Wrangler를 사용할 때 문제가 발생하면 다음을 수행하는 것이 좋습니다.
+ 오류 메시지가 제공되면 메시지를 읽고 가능한 경우 보고된 문제를 해결하세요.
+ Studio Classic 사용자의 IAM 역할에 작업을 수행하는 데 필요한 권한이 있는지 확인하세요. 자세한 내용은 [보안 및 권한](data-wrangler-security.md) 단원을 참조하십시오.
+ Amazon Redshift 또는 Athena와 같은 다른 AWS 서비스에서 가져오려고 할 때 문제가 발생하면 데이터 가져오기를 수행하는 데 필요한 권한과 리소스를 구성했는지 확인합니다. 자세한 내용은 [가져오기](data-wrangler-import.md) 단원을 참조하십시오.
+ 그래도 문제가 지속되면 화면 오른쪽 상단에서 **도움 받기**를 선택하여 Data Wrangler 팀에 문의하세요. 자세한 내용은 다음 이미지를 참조하세요.  
![\[Data Wrangler 콘솔에서 Data Wrangler 도움말 양식의 위치입니다.\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/images/studio/mohave/get-help/get-help.png)  
![\[Data Wrangler 콘솔에서 Data Wrangler 도움말 양식입니다.\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/images/studio/mohave/get-help/get-help-forms.png)

최후의 수단으로 Data Wrangler가 실행 중인 커널을 다시 시작해 볼 수 있습니다.

1. 커널을 재시작할 .flow 파일을 저장하고 종료합니다.

1. 다음 이미지와 같이 ****실행 중인 터미널 및 커널**** 아이콘을 선택합니다.  
![\[콘솔에서 실행 중인 터미널 및 커널 아이콘의 위치입니다.\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/images/studio/mohave/stop-kernel-option.png)

1. 다음 이미지와 같이 커널을 종료하려는 .flow 파일 오른쪽에 있는 **중지** 아이콘을 선택합니다.  
![\[콘솔에서 중지 아이콘의 위치입니다.\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/images/studio/mohave/stop-kernel.png)

1. 브라우저를 새로 고칩니다.

1. 작업 중인 .flow 파일을 다시 엽니다.

## Amazon EMR 관련 문제 해결
<a name="data-wrangler-trouble-shooting-emr"></a>

다음 정보를 사용하면 Amazon EMR을 사용할 때 발생할 수 있는 오류를 해결하는 데 도움이 됩니다.
+ 연결 실패 - 다음 `The IP address of the EMR cluster isn't private error message` 메시지와 함께 연결이 실패하면 Amazon EMR 클러스터가 프라이빗 서브넷에서 시작되지 않았을 수 있습니다. 보안 모범 사례로서 Data Wrangler는 프라이빗 Amazon EMR 클러스터에 대한 연결만 지원합니다. 프라이빗 EC2 서브넷을 선택하여 EMR 클러스터를 시작합니다.
+ 연결 중단 및 시간 초과 - 이 문제는 네트워크 연결 문제 때문일 가능성이 큽니다. 클러스터에 연결하기 시작한 후 화면이 새로 고쳐지지 않습니다. 약 2분 후에 다음 `JdbcAddConnectionError: An error occurred when trying to connect to presto: xxx: Connect to xxx failed: Connection timed out (Connection timed out) will display on top of the screen.` 오류가 표시될 수 있습니다.

  오류에는 두 가지 근본 원인이 있을 수 있습니다.
  + Amazon EMR과 Amazon SageMaker Studio Classic이 서로 다른 VPC에 있습니다. 동일한 VPC에서 Amazon EMR과 Studio Classic을 모두 시작하는 것이 좋습니다. Amazon VPC 피어링도 사용할 수 있습니다. 추가 내용은 [VPC 피어링이란?](https://docs.aws.amazon.com/vpc/latest/peering/what-is-vpc-peering.html)을 참조하세요.
  + Amazon EMR 마스터 보안 그룹에는 Presto에 사용되는 포트의 Amazon SageMaker Studio Classic 보안 그룹에 대한 인바운드 트래픽 규칙이 없습니다. 이 문제를 해결하려면 포트 8889에서 인바운드 트래픽을 허용하세요.
+ 연결 유형이 잘못 구성되어 연결이 실패합니다. 다음 ` Data Wrangler couldn't create a connection to {connection_source} successfully. Try connecting to {connection_source} again. For more information, see Troubleshoot. If you’re still experiencing issues, contact support. ` 오류 메시지가 표시될 수 있습니다.

  인증 방법을 확인합니다. Data Wrangler에서 지정한 인증 방법은 클러스터에서 사용 중인 인증 방법과 일치해야 합니다.
+ LDAP 인증을 위한 HDFS 권한이 없음 - 다음 지침을 사용하여 [Linux 보안 인증을 이용한 HDFS 권한 설정](https://docs.aws.amazon.com/whitepapers/latest/teaching-big-data-skills-with-amazon-emr/set-up-hdfs-permissions-using-linux-credentials.html) 문제를 해결하세요. 다음 명령으로 클러스터에 로그인할 수 있습니다.

  ```
  hdfs dfs -mkdir /user/USERNAME
  hdfs dfs -chown USERNAME:USERNAME /user/USERNAME
  ```
+ LDAP 인증 연결 키 누락 오류 - 다음 `Data Wrangler couldn't connect to EMR hive successfully. JDBC connection is missing required connection key(s): PWD` 오류 메시지가 표시될 수 있습니다.

  LDAP 인증의 경우 사용자 이름과 암호를 모두 지정해야 합니다. Secrets Manager에 저장된 JDBC URL은 `PWD` 속성이 누락되었습니다.
+ LDAP 구성 문제를 해결하는 경우: LDAP Authenticator(LDAP 서버)가 Amazon EMR 클러스터에 연결하도록 올바르게 구성되어 있는지 확인하는 것이 좋습니다. `ldapwhoami` 명령을 사용하면 구성 문제를 해결하는 데 도움이 됩니다. 예를 들어, 다음 명령을 실행할 수 있습니다.
  + LDAPS의 경우 - `ldapwhoami -x -H ldaps://ldap-server`
  + LDAP의 경우 - `ldapwhoami -x -H ldap://ldap-server`

  Authenticator를 성공적으로 구성한 경우 두 명령 중 하나가 `Anonymous`를 반환해야 합니다.

## Salesforce 관련 문제 해결
<a name="data-wrangler-troubleshooting-salesforce-data-cloud"></a>

### 수명 주기 구성 오류
<a name="data-wrangler-troubleshooting-salesforce-lcc-debug-data-cloud"></a>

사용자가 Studio Classic을 처음 열면 수명 주기 구성에 문제가 있다는 오류 메시지가 표시될 수 있습니다. Amazon CloudWatch를 사용하여 수명 주기 구성 스크립트로 작성된 로그에 액세스할 수 있습니다. 수명 주기 구성 디버깅에 대한 추가 정보는 [Amazon SageMaker Studio Classic의 수명 주기 구성 디버깅](studio-lcc-debug.md) 섹션을 참조하세요.

오류를 디버깅할 수 없는 경우 구성 파일을 수동으로 생성할 수 있습니다. Jupyter 서버를 삭제하거나 다시 시작할 때마다 파일을 만들어야 합니다. 다음 절차에 따라 수동으로 파일을 생성하세요.

**구성 파일을 생성하려면**

1. Studio Classic으로 이동합니다.

1. **파일**, **새로 만들기**, **터미널** 순으로 선택합니다.

1. `.sfgenie_identity_provider_oauth_config` 생성.

1. 텍스트 편집기에서 파일을 엽니다.

1. Secrets Manager 보안 암호의 Amazon 리소스 이름(ARN)이 포함된 JSON 객체를 파일에 추가합니다. 다음 템플릿을 사용하여 객체를 생성할 수 있습니다.

   ```
   {
     "secret_arn": "example-secret-ARN"
   }
   ```

1. 파일에 대한 변경 사항을 저장합니다.

### Data Wrangler 플로우에서 Salesforce 데이터 클라우드에 액세스할 수 없습니다.
<a name="data-wrangler-troubleshooting-salesforce-datacloud-access"></a>

사용자가 Data Wrangler 플로우에서 **Salesforce 데이터 클라우드**를 선택한 후에는 연결 설정을 위한 사전 조건이 충족되지 않았다는 오류 메시지가 표시될 수 있습니다. 다음 오류가 원인일 수 있습니다.
+ Secrets Manager의 Salesforce 보안 암호는 아직 생성되지 않았습니다.
+ Secrets Manager의 Salesforce 보안 암호가 생성되었지만 Salesforce 태그가 누락되었습니다.
+ Secrets Manager의 Salesforce 보안 암호가에서 잘못 생성되었습니다 AWS 리전. 예를 들어, `us-east-1`에서 보안 암호를 만들었기 때문에 사용자가 `ca-central-1`에서 Salesforce 데이터 클라우드에 액세스할 수 없습니다. `ca-central-1`에 보안 암호를 복제하거나 `ca-central-1`에서와 동일한 자격 증명을 사용하여 새 보안 암호 생성을 할 수 있습니다. 보안 암호 복제에 대한 자세한 내용은 [다른에 AWS Secrets Manager 보안 암호 복제를 참조하세요 AWS 리전](https://docs.aws.amazon.com/secretsmanager/latest/userguide/create-manage-multi-region-secrets.html).
+ 사용자가 Amazon SageMaker Studio Classic에 액세스하는 데 사용하는 정책에에 대한 권한이 없습니다. AWS Secrets Manager
+ 수명 주기 구성을 통해 지정한 JSON 객체의 Secrets Manager ARN에 오타가 있습니다.
+ Salesforce OAuth 구성을 포함하는 Secrets Manager 보안 암호에 오타가 있습니다.

### `redirect_uri_mismatch`를 표시하는 빈 페이지
<a name="data-wrangler-troubleshooting-salesforce-data-cloud-blank-page"></a>

사용자가 **저장 및 연결**을 선택하면 `redirect_uri_mismatch`를 표시되는 페이지로 리디렉션될 수 있습니다. Salesforce Connected App 설정에 등록한 콜백 URI가 누락되었거나 올바르지 않습니다.

다음 URL을 사용하여 Studio Classic URL이 Salesforce 조직의 Connected App 설정 `https://EXAMPLE_SALESFORCE_ORG/lightning/setup/NavigationMenus/home/`에 올바르게 등록되었는지 확인하세요. Connected App 설정 사용에 대한 추가 정보를 보려면 다음 `https://EXAMPLE_SALESFORCE_ORG/lightning/setup/NavigationMenus/home/` URL로 이동하세요.

**참고**  
Salesforce 시스템 내에서 URI를 전파하는 데 약 10분이 걸립니다.

### 공유 공간
<a name="data-wrangler-troubleshooting-salesforce-data-cloud-shared-spaces"></a>

공유 공간은 현재 Salesforce 데이터 클라우드 통합과 함께 사용할 수 없습니다. Amazon SageMaker AI 도메인에서 사용하려는 공유 스페이스를 삭제하거나 공유 스페이스가 설정되지 않은 다른 도메인을 사용할 수 있습니다.

### OAuth 리디렉션 오류
<a name="data-wrangler-troubleshooting-salesforce-data-cloud-oauth-error"></a>

사용자는 **연결**을 선택한 후 Salesforce 데이터 클라우드에서 데이터를 가져올 수 있어야 합니다. 오류가 발생하는 경우 다음과 같이 하도록 요청하는 것이 좋습니다.
+ 잠시 대기하도록 지시 - Amazon SageMaker Studio Classic으로 다시 리디렉션되면 인증 프로세스를 완료하는 데 최대 1분이 걸릴 수 있습니다. 리디렉션되는 동안에는 브라우저와의 상호 작용을 피하도록 안내하는 것이 좋습니다. 예를 들어 브라우저 탭을 닫거나 다른 탭으로 전환하거나 Data Wrangler 플로우와 상호 작용해서는 안 됩니다. 브라우저와 상호 작용하면 데이터 클라우드에 연결하는 데 필요한 인증 코드가 제거될 수 있습니다.
+ 사용자가 데이터 클라우드에 다시 연결하도록 요청하세요. - Salesforce 데이터 클라우드에 대한 연결이 실패할 수 있는 일시적인 문제가 있습니다. 사용자에게 새 Data Wrangler 플로우를 만들고 Salesforce 데이터 클라우드에 다시 연결해 보라고 하세요.
+ 사용자가 Amazon SageMaker Studio Classic이 열린 다른 탭을 모두 닫도록 하세요. Studio Classic을 여러 탭에서 열어 두면 Salesforce Data Cloud 연결이 실패할 수 있습니다. 사용자가 Studio Classic 탭을 하나만 열어 놓도록 하세요.
+ 동시에 여러 사용자가 Studio Classic에 액세스 - 한 번에 한 명의 사용자만 Amazon SageMaker AI 도메인에 액세스할 수 있습니다. 여러 사용자가 동일한 도메인에 액세스하는 경우 사용자가 Salesforce Data Cloud에 만들려고 하는 연결이 실패할 수 있습니다.

Data Wrangler와 Studio Classic을 모두 업데이트하면 오류가 수정될 수도 있습니다. Data Wrangler 업데이트에 대한 자세한 내용은 [Data Wrangler 업데이트](data-wrangler-update.md) 섹션을 참조하세요. Studio Classic에 대한 자세한 내용은 [Amazon SageMaker Studio Classic 종료 및 업데이트](studio-tasks-update-studio.md) 섹션을 참조하세요.

위의 문제 해결 단계를 수행해도 문제가 해결되지 않으면 Studio Classic URL에 해당 설명이 포함된 Salesforce의 오류 메시지가 표시될 수 있습니다. 다음 예제 메시지가 나올 수 있습니다: `error=invalid_client_id&error_description=client%20identifier%20invalid`

URL에서 오류 메시지를 살펴보고 이로 인해 발생하는 문제를 해결할 수 있습니다. 오류 메시지나 설명이 명확하지 않은 경우 Salesforce 지식 기반을 검색하는 것이 좋습니다. 지식 기반 검색을 이용할 수 없는 경우 Salesforce 헬프 데스크에 문의하여 추가 지원을 받을 수 있습니다.

### Data Wrangler를 로드하는 데 시간이 오래 걸림
<a name="data-wrangler-troubleshooting-salesforce-data-cloud-long-load-time"></a>

사용자가 Salesforce 데이터 클라우드에서 Data Wrangler로 다시 리디렉션되는 경우 로드 시간이 길어질 수 있습니다.

사용자가 Data Wrangler를 처음 사용하거나 커널을 삭제한 경우, Data Wrangler를 사용하도록 새 Amazon EC2 인스턴스를 프로비저닝하는 데 약 5분이 걸릴 수 있습니다.

사용자가 Data Wrangler를 처음 사용하는 것이 아니고 커널을 삭제하지 않은 경우에는 페이지를 새로 고치거나 브라우저 탭을 최대한 많이 닫도록 요청할 수 있습니다.

위의 방법으로 문제가 해결되지 않으면 Salesforce 데이터 클라우드에 대한 새 연결을 설정하도록 하세요.

### `Invalid batch Id` 오류가 발생하여 사용자가 데이터를 내보내지 못했습니다.
<a name="data-wrangler-troubleshooting-salesforce-data-cloud-processing-job-fails-batch-id"></a>

사용자가 Salesforce 데이터로 변환한 내용을 내보내는 경우 Data Wrangler가 백엔드에서 사용하는 SageMaker Processing 작업이 실패할 수 있습니다. Salesforce 데이터 클라우드를 일시적으로 사용할 수 없거나 캐싱 문제가 있을 수 있습니다.

이 문제를 해결하려면 사용자가 데이터를 가져오는 단계로 돌아가 쿼리하는 열의 순서를 변경하도록 하는 것이 좋습니다. 예를 들어 다음 쿼리를 변경할 수 있습니다.

```
SELECT col_A, col_B FROM table                
```

다음 쿼리를 실행하려면:

```
SELECT col_B, col_A FROM table                
```

열의 순서를 변경하고 이후에 수행한 변환이 여전히 유효한지 확인한 후에는 데이터 내보내기를 다시 시작할 수 있습니다.

### 사용자는 매우 큰 데이터세트를 내보낼 수 없습니다.
<a name="data-wrangler-troubleshooting-salesforce-data-cloud-processing-job-fails-query"></a>

사용자가 Salesforce 데이터 클라우드에서 매우 큰 데이터세트를 가져온 경우 변환한 내용을 내보내지 못할 수 있습니다. 대규모 데이터세트는 행이 너무 많거나 복잡한 쿼리로 인해 발생할 수 있습니다.

사용자에게 다음 작업을 수행하도록 하는 것이 좋습니다.
+ SQL 쿼리 단순화하기
+ 데이터 샘플링

쿼리를 단순화하는 데 사용할 수 있는 몇 가지 전략은 다음과 같습니다.
+ `*` 연산자를 사용하는 대신 열 이름을 지정하세요.
+ 더 큰 서브셋을 사용하는 대신 가져오려는 데이터의 서브셋 찾기
+ 초대형 데이터세트 간 조인 최소화

샘플링을 사용하여 데이터세트의 행 수를 줄일 수 있습니다. 샘플링 방법에 대한 자세한 내용은 사용자가 [샘플링](data-wrangler-transform.md#data-wrangler-transform-sampling) 섹션을 참조할 수 있습니다.

### 잘못된 새로 고침 토큰으로 인해 사용자가 데이터를 내보낼 수 없습니다.
<a name="data-wrangler-troubleshooting-salesforce-data-cloud-processing-job-fails-invalid-token"></a>

Data Wrangler는 JDBC 드라이버를 사용하여 Salesforce 데이터 클라우드와 통합합니다. 인증 방법은 OAuth입니다. OAuth의 경우 새로 고침 토큰과 액세스 토큰은 Salesforce 데이터 클라우드 내의 리소스에 대한 액세스를 승인하는 데 사용되는 서로 다른 두 개의 데이터입니다.

액세스 토큰 또는 코어 토큰을 사용하면 Data Wrangler를 통해 Salesforce 데이터에 액세스하고 쿼리를 직접 실행할 수 있습니다. 수명이 짧고 빨리 만료되도록 설계되었습니다. Salesforce 데이터에 대한 액세스를 유지하기 위해 Data Wrangler는 새로 고침 토큰을 사용하여 Salesforce로부터 새 액세스 토큰을 받습니다.

새로 고침이 너무 빨리 만료되도록 설정하여 사용자에게 새 액세스 토큰을 제공할 수 없을 수도 있습니다. 새로 고침 토큰 정책을 다시 검토하여 사용자에 대해 실행하는 데 시간이 오래 걸리는 쿼리를 수용할 수 있는지 확인해야 할 수도 있습니다. 새로 고침 토큰 정책을 구성하는 방법에 대한 자세한 내용은 `https://EXAMPLE_SALESFORCE_ORG_URL/lightning/setup/ConnectedApplication/home/` 섹션을 참조하세요.

### 쿼리가 실패하거나 테이블이 로드되지 않음
<a name="data-wrangler-troubleshooting-salesforce-data-cloud-table-not-loading"></a>

Salesforce에서 서비스 중단이 발생했습니다. 모든 것을 올바르게 구성했더라도 사용자가 일정 기간 동안 데이터를 가져오지 못할 수 있습니다.

유지 관리 상의 이유로 서비스 중단이 발생할 수 있습니다. 다음 날 문제가 해결되었는지 확인하는 것이 좋습니다.

하루 이상 문제가 발생하는 경우 Salesforce 헬프 데스크에 문의하여 추가 지원을 받는 것이 좋습니다. Salesforce에 문의하는 방법에 대한 자세한 내용은 [Salesforce에 어떻게 문의하시겠습니까?](https://www.salesforce.com/company/contact-us/)를 참조하세요.

### Studio Classic 리디렉션 중 `OAUTH_APP_BLOCKED`
<a name="data-wrangler-troubleshooting-salesforce-data-cloud-oauth-app-blocked"></a>

사용자가 Amazon SageMaker Studio Classic으로 다시 리디렉션되면 URL 내에서 `error=OAUTH_APP_BLOCKED` 쿼리 파라미터를 확인할 수 있습니다. 하루 안에 저절로 해결되어야 하는 일시적인 문제가 발생하고 있을 수 있습니다.

Connected App에 대한 사용자의 접근도 차단했을 수 있습니다. 이 문제 해결에 대한 자세한 내용은 `https://EXAMPLE_SALESFORCE_ORG_URL/lightning/setup/ConnectedApplication/home/` 섹션을 참조하세요.

### Studio Classic 리디렉션 중 `OAUTH_APP_DENIED`
<a name="data-wrangler-troubleshooting-salesforce-data-cloud-oauth-app-access-denied"></a>

사용자가 Amazon SageMaker Studio Classic으로 다시 리디렉션되면 URL 내에서 `error=OAUTH_APP_ACCESS_DENIED` 쿼리 파라미터를 확인할 수 있습니다. Data Wrangler와 관련된 `Connected App`에 액세스할 권한을 프로필 유형에 부여하지 않았습니다.

액세스 문제를 해결하려면 `https://EXAMPLE_SALESFORCE_ORG_URL/lightning/setup/ManageUsers/home/`으로 이동해 해당 사용자가 올바른 프로필에 할당되었는지 확인하세요.

# Amazon EC2 인스턴스 제한 상향
<a name="data-wrangler-increase-instance-limit"></a>

Data Wrangler를 사용할 경우 `The following instance type is not available: ml.m5.4xlarge. Try selecting a different instance below.`(이)라는 오류 메시지가 나타날 수 있습니다.

이 메시지는 다른 인스턴스 유형을 선택해야 한다는 뜻일 수도 있지만, Amazon EC2 인스턴스가 부족하여 워크플로에서 Data Wrangler를 실행할 수 없다는 뜻일 수도 있습니다. 사용자는 다음 절차에 따라 인스턴스 수를 늘릴 수 있습니다.

인스턴스 수를 늘리려면 다음 방법대로 하세요.

1. 를 엽니다 AWS Management Console.

1. 검색 창에 **Services Quotas**을(를) 입력하세요.

1. **Service Quotas**를 선택하세요.

1. **AWS 서비스**를 선택하세요.

1. 검색 창에 **Amazon SageMaker AI**을(를) 입력하세요.

1. **Amazon SageMaker AI**를 선택합니다.

1. **Service Quotas** 란에 **Studio KernelGateway Apps running on *ml.m5.4xlarge* instance**을(를) 입력하세요.
**참고**  
ml.m5.4xlarge는 Data Wrangler의 기본 인스턴스 유형입니다. 사용자는 다른 인스턴스 유형을 사용하고 해당 인스턴스 유형에 대한 할당량 증가를 요청할 수 있습니다. 자세한 내용은 [인스턴스](data-wrangler-data-flow.md#data-wrangler-data-flow-instances) 단원을 참조하십시오.

1. ***ml.m5.4xlarge* 인스턴스에서 실행되는 Studio 커널 게이트웨이 앱**을 선택하세요.

1. **할당량 증가 요청**을 선택합니다.

1. **할당량 값 변경**에서 **적용된 할당량 값**보다 큰 값을 지정하세요.

1. **요청**을 선택합니다.

요청이 승인되면는 계정과 연결된 이메일 주소로 알림을 AWS 보냅니다. 사용자는 **Service Quotas** 페이지에서 **할당량 요청 내역**을 선택하여 요청의 상태를 확인할 수도 있습니다. 처리된 요청은 **마감** **상태**입니다.

# Data Wrangler 업데이트
<a name="data-wrangler-update"></a>

Data Wrangler를 최신 버전으로 업데이트하려면 먼저 Amazon SageMaker Studio Classic 제어판에서 해당 KernelGateway 앱을 종료해야 합니다. KernelGateway 앱을 종료한 후, Studio Classic에서 새로운 또는 기존의 Data Wrangler 흐름을 열어 앱을 다시 시작합니다. 새로운 또는 기존의 Data Wrangler 플로우를 열면 시작되는 커널에 최신 버전의 Data Wrangler가 포함됩니다.

**Studio Classic 및 Data Wrangler 인스턴스를 업데이트합니다.**

1. [SageMaker AI 콘솔](https://console.aws.amazon.com/sagemaker)로 이동합니다.

1. SageMaker AI를 선택한 다음, Studio Classic을 선택합니다.

1. 사용자 이름을 선택합니다.

1. **앱**에서 **앱 이름**을 표시하는 행에서 `sagemaker-data-wrang`로 시작하는 앱 및 JupyterServer 앱에 대해 **앱 삭제**를 선택합니다.

1. **예, 앱을 삭제합니다**를 선택합니다.

1. 확인란에 `delete`를 입력합니다.

1. **삭제**를 선택합니다.

1. Studio Classic 인스턴스를 다시 엽니다. Data Wrangler 플로우을 생성하기 시작하면 이제 인스턴스가 최신 버전의 Data Wrangler를 사용합니다.

또는, 최신 버전이 아닌 Data Wrangler 애플리케이션 버전을 사용 중이고 기존 Data Wrangler 흐름이 열려 있는 경우 Studio Classic UI에 Data Wrangler 애플리케이션 버전을 업데이트하라는 메시지가 표시됩니다. 아래 스크린샷에서 이러한 메시지를 볼 수 있습니다.

**중요**  
이렇게 하면 Data Wrangler 커널 게이트웨이 앱만 업데이트됩니다. 그래도 여전히 사용자 계정에서 JupyterServer 앱을 종료해야 합니다. 이를 수행하려면 바로 이전의 단계를 따르세요.

![\[Data Wrangler 콘솔의 Data Wrangler 업데이트 섹션입니다.\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/images/data-wrangler-1click-restart.png)


**나중에 알림**을 선택할 수도 있습니다. 이 경우 화면 오른쪽 상단에 **업데이트** 버튼이 나타납니다.

![\[Data Wrangler 콘솔에서 업데이트의 위치입니다.\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/images/data-wrangler-1click-restart-update.png)


# Data Wrangler 종료
<a name="data-wrangler-shut-down"></a>

Data Wrangler를 사용하지 않을 때는 추가 요금이 발생하지 않도록 Data Wrangler가 실행되는 인스턴스를 종료해야 합니다.

작업 손실을 방지하려면 Data Wrangler를 종료하기 전에 데이터 흐름을 저장하세요. Studio Classic에서 데이터 흐름을 저장하려면 **파일**을 선택한 다음 **Data Wrangler 흐름 저장**을 선택하세요. Data Wrangler는 60초마다 데이터 흐름을 자동으로 저장합니다.

**Studio Classic에서 Data Wrangler 인스턴스를 종료하는 방법은 다음과 같습니다.**

1. Studio Classic에서 **실행 중인 인스턴스 및 커널** 아이콘(![\[Icon of a gear or cog symbol representing settings or configuration options.\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/images/icons/studio_classic_dw_instances.png))을 선택합니다.

1. **실행 중인 앱** 아래에 **sagemaker-data-wrangler-1.0** 앱이 나타납니다. 이 앱 옆에 있는 종료 아이콘(![\[Power button icon with a circular shape and vertical line symbol.\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/images/icons/Shutdown_light.png))을 선택합니다.

   Data Wrangler는 ml.m5.4xlarge 인스턴스에서 실행됩니다. Data Wrangler 앱을 종료하면 **실행 중인 인스턴스**에서 이 인스턴스가 사라집니다.

**중요**  
Data Wrangler를 다시 열면 Amazon EC2 인스턴스가 애플리케이션 실행을 시작하고 컴퓨팅 요금이 부과됩니다. 컴퓨팅 외에도 사용하는 스토리지에 대해서도 요금이 부과됩니다. 예를 들어 Data Wrangler와 함께 사용 중인 모든 Amazon S3 버킷에 대해 요금이 부과됩니다.  
애플리케이션을 종료한 후에도 여전히 Data Wrangler 요금이 청구되는 경우 유휴 세션을 자동으로 종료하는 데 사용할 수 있는 Jupyter 확장이 있습니다. 확장에 대한 자세한 내용은 [SageMaker-Studio-Autoshutdown-Extension](https://github.com/aws-samples/sagemaker-studio-auto-shutdown-extension)을 참조하세요.

Data Wrangler 앱을 종료한 후, 다음번에 Data Wrangler 흐름 파일을 열려면 앱을 다시 시작해야 합니다. 몇 분 정도 소요될 수 있습니다.