

# Visual ETL ジョブの作成
<a name="author-job-glue"></a>

## AWS Glue Studio で Visual ETL ジョブを作成する
<a name="build-etl-jobs-glue-studio"></a>

 AWS Glue Studio では、AWS Glue で抽出、変換、ロード (ETL) ジョブを作成、実行、監視するためのビジュアルインターフェイスが提供されています。AWS Glue でのジョブは、抽出、変換、ロード (ETL) 作業を実行するビジネスロジックで構成されます。AWS Glue Studio を使用すると、データ変換ワークフローを視覚的に作成し、AWS Glue の Apache Spark ベースのサーバーレス ETL エンジン上でそれらをシームレスに実行することができます。ドラッグアンドドロップインターフェイスを使用して、さまざまなデータストアやストリーム間でデータを移動して変換するジョブを作成できるため、Spark を学ぶ必要も、コードを記述する必要もありません。

AWS Glue ジョブには、ソースデータに接続して処理し、データターゲットに書き出すスクリプトがカプセル化されています。通常、ジョブは、抽出、変換、ロード (ETL) スクリプトを実行します。ジョブは、Apache Spark および Ray ランタイム環境向けに設計されたスクリプトを実行できます。ジョブは、汎用 Python スクリプト (Python シェルジョブ) も実行できます。AWS Glue トリガーは、スケジュールやイベントに基づいて、またはオンデマンドでジョブを開始できます。ジョブ実行をモニタリングすると、完了ステータス、継続時間、開始時間などのランタイムメトリクスを知ることができます。

AWS Glue で生成されたスクリプトを使用することも、独自のスクリプトを使用することもできます。ソーススキーマとターゲット位置またはスキーマを指定すると、AWS Glue Studio コードジェネレーターで Apache Spark API (PySpark) スクリプトを自動的に作成できます。このスクリプトを出発点として使用し、目標に合わせて編集できます。

AWS Glue では出力ファイルを複数のデータ形式で書き込むことができます。各ジョブタイプは異なる出力形式をサポートしている場合があります。一部のデータ形式では、一般的な圧縮形式を記述できます。

### AWS コンソールでの AWS Glue ジョブの管理
<a name="console-jobs"></a>

既存のジョブを表示するには、AWS マネジメントコンソール にサインインし、AWS Glue コンソール ([https://console.aws.amazon.com/glue/](https://console.aws.amazon.com/glue/)) を開きます。その後、** の [**ジョブAWS Glue] タブを選択します。[**Jobs**] (ジョブ) リストは、ジョブが最後に変更されたとき各ジョブに関連付けられたスクリプトの場所、および現在のジョブのブックマークオプションを表示します。

 ** コンソールの [**ETLAWS Glue] セクションでジョブを作成できます。新しいジョブの作成中またはジョブの保存後、can AWS Glue Studio を使用して、ETL ジョブを変更できます。これを行うには、ビジュアルエディタでノードを編集するか、デベロッパーモードでジョブスクリプトを編集します。ビジュアルエディタでノードを追加および削除して、より複雑な ETL ジョブを作成することもできます。

### AWS Glue Studio でジョブを作成するための次のステップ
<a name="create-jobs-next"></a>

ジョブのノードを設定するには、ビジュアルジョブエディタを使用します。各ノードは、ソース位置からのデータの読み取り、データへの変換の適用などのアクションに対応しています。ジョブに追加する各ノードには、データの場所または変換に関する情報を指定するためのプロパティがあります。

ジョブを作成および管理するための次のステップは、以下のとおりです。
+ [AWS Glue Studio でビジュアル ETL ジョブを開始する](edit-nodes-chapter.md)
+ [ジョブスクリプトの表示](managing-jobs-chapter.md#view-job-script)
+ [ジョブのプロパティを変更する](managing-jobs-chapter.md#edit-jobs-properties)
+ [ジョブの保存](managing-jobs-chapter.md#save-job)
+ [ジョブの実行の開始](managing-jobs-chapter.md#start-jobs)
+ [最近のジョブの実行の情報を表示する](managing-jobs-chapter.md#view-job-run-details)
+ [ジョブモニタリングダッシュボードにアクセスする](view-job-runs.md#monitoring-accessing-dashboard)

## Amazon SageMaker を使用して Visual ETL フローを構築する
<a name="build-etl-jobs-smus"></a>

 Amazon SageMaker Unified Studio ワークフローを使用すると、Amazon SageMaker Unified Studio で一連のタスクをセットアップして実行することができます。Amazon SageMaker Unified Studio ワークフローは Apache Airflow を使用してデータ処理手順をモデル化し、Amazon SageMaker Unified Studio のコードアーティファクトをオーケストレーションします。詳細については、「[Using workflows in Amazon SageMaker Unified Studio](https://docs.aws.amazon.com/sagemaker-unified-studio/latest/userguide/workflow-orchestration.html)」を参照してください。

# AWS Glue Studio でビジュアル ETL ジョブを開始する
<a name="edit-nodes-chapter"></a>

AWS Glue Studio ではシンプルなビジュアルインターフェイスを使用して、ETL ジョブを作成できます。新しいジョブは、[**Jobs**] (ジョブ) ページを使用して作成します。また、スクリプトエディタを使用して、AWS Glue Studio ETL ジョブスクリプト内のコードを直接操作することも可能です。

AWS Glue Studio または AWS Glue で作成したすべてのジョブは、[**Jobs**] (ジョブ) ページで確認することができます。このページでは、ジョブを表示、管理、および実行できます。

 AWS Glue Studio で ETL ジョブを作成する方法の別の例については、[ブログチュートリアル](https://aws.amazon.com/blogs/big-data/making-etl-easier-with-aws-glue-studio/)も参照してください。

## AWS Glue Studio でのジョブの開始
<a name="create-jobs-start"></a>

 AWS Glue では、ビジュアルインターフェイスやインタラクティブなコードの Notebook を通じて、またはスクリプトエディタを使用してジョブを作成できます。オプションのいずれかをクリックしてジョブを開始することも、サンプルジョブに基づいて新しいジョブを作成することもできます。

 サンプルジョブでは、選択したツールでジョブが作成されます。例えば、サンプルジョブを使用すると、CSV ファイルをカタログテーブルに結合するビジュアル ETL ジョブを作成したり、Pandas を操作するときに AWS Glue for Ray または AWS Glue for Spark を使用してインタラクティブなコードの Notebook でジョブを作成したり、SparkSQL を使用してインタラクティブなコードの Notebook でジョブを作成したりできます。

### AWS Glue Studio でゼロからのジョブの作成
<a name="create-jobs-start-from-scratch"></a>

1. AWS マネジメントコンソール にサインインして、AWS Glue Studio コンソール ([https://console.aws.amazon.com/gluestudio/](https://console.aws.amazon.com/gluestudio/)) を開きます。

1.  ナビゲーションペインで、**[ETL ジョブ]** を選択します。

1.  **[ジョブを作成する]** セクションで、ジョブの設定オプションを選択します。  
![\[\]](http://docs.aws.amazon.com/ja_jp/glue/latest/dg/images/sample-jobs.png)

    ジョブを最初から作成するためのオプション: 
   +  **ビジュアル ETL** – データフローに重点を置いたビジュアルインターフェイスでの作成 
   +  **インタラクティブなコードの Notebook を使用して作成** – Jupyter Notebook に基づいて、Notebook インターフェイスでジョブをインタラクティブに作成 

      このオプションを選択した場合、Notebook 作成セッションを作成する前に、追加情報を指定する必要があります。この情報の指定方法の詳細については、[AWS Glue Studio 中でのノートブックの使用開始](notebook-getting-started.md) を参照してください。
   + **スクリプトエディタを使用してコードを作成** – プログラミングと ETL スクリプトの記述をよく知っている場合には、このオプションを選択して、新しい Spark ETL ジョブを作成します。エンジン (Python シェル、Ray、Spark (Python)、または Spark (Scala)) を選択します。次に、**[新規に開始]** または **[スクリプトをアップロード]** を選択し、ローカルファイルから既存のスクリプトをアップロードします。スクリプトエディタの使用を選択した場合は、ビジュアルジョブエディタを使用してジョブを設計または編集することはできません。

     Spark ジョブは、AWS Glue によって管理される Apache Spark 環境で実行されます。デフォルトでは、新しいスクリプトは Python でコーディングします。新しい Scala スクリプトを作成する場合は、「[AWS Glue Studio 中の Scala スクリプトの作成および編集](edit-nodes-script.md#edit-job-scala-script)」を参照してください。

### AWS Glue Studio で、サンプルジョブからジョブの作成
<a name="create-jobs-start-from-example-job"></a>

 サンプルジョブからジョブを作成できます。**[サンプルジョブ]** セクションでオプションを選択し、**[サンプルジョブの作成]** を選択します。いずれかのオプションから作成したサンプルジョブを手軽なテンプレートとして作業を開始できます。

1. AWS マネジメントコンソール にサインインして、AWS Glue Studio コンソール ([https://console.aws.amazon.com/gluestudio/](https://console.aws.amazon.com/gluestudio/)) を開きます。

1.  ナビゲーションペインで、**[ETL ジョブ]** を選択します。

1.  サンプルジョブからジョブを作成するためのオプションを次の中から選択します。
   +  **複数のソースを結合するビジュアル ETL ジョブ** – 3 つの CSV ファイルを読み取り、データを結合し、データ型を変更し、データを Amazon S3 に書き込み、後でクエリできるようにカタログ化します。
   +  **Pandas を使用した Spark Notebook** – 一般的な Pandas フレームワークと Spark を組み合わせてデータを探索および可視化します。
   +  **SQL を使用した Spark Notebook** – SQL を使用して Apache Spark をすぐに開始できます。AWS Glue データカタログからデータにアクセスし、使い慣れたコマンドを使用してデータを変換します。

1. **[サンプルジョブの作成]** を選択します。

# ジョブエディタの機能
<a name="job-editor-features"></a>

ジョブエディタでは、ジョブの作成と編集のための次の機能が提供されています。
+ ジョブの視覚的な図。各ジョブタスクのノード (データを読み取るデータソースノード、データを修正する変換ノード、データを書き込むデータターゲットノード) が示されます。

  ジョブ図では、各ノードのプロパティを表示および設定できます。また、各ノードのスキーマとサンプルデータを表示することもできます。これらの機能により、ジョブを実行することなく、ジョブでデータが正しい方法で変更および変換されていることを確認できます。
+ [Script viewing and editing] (スクリプトの表示と編集) タブ。ジョブ用に生成されたコードを変更できます。
+ [Job details] (ジョブの詳細) タブ。さまざまな設定を行い、AWS Glue ETL ジョブの実行環境をカスタマイズできます。
+ [Runs] (実行) タブ。現在実行中のジョブや以前実行したジョブの表示、ジョブの実行のステータスの表示、ジョブの実行用のログへのアクセスを行えます。
+ [データ品質] タブでは、データ品質ルールをジョブに適用できます。
+ [Schedules] (スケジュール) タブ。ジョブの開始時間を設定したり、ジョブの実行を定期的に設定できます。
+ バージョン管理タブ。ジョブで使用する Git サービスを設定できます。

## ビジュアルジョブエディタでスキーマのプレビューを使用する
<a name="schema-previews"></a>

ジョブの作成中または編集中に、[**Output schema**] (出力スキーマ) タブをクリックして、データのスキーマを表示できます。

スキーマを表示するには、ジョブエディタにデータソースへのアクセス許可が必要です。エディタの [Job details] (ジョブの詳細) タブ、またはノードの [**Output schema**] (出力スキーマ) タブで IAM ロールを指定できます。データソースへのアクセスに必要なすべてのアクセス許可が IAM ロールにある場合は、ノードの [**Output schema**] (出力スキーマ) タブのスキーマを表示できます。

## ビジュアルジョブエディタでデータのプレビューを使用する
<a name="data-previews"></a>



[![AWS Videos](http://img.youtube.com/vi/https://www.youtube.com/embed/EqmljEWlp0c/0.jpg)](http://www.youtube.com/watch?v=https://www.youtube.com/embed/EqmljEWlp0c)




データのプレビューを使用することで、ジョブを繰り返し実行することなく、データのサンプルを使用してジョブを作成およびテストできます。データプレビューを使用すると、次を実行できます。
+ IAM ロールをテストして、データソースまたはデータターゲットにアクセスできることを確認します。
+ 変換により、意図した方法でデータが変更されていることを確認します。例えば、フィルター変換を使用する場合、フィルターでデータの適切なサブセットが選択されていることを確認できます。
+ データを確認する。データセットに複数のタイプの値を持つ列が含まれている場合、データのプレビューには、これらの列のタプルのリストが表示されます。各タプルには、データ型とその値が含まれています。

**注記**  
 データプレビューセッションおよびカスタム SQL またはカスタムコードノードを使用する場合、データプレビューセッションはデータセット全体に SQL またはコードブロックをそのまま実行します。

 ジョブの作成中または編集中に、**[Data preview]** タブをクリックして、データのサンプルを表示できます。ジョブでロールが既に設定されている場合、またはアカウントでデフォルトの IAM ロールが設定されている場合、新しいデータプレビューセッションが自動的に開始されます。ロールが事前に設定されていない場合は、ロールを選択してセッションを開始できます。

**注記**  
 データプレビューセッション用に選択したロールは、ジョブにも使用されます。



 情報アイコンをクリックすると、セッションのステータスと進行状況、およびセッションの詳細を確認できます。

 セッションの準備が完了すると、AWS Glue Studio は選択したノードのためにデータをロードします。進捗に伴う **[完了率 (%)]** を表示できます。

![\[スクリーンショットは、開始されたノードの [データのプレビュー] タブを示しています。\]](http://docs.aws.amazon.com/ja_jp/glue/latest/dg/images/data-preview-progress.png)


 ビジュアルジョブを作成する際に、**[出力スキーマ]** タブで **[セッションからスキーマを推測]** を切り替えると、AWS Glue Studio は選択したノードのスキーマを自動的に更新します。

![\[スクリーンショットは、開始されたノードの [データのプレビュー] タブを示しています。\]](http://docs.aws.amazon.com/ja_jp/glue/latest/dg/images/data-preview-output-schema.png)


 データプレビューの設定を行うには: 

設定アイコン (歯車の記号) を選択して、データのプレビューの設定を行えます。これらの設定は、ジョブ図のすべてのノードに適用されます。以下の操作を実行できます。
+ テキストを 1 行から次の行に折り返す場合に選択します。デフォルトでは、このオプションは有効になっています
+ 行数を変更する (デフォルトは 200) 
+ IAM ロールを選択するか、または、必要であれば新しいロールを作成
+ ジョブの作成時に新しいセッションを自動的に開始することを選択します。これにより、ジョブの作成時に新しいインタラクティブセッションがプロビジョニングされます。**この設定はアカウントレベルで適用されます。**一度設定すると、ジョブの編集時にアカウント内のすべてのユーザーに適用されます。
+ スキーマを自動的に推論する場合に選択します。出力スキーマは、選択したノードのために自動的に推論されます
+ AWS Glue ライブラリを自動的にインポートする場合に選択します。これは、セッションの再起動を必要とする新しい変換を追加する際に、データプレビューが新しいセッションを再起動するのを防ぐため、有益です。

 追加機能には次の機能が含まれます。
+ [**Previewing x of y fields**] (X/Y フィールドのプレビュー) ボタンをクリックして、プレビューする列 (フィールド) を選択できます。デフォルトの設定を使用してデータをプレビューすると、ジョブエディタにはデータセットの最初の 5 列が表示されます。これを、[show all] (すべて表示) または [none] (なし) (非推奨) に変更できます。
+ データのプレビューウィンドウは、水平方向と垂直方向の両方にスクロールします。
+ 最大化ボタンを使用して、[Data preview] タブをジョブグラフ画面全体に展開し、データおよびデータ構造をより詳しく表示できます。同様に、最小化ボタンを使用して [Data preview] タブを最小化します。ハンドルペインをつかんで上にドラッグして **[Data preview]** タブを展開することもできます。  
![\[スクリーンショットは、最小化ボタンと最大化ボタンが強調表示されたデータプレビューペインと、データプレビューペインを垂直方向に拡張できるハンドルペインを示しています。\]](http://docs.aws.amazon.com/ja_jp/glue/latest/dg/images/data-preview-maximize-handle.png)
+ **[セッションの終了]** を使用してデータプレビューを停止します。セッションを停止すると、新しい IAM ロールを選択し、新しいセッションを自動的に開始したり、スキーマを推測したり、AWS Glue ライブラリをインポートしたりするための追加設定 (オン/オフなど) を設定して、セッションを再開できます。

## データのプレビューを使用する際の制限事項
<a name="data-preview-limits"></a>

データのプレビューを使用する際、次の制約または制限事項が発生する場合があります。
+ 初めて [Data preview] (データのプレビュー) タブを選択する際、IAM ロールを選択する必要があります。このロールには、そのデータおよびデータのプレビューの作成に必要なその他のリソースへのアクセス許可が必要です。
+ IAM ロールを指定した後、データを表示できるようになるまでには時間がかかります。データが 1 GB 未満のデータセットの場合、最大で 1 分かかることがあります。大きなデータセットがある場合は、パーティションを使用してロード時間を改善する必要があります。Amazon S3 からデータを直接ロードすると、パフォーマンスが最も良くなります。
+ 非常に大きなデータセットがあり、データのプレビュー用のデータのクエリに 15 分以上かかる場合、リクエストはタイムアウトします。データプレビューには 30 分の IDLE タイムアウトがあります。これを軽減するために、データセットのサイズを小さくして、データプレビューを使用できます。
+ デフォルトでは、[Data preview] タブには最初の 50 列が表示されます。列にデータの値がない場合は、表示するデータはありませんというメッセージが表示されます。サンプリングされる行数を増やすか、別の列を選択してデータの値を表示できます。
+ 現在、データのプレビューは、ストリーミングデータソースまたはカスタムコネクタを使用するデータソースではサポートされていません。
+ 1 つのノードでのエラーは、ジョブ全体に影響します。いずれかのノードでデータのプレビューのエラーがある場合、エラーは修正されるまですべてのノードに表示されます。
+ ジョブのデータソースを変更する場合、そのデータソースの子ノードは、新しいスキーマに合わせて更新する必要があります。例えば、列を変更する ApplyMapping ノードがあり、その列が代替データソースに存在しない場合、ApplyMapping 変換ノードを更新する必要があります。
+ SQL クエリ変換ノードの [Data preview] (データのプレビュー) タブを表示する際に SQL クエリで誤ったフィールド名が使用されている場合、[Data preview] (データのプレビュー)タブにエラーが表示されます。

## スクリプトコードの生成
<a name="code-gen"></a>

ビジュアルエディタを使用してジョブを作成する場合、ETL コードが自動的に生成されます。AWS Glue Studio は機能的で完全なジョブスクリプトを作成し、Amazon S3 の場所に保存します。

AWS Glue Studio によって生成されるコードには 2 つの形式があります。: オリジナルバージョン、またはクラシックバージョン、およびより新しいストリームラインされたバージョンです。デフォルトでは、新しいコードジェネレーターがジョブスクリプトの作成に使用されます。ジョブスクリプトは、[**Generate classic script**]トグルボタンを選択することにより、[**Script**]タブ上のクラシックコードジェネレーターを使用して生成できます。

生成されたコードの新しいバージョンでは、いくつかの違いを含みます。：
+ 大きなコメントブロックは、もうスクリプトに追加されなくなりました。
+ コード内の出力のデータ構造は、ビジュアルエディタで指定したノード名を使用します。クラススクリプトでは、出力のデータ構造は単に`DataSource0`,`DataSource1`,`Transform0`,`Transform1`,`DataSink0`,`DataSink1` などと名前が付けられます。
+ 長いコマンドは複数の行に分割されるため、ページ全体をスクロールしてコマンド全体を表示する必要がなくなります。

AWS Glue Studio 中の新機能には新しいバージョンのコード生成が必要で、クラシックコードスクリプトでは動作しません。これらのジョブを実行しようとすると、これらのジョブを更新するように求められます。

# AWS Glue マネージド変換によるデータの変換
<a name="edit-jobs-transforms"></a>

 AWS Glue Studio には、次の 2 種類の変換が用意されています。
+  AWS Glue ネイティブ変換 - すべてのユーザーが利用でき、AWS Glue によって管理されます。
+  カスタムビジュアル変換 - 自分のカスタムビジュアル変換をアップロードして、AWS Glue Studio で使用できます。

## AWS Glue マネージドデータ変換ノード
<a name="edit-jobs-transforms-glue-managed"></a>

AWS Glue Studio には、データを処理するために使用できる一式の組み込み変換が用意されています。データは、ジョブ図内のあるノードから `DynamicFrame` と呼ばれるデータ構造の別のノードに渡されます。これは、Apache Spark SQL `DataFrame` の拡張機能です。

事前設定されたジョブ図では、データソースとデータターゲットノード間で、**スキーマ変更**変換ノードを使用できます。この変換ノードを設定すると、データを修正したり、他の変換を使用できます。

AWS Glue Studio を用いて、次のbuilt-in 変換が利用可能です。
+ **[ChangeSchema](transforms-configure-applymapping.md)**: データソースのデータプロパティキーを、データターゲットのデータプロパティキーにマッピングします。キーの名前を変更したり、データ型を変更したり、データセットから削除するキーを選択できます。
+ **[SelectFields](transforms-configure-select-fields.md)**: 保持したいデータプロパティキーを選択します。
+ **[DropFields](transforms-configure-drop-fields.md)**: 削除したいデータプロパティキーを選択します。
+ **[RenameField](transforms-configure-rename-field.md)**: 単一のデータプロパティキーの名前を変更します。
+ **[Spigot](transforms-configure-spigot.md)**:Amazon S3 バケットにデータのサンプルを書き込みます。
+ **[Join](transforms-configure-join.md)**: 指定したデータプロパティキー上の比較フレーズを使用して、2 つのデータセットを 1 つに結合します。結合タイプは、内部結合、外部結合、左結合、右結合、左半結合、左反結合を使用できます。
+ **[Union](transforms-configure-union.md)**: 同じスキーマを持つ複数のデータソースの行を結合します。
+ **[SplitFields](transforms-configure-split-fields.md)**: データプロパティキーを 2 つの `DynamicFrames` に分割します。出力は `DynamicFrames` のコレクションです。一方は選択したデータプロパティキー、他方は残っている方のデータプロパティキーを持ちます。
+ **[SelectFromCollection](transforms-selectfromcollection-overview.md)**： `DynamicFrame` のコレクションから を 1 つの `DynamicFrames` を選択します。出力は選択された `DynamicFrame` です。
+ [**[FillMissingValues](transforms-configure-fmv.md)**]：欠落値があるデータセットの記録を配置し、代入によって決定された提案値を用いた新しいフィールドを追加します。
+ **[Filter](transforms-filter.md)**: フィルター条件に基づいて、データセットを 2 つに分割します。
+  **[[Drop Null Fields]](transforms-dropnull-fields.md)**: 列のすべての値が「null」の場合、データセットから列を削除します。
+  ** [[Drop Duplicates]](transforms-drop-duplicates.md)**: 行全体を照合するか、キーを指定するかを選択して、データソースから行を削除します。
+ **[SQL](transforms-sql.md)**:SparkSQL コードをテキスト入力フィールドに入力して、データを変換するために SQL クエリを使用します。出力は、単一の `DynamicFrame` です。
+  **[Aggregate](transforms-aggregate-fields.md)**: 選択したフィールドと行で計算 (平均、合計、最小、最大など) を実行し、計算された値を使って新しいフィールドを作成します。
+ **[Flatten](transforms-flatten.md)**: Struct 内のフィールドを最上位のフィールドに抽出します。
+ **[UUID](transforms-uuid.md)**: 各行にユニバーサル一意識別子を含む列を追加します。
+ **[Identifier](transforms-identifier.md)**: 各行に数値識別子を含む列を追加します。
+ **[To timestamp](transforms-to-timestamp.md)**: 列をタイムスタンプタイプに変換します。
+ **[Format timestamp](transforms-format-timestamp.md)**: タイムスタンプ列をフォーマットされた文字列に変換します。
+ **[Conditional Router transform](transforms-conditional-router.md)**: 受信データに複数の条件を適用します。受信データの行はそれぞれグループフィルター条件により評価され、対応するグループに取り入れて処理されます。
+  **[[列の連結] 変換](transforms-concatenate-columns.md)**: オプションのスペーサーを使用して、他の列の値を使った新しい文字列の列を作成します。
+  **[[文字列の分割] 変換](transforms-split-string.md)**: 正規表現を使用して文字列をトークンの配列に分割し、分割方法を定義します。
+  **[[配列から列へ] 変換](transforms-array-to-columns.md)**: 配列タイプの列の一部またはすべての要素を抽出し、新しい列に追加します。
+  **[[現在のタイムスタンプを追加] 変換](transforms-add-current-timestamp.md)**: データが処理された時刻で行をマークします。これは、監査目的やデータパイプラインでのレイテンシーの追跡に役立ちます。
+  **[[行から列へのピボット] 変換](transforms-pivot-rows-to-columns.md)**: 選択した列の固有の値を回転させて数値列を集約し、新しい列にします。複数の列を選択した場合、値が連結されて新しい列に名前が付けられます。
+  **[[列から行へのピボット解除] 変換](transforms-unpivot-columns-to-rows.md)**: 列を新しい列の値に変換し、固有の値ごとに行を生成します。
+  **[[オートバランス処理] 変換](transforms-autobalance-processing.md)**: データをワーカー間でより適切に再配分します。これは、データのバランスが取れていない場合や、ソースから取得したデータでは十分に並行処理ができない場合に役立ちます。
+  **[[派生列] 変換](transforms-derived-column.md)**: 数式または SQL 式に基づいて新しい列を定義します。これらの式では、データ内の他の列および定数やリテラルを使用できます。
+  **[[ルックアップ] 変換](transforms-lookup.md)**: キーがデータ内の定義済みのルックアップ列と一致する場合、定義済みのカタログテーブルから列を追加します。
+  **[[配列またはマップを行に分解] 変換](transforms-explode-array.md)**: ネストされたデータ構造から値を抽出し、操作しやすい個々の行に値を追加します。
+  **[レコードマッチング変換](transforms-record-matching.md)**: 既存のレコードマッチング機械学習データ分類変換を呼び出します。
+  **[null 行変換を削除](transforms-remove-null-rows.md)**: すべての列が null または空の行をデータセットから削除します。
+  **[JSON 列変換の解析](transforms-parse-json-column.md)**: JSON データを含む文字列の列を解析し、JSON がオブジェクトか配列かに応じて、それぞれを構造体または配列の列に変換します。
+  **[JSON パス変換の抽出](transforms-extract-json-path.md)**: JSON 文字列の列から新しい列を抽出します。
+  **[正規表現から文字列の断片を抽出](transforms-regex-extractor.md)**: 正規表現を使用して文字列の断片を抽出し、そこから新しい列を作成します。正規表現グループを使用する場合は、複数の列を作成します。
+ **[Custom transform](transforms-custom.md)**: カスタム transforms を使用するために、テキスト入力フィールドにコードを入力します。出力は、`DynamicFrames` のコレクションです。

# AWS Glue Studio でのデータ準備レシピの使用
<a name="glue-studio-data-preparation"></a>

 **[データ準備レシピ]** 変換を使用すると、インタラクティブなグリッドスタイルオーサリングインターフェイスを使用して、データ準備レシピを最初から作成できます。また、既存の AWS Glue DataBrew レシピをインポートし、AWS Glue Studio で編集することもできます。

 **データ準備レシピ**ノードは、リソースパネルから使用できます。**データ準備レシピ**ノードは、データソースノードであるか別の変換ノードであるかに関らず、ビジュアルワークフロー内の別のノードに接続できます。AWS Glue DataBrew レシピとバージョンを選択すると、レシピに適用されたステップがノードのプロパティタブに表示されます。

## 前提条件
<a name="glue-studio-databrew-prerequisites"></a>
+  AWS Glue DataBrew レシピをインポートする場合、「[AWS Glue Studio で AWS Glue DataBrew レシピをインポートする](glue-studio-data-preparation-import-recipe.md)」で説明されているように、必要な IAM アクセス許可があります。
+  データプレビューセッションを作成する必要があります。

## 制限事項
<a name="glue-studio-databrew-limitations"></a>
+  AWS Glue DataBrew レシピは、[商用 DataBrew リージョン](https://docs.aws.amazon.com/general/latest/gr/databrew.html)でのみサポートされています。
+  すべての AWS Glue DataBrew レシピが AWS Glue でサポートされているわけではありません。一部のレシピは AWS Glue Studio では実行できません。
  +  `UNION` および `JOIN` 変換を使用するレシピはサポートされていませんが、AWS Glue Studio には、**データ準備レシピ**ノードの前後で使用できる「Union」および「Join」変換ノードが既に存在します。
+  **データ準備レシピ**ノードは AWS Glue バージョン 4.0 以降のジョブでサポートされています。このバージョンは、**データ準備レシピ**ノードがジョブに追加されると自動選択されます。
+  **データ準備レシピ**ノードには Python が必要です。Python は、**データ準備レシピ**ノードがジョブに追加されると自動設定されます。
+  ビジュアルグラフに新しい**データ準備レシピ**ノードを追加すると、**データ準備レシピ**ノードを使用する正しいライブラリでデータプレビューセッションが自動的に再開されます。
+  **データ準備レシピ**ノードでのインポートまたは編集では、`GROUP_BY`、`PIVOT`、`UNPIVOT`、および `TRANSPOSE` の変換はサポートされていません。

## その他の機能
<a name="glue-studio-data-preparation-recipe-transform-features"></a>

 **[データ準備レシピ]** 変換を選択すると、**[レシピの作成]** を選択した後に追加のアクションを実行できます。
+  ステップの追加 – ステップの追加アイコンを選択するか、[プレビュー] ペインのツールバーを使用してアクションを選択して、必要に応じてレシピにステップを追加できます。  
![\[スクリーンショットはレシピの追加アイコンを示しています。\]](http://docs.aws.amazon.com/ja_jp/glue/latest/dg/images/add-recipe-icon.png)  
![\[スクリーンショットはレシピの追加アイコンを示しています。\]](http://docs.aws.amazon.com/ja_jp/glue/latest/dg/images/author-recipe-toolbar.png)
+  レシピのインポート — **[その他]** を選択し、AWS Glue Studio ジョブで使用する**レシピをインポート**します。  
![\[スクリーンショットは、その他アイコンを示しています。\]](http://docs.aws.amazon.com/ja_jp/glue/latest/dg/images/data-preparation-recipe-node-more-icon.png)  
![\[スクリーンショットは、その他アイコンを示しています。\]](http://docs.aws.amazon.com/ja_jp/glue/latest/dg/images/data-preparation-recipe-node-more-features.png)
+  YAML としてダウンロード – **[その他]**、次に **[YAML としてダウンロード]** を選択してレシピをダウンロードし、AWS Glue Studio の外部に保存します。
+  JSON としてダウンロード – **[その他]**、次に **[JSON としてダウンロード]** を選択してレシピをダウンロードし、AWS Glue Studio の外部に保存します。
+  レシピステップの元に戻すとやり直す – グリッドでデータを操作するときに、[プレビュー] ペインでレシピステップを元に戻したりやり直したりすることができます。  
![\[スクリーンショットは、その他アイコンを示しています。\]](http://docs.aws.amazon.com/ja_jp/glue/latest/dg/images/author-recipe-toolbar-undo-redo.png)

# ビジュアル ETL AWS Glue ジョブにおけるデータ準備レシピの作成および実行
<a name="glue-studio-data-preparation-recipe-transform-tutorial"></a>

 このシナリオでは、DataBrew で最初に作成しなくても、データ準備レシピを作成できます。レシピの作成を開始する前に、以下を行う必要があります。
+  アクティブなデータプレビューセッションが実行されている。データプレビューセッションが準備完了になると、**[レシピの作成]** がアクティブになり、レシピの作成または編集を開始できます。  
![\[このスクリーンショットは、データプレビューセッションが完了したことを示しています。\]](http://docs.aws.amazon.com/ja_jp/glue/latest/dg/images/data-preparation-recipe-data-preview-complete.png)
+  **[Glue ライブラリを自動的にインポート]** のトグルが有効になっていることを確認します。  
![\[このスクリーンショットは、[Glue ライブラリを自動的にインポート] のオプションがオンになっていることを示しています。\]](http://docs.aws.amazon.com/ja_jp/glue/latest/dg/images/data-preparation-recipe-automatically-import-glue-libraries.png)

   これを行うには、[データプレビュー] ペインで歯車アイコンを選択します。  
![\[このスクリーンショットは、[Glue ライブラリを自動的にインポート] のオプションがオンになっていることを示しています。\]](http://docs.aws.amazon.com/ja_jp/glue/latest/dg/images/data-preview-preferences.png)

**AWS Glue Studio でデータ準備レシピを作成するには:**

1.  **[データ準備レシピ]** 変換をジョブキャンバスに追加します。変換はデータソースノードの親に接続する必要があります。**[データ準備レシピ]** ノードを追加すると、ノードが適切なライブラリで再起動し、データフレームが準備中であることがわかります。  
![\[このスクリーンショットは、[データ準備レシピ] を追加した後のデータフレームのロードを示しています。\]](http://docs.aws.amazon.com/ja_jp/glue/latest/dg/images/data-preparation-preparing-dataframe.png)

1.  データプレビューセッションが準備完了になると、以前に適用されたステップを含むデータが画面の下部に表示されます。

1.  **[レシピの作成]** を選択します。これにより、AWS Glue Studio で新しいレシピを開始できます。  
![\[このスクリーンショットは、[名前] と [ノードの親] のフィールドと、レシピを作成するオプションを含む [変換] パネルを示しています。\]](http://docs.aws.amazon.com/ja_jp/glue/latest/dg/images/data-preparation-recipe-transform-tab-new.png)

1.  ジョブキャンバスの右側にある **[変換]** パネルに、データ準備レシピの名前を入力します。

1.  左側では、キャンバスはデータのグリッドビューに置き換えられます。右側には、**[変換]** パネルが変化し、レシピのステップが表示されます。**[ステップの追加]** を選択して、レシピの最初のステップを追加します。  
![\[このスクリーンショットは、[ステップの追加] を選択した後の [変換] パネルを示しています。列を選択すると、オプションが動的に変わります。ソート、列に対するアクションの実行、および値のフィルタリングを選択できます。\]](http://docs.aws.amazon.com/ja_jp/glue/latest/dg/images/author-recipe-preview-data-transform-panel.png)

1.  **[変換]** パネルで、ソート、列に対するアクションの実行、値のフィルタリングを選択します。例えば、**[列の名前変更]** を選択します。  
![\[このスクリーンショットは、[ステップの追加] を選択した後の [変換] パネルを示しています。列を選択すると、オプションが動的に変わります。ソート、列に対するアクションの実行、および値のフィルタリングを選択できます。\]](http://docs.aws.amazon.com/ja_jp/glue/latest/dg/images/author-recipe-add-step.png)

1.  右側の [変換] パネルで、列の名前を変更するオプションを使用して、名前を変更するソース列を選択し、新しい列名を入力できます。完了したら、**[適用]** を選択します。

    各ステップをプレビューしたり、ステップを元に戻したり、ステップを並べ替えたり、フィルター、ソート、分割、マージなどのアクションアイコンを使用できます。データグリッドでアクションを実行すると、[変換] パネルのレシピにステップが追加されます。  
![\[このスクリーンショットは、ツールバーが強調表示されたプレビューデータグリッドを示しています。いずれかのツールを使用してアクションを適用できます。アクションは右側の [変換] パネルのレシピに追加されます。\]](http://docs.aws.amazon.com/ja_jp/glue/latest/dg/images/author-recipe-preview-data-grid.png)

    変更を加える必要がある場合は、各ステップの結果をプレビューし、ステップを元に戻し、ステップの順序を変更することで、[プレビュー] ペインでこれを行うことができます。例: 
   +  ステップを元に戻す/やり直す – **[元に戻す]** アイコンを選択してステップを元に戻します。**[やり直す]** アイコンを選択すると、ステップを繰り返すことができます。  
![\[スクリーンショットは、その他アイコンを示しています。\]](http://docs.aws.amazon.com/ja_jp/glue/latest/dg/images/author-recipe-toolbar-undo-redo.png)
   +  ステップの順序を変更する – ステップの順序を変更すると、AWS Glue Studio は各ステップを検証し、そのステップが無効かどうかを知らせます。

1.  ステップを適用すると、[変換] パネルにレシピのすべてのステップが表示されます。すべてのステップをクリアして最初からやり直したり、追加アイコンを選択してさらにステップを追加したり、**[レシピの作成を完了]** を選択したりできます。  
![\[このスクリーンショットは、レシピにステップが追加された [変換] パネルを示しています。完了したら、[レシピの作成を完了] を選択するか、追加アイコンを選択してレシピにさらにステップを追加します。\]](http://docs.aws.amazon.com/ja_jp/glue/latest/dg/images/author-recipe-done-authoring-recipe.png)

1.  画面の右上にある **[保存]** を選択します。レシピステップは、ジョブを保存するまで保存されません。

# AWS Glue Studio で AWS Glue DataBrew レシピをインポートする
<a name="glue-studio-data-preparation-import-recipe"></a>

 AWS Glue DataBrew では、一連のデータ変換ステップをレシピといいます。AWS Glue DataBrew レシピには読み取り済みデータの変換方法は規定されていますが、データを読み取る場所と方法、およびデータを書き込む場所と方法は記載されていません。これは、AWS Glue Studio のソースノードとターゲットノードで設定します。レシピの詳細については、「[Creating and using AWS Glue DataBrew recipes](https://docs.aws.amazon.com/databrew/latest/dg/recipes.html)」を参照してください。

 AWS Glue Studio で AWS Glue DataBrew レシピを使用するには、最初に AWS Glue DataBrew でレシピを作成します 使用するレシピがある場合は、このステップを省略できます。

## AWS Glue DataBrew に対する IAM アクセス許可
<a name="glue-studio-databrew-permissions"></a>

 このトピックでは、IAM 管理者がデータ準備レシピ変換の AWS Identity and Access Management (IAM) ポリシーで使用できるアクションとリソースを理解するための情報について説明します。

 AWS Glue のセキュリティに関する追加情報については、「[Access Management](https://docs.aws.amazon.com/glue/latest/dg/security.html)」を参照してください。

**注記**  
 次の表に、既存の AWS Glue DataBrew レシピをインポートするときにユーザーが必要とするアクセス許可を示します。


**データ準備レシピ変換アクション**  

| アクション | 説明 | 
| --- | --- | 
| databrew:ListRecipes | AWS Glue DataBrew レシピを取得するアクセス許可を付与します。 | 
| databrew:ListRecipeVersions | AWS Glue DataBrew レシピバージョンを取得するアクセス許可を付与します。 | 
| databrew:DescribeRecipe | AWS Glue DataBrew レシピの説明を取得するアクセス許可を付与します。 | 



 この機能へのアクセスに使用するロールには、複数の AWS Glue DataBrew アクションを許可するポリシーが必要です。これを実現するには、必要なアクションを含む `AWSGlueConsoleFullAccess` ポリシーを使用するか、次のインラインポリシーをロールに追加します。

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "databrew:ListRecipes",
        "databrew:ListRecipeVersions",
        "databrew:DescribeRecipe"
      ],
      "Resource": [
        "*"
      ]
    }
  ]
}
```

------



 データ準備レシピ変換を使用するには、アクセス許可ポリシーに `IAM:PassRole` アクションを追加する必要があります。


**追加で必要な許可**  

| アクション | 説明 | 
| --- | --- | 
| iam:PassRole | 承認済みのロールをユーザーが渡すことを許可するアクセス許可を、IAM に付与します。 | 

これらのアクセス許可がないと、次のエラーが発生します。

```
"errorCode": "AccessDenied"
"errorMessage": "User: arn:aws:sts::account_id:assumed-role/AWSGlueServiceRole is not 
authorized to perform: iam:PassRole on resource: arn:aws:iam::account_id:role/service-role/AWSGlueServiceRole 
because no identity-based policy allows the iam:PassRole action"
```



## AWS Glue DataBrew レシピのインポート
<a name="glue-studio-databrew-import-steps"></a>

**AWS Glue DataBrew レシピをインポートして AWS Glue Studio で使用するには:**

 既存の**データ準備レシピ**ノードがあり、AWS Glue Studio でレシピステップを直接編集する場合は、レシピステップを AWS Glue Studio ジョブにインポートする必要があります。

1.  データソースを使用して、AWS Glue Studio で AWS Glue ジョブを開始します。

1.  **[データ準備レシピ]** ノードをジョブキャンバスに追加します。  
![\[スクリーンショットは、選択可能なデータ準備レシピを含むノードモーダルの追加を示しています。\]](http://docs.aws.amazon.com/ja_jp/glue/latest/dg/images/glue-add-node-data-preparation-recipe.png)

1.  [変換] パネルで、レシピの名前を入力します。

1.  ドロップダウンリストからキャンバスで使用可能なノードを選択して、1 つ以上の親ノードを選択します。

1.  **[レシピの作成]** を選択します。**[作成者レシピ]** が灰色の場合、ノードの親が選択され、データプレビューセッションが完了するまで使用できません。  
![\[Author Data Preparation Recipe form with name field and node parents selection dropdown.\]](http://docs.aws.amazon.com/ja_jp/glue/latest/dg/images/glue-author-data-preparation-recipe.png)

1.  データフレームはロードされ、ソースデータに関する詳細情報が表示されます。

    **[その他のアクション]** アイコンを選択し、**[レシピのインポート]** を選択します。  
![\[Data preparation interface showing "Build your Recipe" with an "Add step" button.\]](http://docs.aws.amazon.com/ja_jp/glue/latest/dg/images/glue-dataframe-import-recipe.png)

1.  レシピのインポートウィザードを使用して、ステップを完了します。ステップ 1 で、レシピを検索して選択し、**[次へ]** を選択します。  
![\[Import recipe interface showing two recipes, with one selected for import.\]](http://docs.aws.amazon.com/ja_jp/glue/latest/dg/images/import-recipe-step-1.png)

1.  ステップ 2 で、インポートオプションを選択します。新しいレシピを既存のレシピに追加するか、既存のレシピを上書きするかを選択できます。[**次へ**] を選択します。  
![\[Import recipe interface showing selected recipe, version, and two imported steps.\]](http://docs.aws.amazon.com/ja_jp/glue/latest/dg/images/import-recipe-step-2.png)

1.  ステップ 3 で、レシピステップを検証します。AWS Glue DataBrew レシピをインポートしたら、このレシピを AWS Glue Studio で直接編集できます。  
![\[Recipe import interface showing two steps and a validation progress indicator.\]](http://docs.aws.amazon.com/ja_jp/glue/latest/dg/images/import-recipe-step-3.png)  
![\[Import recipe interface showing validated steps for sorting and formatting data.\]](http://docs.aws.amazon.com/ja_jp/glue/latest/dg/images/import-recipe-step-3-validated-2.png)

1.  その後、ステップは AWS Glue ジョブの一部としてインポートされます。必要に応じてジョブに名前を付けたり、割り当てられた容量を調整したりして、**[ジョブの詳細]** タブで必要な設定変更を行います。**[保存]** を選択して、ジョブとレシピを保存します。
**注記**  
 JOIN、UNION、GROUP\$1BY、PIVOT、UNPIVOT、TRANSPOSE はレシピのインポートではサポートされず、レシピ作成モードでも使用できません。

1.  必要に応じて、その他の変換ノードを追加してジョブ作成を終了し、データターゲットノードを追加できます。

    レシピをインポートした後にステップの順序を変更すると、AWS Glue はそれらのステップの検証を実行します。例えば、列の名前を変更してから削除し、削除ステップを先頭に移動した場合、名前変更ステップは無効です。その後、ステップを編集して検証エラーを修正できます。

# AWS Glue DataBrew から AWS Glue Studio への移行
<a name="databrew-migration-to-glue-studio"></a>

 AWS Glue DataBrew にレシピがある場合は、次のチェックリストを使用してレシピを AWS Glue Studio に移行します。


| 目的 | こちらを実行してください | 
| --- | --- | 
|  ユーザーに AWS Glue DataBrew レシピ、レシピバージョン、レシピの説明の取得を許可します。 |  ロールが必要なアクションにアクセスできるようにするポリシーに IAM アクセス許可を追加します。「[AWS Glue DataBrew に対する IAM アクセス許可](glue-studio-data-preparation-import-recipe.md#glue-studio-databrew-permissions)」を参照してください。 | 
|  既存の AWS Glue DataBrew レシピを AWS Glue Studio にインポートします。 |  「[AWS Glue DataBrew レシピのインポート](glue-studio-data-preparation-import-recipe.md#glue-studio-databrew-import-steps)」のステップを実行してください。 | 
|  JOIN と UNION を使用してレシピをインポートします。 |  UNION 変換と JOIN 変換を含むレシピはサポートされていません。Data Preparation Recipe ノードの前後に AWS Glue Studio で [結合] 変換と [ユニオン] 変換を使用します。 | 

# スキーマの変更によるデータプロパティキーの再マッピング
<a name="transforms-configure-applymapping"></a>

スキーマ変更変換を使用して、ソースデータのプロパティキーをターゲットデータに適切な設定に再マッピングします。スキーマ変更変換ノードでは、次のことができます。
+ 複数のデータプロパティキーの名前の変更。
+ 新しいデータ型がサポートされており、2 つのデータ型間の変換パスがある場合、データプロパティキーのデータ型の変更。
+ 削除するデータプロパティキーの指定によるデータプロパティキーのサブセットの選択。

また、必要に応じて、ジョブ図に*スキーマ変更*ノードを追加できます。例えば、追加のデータソースを変更する場合や、*Join* 変換の後に続く場合などです。

## 10 進データ型で Change Schema を使用する
<a name="transforms-configure-applymapping-decimal-datatype"></a>

 10 進データ型で **Change Schema** 変換を使用する場合、**Change Schema** 変換は精度をデフォルト値 (10,2) に変更します。これを変更してユースケースの精度を設定するには、**SQL クエリ**変換を使用して特定の精度で列をキャストできます。

 例えば、「DecimalCol」という名前の入力列が 10 進数タイプで、それを特定の精度 (18,6) で「OutputDecimalCol」という名前の出力列に再マップする場合、次のようになります。

1.  **Change Schema** 変換後に後続の **SQL クエリ**変換を追加します。

1.  **SQL クエリ**変換では、SQL クエリを使用して、再マッピングされた列を希望の精度にキャストします。SQL クエリは次のようになります。

   ```
   SELECT col1, col2, CAST(DecimalCol AS DECIMAL(18,6)) AS OutputDecimalCol
   FROM __THIS__
   ```

    上記の SQL クエリで、次の操作を行います。
   +  「col1」と「col2」は、変更せずに渡すデータ内の他の列です。
   +  「DecimalCol」は入力データの元の列名です。
   +  「CAST(DecimalCol AS DECIMAL(18,6))」は、「DecimalCol」を 18 桁と 6 桁の小数点以下 6 桁の精度を持つ 10 進数型にキャストします。
   +  「AS OutputDecimalCol」は、キャストされた列の名前を 「OutputDecimalCol」に変更します。

 **SQL クエリ**変換を使用すると、**Change Schema** 変換で設定されたデフォルトの精度を上書きし、10 進数の列を目的の精度に明示的にキャストできます。このアプローチにより、**Change Schema** 変換を活用してデータの名前変更と再構築を行い、その後の **SQL クエリ**変換を通じて 10 進数列の精度要件を処理できます。

## Change Schema 変換をジョブに追加
<a name="transforms-configure-applymapping-add-to-job"></a>

**注記**  
スキーマ変更変換は、大文字と小文字を区別しません。

**スキーマ変更変換ノードをジョブ図に追加するには**

1. (オプション) リソースパネルを開いて、**[スキーマを変更する]** を選択し、必要に応じてジョブ図に新しい変換を追加します。

1. ノードのプロパティパネルで、ジョブ図にノード名を入力します。ノードの親がまだ選択されていない場合、[**Node parents**] (ノードの親) リストから、変換の入力ソースとして使用するノードを選択します。

1. ノードのプロパティパネルで、**[変換]** タブを選択します。

1. その後、入力スキーマを変更します。
   + データプロパティキーの名前を変更するには、キーの新しい名前を[**Target key**] (ターゲットキー) フィールドに入力します。
   + データプロパティキーのデータ型を変更するには、[**Data type**] (データ型) リストから、新しいデータ型を選択します。
   + ターゲットスキーマからデータプロパティキーを削除するには、そのキーの [**Drop**] (削除) チェックボックスをオンにします。

1. (オプション) 変換ノードのプロパティを設定した後、ノードの詳細パネルの [**Output schema**] (出力スキーマ) タブを選択して、データ用に変更されたスキーマを表示できます。ジョブ内の任意のノードに対してこのタブを初めて選択すると、データにアクセスする IAM ロールを指定するよう求められます。[**Job details**] (ジョブの詳細) タブで IAM ロールをまだ指定していない場合、ここで IAM ロールを入力するよう求められます。

1. (オプション) ノードおよび変換のプロパティを設定した後、ノードの詳細パネルの [**Data preview**] (データのプレビュー) タブを選択して、変更されたデータセットをプレビューできます。ジョブ内の任意のノードに対してこのタブを初めて選択すると、データにアクセスする IAM ロールを指定するよう求められます。この機能を使用するには費用がかかり、IAM ロールを指定するとすぐに請求が開始します。

# Drop Duplicates を使用する
<a name="transforms-drop-duplicates"></a>

 Drop Duplicates 変換では、2 つのオプションによってデータソースから行を削除します。完全に一致した重複する行を削除するか、照合するフィールドを選択して、選択したフィールドに基づいて重複する行のみを削除するかのどちらかを選択できます。

 例えば、次のデータセットには重複する行があり、行内の一部の値が一致していたり異なっていたりします。また、いくつかの行は、別の行とすべての値が完全に一致しています。


| 行 | 名前 | E メール | 年齢 | State | メモ | 
| --- | --- | --- | --- | --- | --- | 
| 1 | Joy | joy@gmail | 33 | NY |  | 
| 2 | Tim | tim@gmail | 45 | OH |  | 
| 3 | Rose | rose@gmail | 23 | NJ |  | 
| 4 | Tim | tim@gmail | 42 | OH |  | 
| 5 | Rose | rose@gmail | 23 | NJ |  | 
| 6 | Tim | tim@gmail | 42 | OH | これは重複した行であり、行 4 とすべての値が完全に一致しています | 
| 7 | Rose | rose@gmail | 23 | NJ | これは重複した行であり、行 5 とすべての値が完全に一致しています | 

 行全体で照合することを選択した場合、行 6 と 7 はデータセットから削除されます。データセットは次のようになります。


| 行 | 名前 | E メール | 年齢 | State | 
| --- | --- | --- | --- | --- | 
| 1 | Joy | joy@gmail | 33 | NY | 
| 2 | Tim | tim@gmail | 45 | OH | 
| 3 | Rose | rose@gmail | 23 | NJ | 
| 4 | Tim | tim@gmail | 42 | OH | 
| 5 | Rose | rose@gmail | 23 | NJ | 

 キーを指定することを選択した場合、「名前」と「Email (メール)」が一致する行を削除するように選択できます。これにより、データセットの「重複する行」をより細かく制御できます。「名前」と「Email (メール)」を指定すると、データセットは次のようになります。


| 行 | 名前 | E メール | 年齢 | State | 
| --- | --- | --- | --- | --- | 
| 1 | Joy | joy@gmail | 33 | NY | 
| 2 | Tim | tim@gmail | 45 | OH | 
| 3 | Rose | rose@gmail | 23 | NJ | 



 留意すべき点 
+  行の重複を認識するため、値では大文字と小文字が区別されます。行のすべての値は、大文字と小文字も一致する必要があります。これは、選択したオプション (行全体での一致/指定キーでの一致) のどちらにも当てはまります。
+  すべての値は文字列として読み込まれます。
+  **Drop Duplicates** 変換は、Spark の dropDuplicates コマンドを使用します。
+  **Drop Duplicates** 変換を使用すると、最初の行は保持され、他の行は削除されます。
+  **Drop Duplicates** 変換は、データフレームのスキーマを変更しません。キーの指定を選択した場合、生成されたデータフレームにはすべてのフィールドが保持されます。

# SelectFields を使用して大多数のデータプロパティキーを削除する
<a name="transforms-configure-select-fields"></a>

*SelectFields* 変換を使用して、データセットからデータプロパティキーのサブセットを作成できます。保持するデータプロパティキーを指定します。残りはデータセットから削除されます。

**注記**  
*SelectFields* 変換では、大文字と小文字が区別されます。大文字と小文字を区別しない方法でフィールドを選択する必要がある場合は、*ApplyMapping* を使用します。

**SelectFields 変換ノードをジョブ図に追加するには**

1. (オプション) リソースパネルを開いて、**[SelectFields]** を選択し、必要に応じてジョブ図に新しい変換を追加します。

1. [**Node properties**] (ノードのプロパティ) タブで、ジョブ図のノードの名前を入力します。ノードの親がまだ選択されていない場合は、[**Node parents**] (ノードの親) リストから、変換の入力ソースとして使用するノードを選択します。

1. ノードの詳細パネルで [**Transform**] (変換) タブを選択します。

1. 見出し [**SelectFields**] の下にある、保持するデータセット内のデータプロパティキーを選択します。選択されていないデータプロパティキーは、データセットから削除されます。

   列見出し [**Field**] (フィールド) の横にあるチェックボックスをオンにして、データセット内のすべてのデータプロパティキーを自動的に選択することもできます。その後、個々のデータプロパティキーの選択を解除して、それらをデータセットから削除できます。

1. (オプション) 変換ノードのプロパティを設定した後、ノードの詳細パネルの [**Output schema**] (出力スキーマ) タブを選択して、データ用に変更されたスキーマを表示できます。ジョブ内の任意のノードに対してこのタブを初めて選択すると、データにアクセスする IAM ロールを指定するよう求められます。[**Job details**] (ジョブの詳細) タブで IAM ロールをまだ指定していない場合、ここで IAM ロールを入力するよう求められます。

1. (オプション) ノードおよび変換のプロパティを設定した後、ノードの詳細パネルの [**Data preview**] (データのプレビュー) タブを選択して、変更されたデータセットをプレビューできます。ジョブ内の任意のノードに対してこのタブを初めて選択すると、データにアクセスする IAM ロールを指定するよう求められます。この機能を使用するには費用がかかり、IAM ロールを指定するとすぐに請求が開始します。

# DropFields を使用して大多数のデータプロパティキーを保持する
<a name="transforms-configure-drop-fields"></a>

*DropFields* 変換を使用して、データセットからデータプロパティキーのサブセットを作成できます。データセットから削除するデータプロパティキーを指定します。残りのキーは保持されます。

**注記**  
*DropFields* 変換では、大文字と小文字が区別されます。大文字と小文字を区別しない方法でフィールドを選択する必要がある場合は、スキーマ変更を使用します。

**ジョブ図に DropFields 変換ノードを追加するには**

1. (オプション) リソースパネルを開いて、**[DropFields]** を選択し、必要に応じてジョブ図に新しい変換を追加します。

1. [**Node properties**] (ノードのプロパティ) タブで、ジョブ図のノードの名前を入力します。ノードの親がまだ選択されていない場合は、[**Node parents**] (ノードの親) リストから、変換の入力ソースとして使用するノードを選択します。

1. ノードの詳細パネルで [**Transform**] (変換) タブを選択します。

1. 見出し [**DropFields**] の下で、データソースから削除するデータプロパティキーを選択します。

   列見出し [**Field**] (フィールド) の横にあるチェックボックスをオンにして、データセット内のすべてのデータプロパティキーを自動的に選択することもできます。その後、個々のデータプロパティキーの選択を解除して、それらをデータセット内に保持できます。

1. (オプション) 変換ノードのプロパティを設定した後、ノードの詳細パネルの [**Output schema**] (出力スキーマ) タブを選択して、データ用に変更されたスキーマを表示できます。ジョブ内の任意のノードに対してこのタブを初めて選択すると、データにアクセスする IAM ロールを指定するよう求められます。[**Job details**] (ジョブの詳細) タブで IAM ロールをまだ指定していない場合、ここで IAM ロールを入力するよう求められます。

1. (オプション) ノードおよび変換のプロパティを設定した後、ノードの詳細パネルの [**Data preview**] (データのプレビュー) タブを選択して、変更されたデータセットをプレビューできます。ジョブ内の任意のノードに対してこのタブを初めて選択すると、データにアクセスする IAM ロールを指定するよう求められます。この機能を使用するには費用がかかり、IAM ロールを指定するとすぐに請求が開始します。

# データセット内のフィールドの名前を変更する
<a name="transforms-configure-rename-field"></a>

*RenameField* 変換を使用して、データセット内の個々のプロパティキーの名前を変更します。

**注記**  
*RenameField* 変換では、大文字と小文字が区別されます。大文字と小文字を区別しないで変換する必要がある場合は、*ApplyMapping* を使用します。

**ヒント**  
スキーマ変更変換では、1 回の変換でデータセット内に存在する複数のデータプロパティキーの名前を変更できます。

**RenameField 変換ノードをジョブ図に追加するには**

1. (オプション) リソースパネルを開いて、**[RenameField]** を選択し、必要に応じてジョブ図に新しい変換を追加します。

1. [**Node properties**] (ノードのプロパティ) タブで、ジョブ図のノードの名前を入力します。ノードの親がまだ選択されていない場合は、[**Node parents**] (ノードの親) リストから、変換の入力ソースとして使用するノードを選択します。

1. [**Transform**] (変換) タブを選択します。

1. 見出し [**Data field**] (データフィールド) の下で、ソースデータからプロパティキーを選択し、その後 [**New field name**] (新しいフィールド名) フィールドに新しい名前を入力します。

1. (オプション) 変換ノードのプロパティを設定した後、ノードの詳細パネルの [**Output schema**] (出力スキーマ) タブを選択して、データ用に変更されたスキーマを表示できます。ジョブ内の任意のノードに対してこのタブを初めて選択すると、データにアクセスする IAM ロールを指定するよう求められます。[**Job details**] (ジョブの詳細) タブで IAM ロールをまだ指定していない場合、ここで IAM ロールを入力するよう求められます。

1. (オプション) ノードおよび変換のプロパティを設定した後、ノードの詳細パネルの [**Data preview**] (データのプレビュー) タブを選択して、変更されたデータセットをプレビューできます。ジョブ内の任意のノードに対してこのタブを初めて選択すると、データにアクセスする IAM ロールを指定するよう求められます。この機能を使用するには費用がかかり、IAM ロールを指定するとすぐに請求が開始します。

# Spigot を使用してデータセットをサンプリングする
<a name="transforms-configure-spigot"></a>

ジョブで実行される変換をテストするには、データのサンプルを取得して、変換が意図したとおりに機能することを確認します。*Spigot* 変換では、データセットから Amazon S3 バケットの JSON ファイルにレコードのサブセットが書き出されます。データのサンプリングには、ファイルの最初からの特定のレコード数、またはレコードの選択に使用される確率係数を使用します。

**Spigot 変換ノードをジョブ図に追加するには**

1. (オプション) リソースパネルを開いて、**[スピゴット]** を選択し、必要に応じてジョブ図に新しい変換を追加します。

1. [**Node properties**] (ノードのプロパティ) タブで、ジョブ図のノードの名前を入力します。ノードの親がまだ選択されていない場合は、[**Node parents**] (ノードの親) リストから、変換の入力ソースとして使用するノードを選択します。

1. ノードの詳細パネルで [**Transform**] (変換) タブを選択します。

1. Amazon S3 パスを入力するか、[**Browse S3**] (S3 をブラウズ) を選択して、Amazon S3 内の場所を選択します。これは、ジョブによりデータサンプルを含む JSON ファイルが書き込まれる場所です。

1. サンプリング方法に関する情報を入力します。データセットの最初から書き込む**レコード数**の値、および任意のレコードを選択する**確率のしきい値** (最大値が 1 の 10 進値として入力) を指定できます。

   例えば、データセットから最初の 50 レコードを書き込むには、**レコード数**を 50、**確率のしきい値**を 1 (100%) に設定します。

# データセットの結合
<a name="transforms-configure-join"></a>

*結合* 変換を使用すると、2 つのデータセットを 1 つに結合できます。比較する各データセットのスキーマのキー名を指定します。出力 `DynamicFrame` には、キーが結合条件を満たす行が含まれます。結合条件を満たす各データセットの行は、いずれかのデータセット内で見つかったすべての列を含む出力 `DynamicFrame` の単一の行に結合されます。

**Join (結合) 変換ノードをジョブ図に追加するには**

1. 使用可能なデータソースが 1 つしかない場合は、新しいデータソースノードをジョブ図に追加する必要があります。

1. 結合するソースノードを 1 つ選択します。リソースパネルを開いて、**[Join]** を選択し、ジョブ図に新しい変換を追加します。

1. [**Node properties**] (ノードのプロパティ) タブで、ジョブ図のノードの名前を入力します。

1. [**Node properties**] (ノードのプロパティ) タブの、見出し [**Node parents**] (ノードの親) の下で、結合の入力を提供するデータセットが 2 つ存在するように親ノードを追加します。親ノードは、データソースノードまたは変換ノードです。
**注記**  
結合すると、親ノードを 2 つだけ持つことができます。

1. [**Transform**] (変換) タブを選択します。

   競合するキー名があることを示すメッセージが表示された場合は、次のいずれかの操作を行います。
   + [**Resolve it**] (解決する) を選択して、*ApplyMapping* 変換ノードをジョブ図に自動的に追加します。ApplyMapping ノードにより、他のデータセットのキーと同じ名前を持つデータセット内のキーにプレフィックスが追加されます。例えば、デフォルト値 **right** を使用している場合、左側のデータセットと同じキー名を持つ右側のデータセットのキー名は `(right)key name` に変更されます。
   + ジョブ図に変換ノードを早期に手動で追加して、競合するキーを削除するか、名前を変更できます。

1. [**Join type**] (結合タイプ) のリストで、結合のタイプを選択します。
   + **Inner join** (内部結合): 結合条件に基づくすべての一致に対して、両方のデータセットの列を含む行を返します。結合条件を満たさない行は返されません。
   + **Left join** (左結合): 左側のデータセットのすべての行と、結合条件を満たす右側のデータセットの行の結合です。
   + **Right join** (右結合): 右側のデータセットのすべての行と、結合条件を満たす左側のデータセットの行の結合です。
   + **Outer join** (外部結合): 両方のデータセットのすべての行の結合です。
   + **Left semi join** (左半結合): 右側のデータセットで結合条件に基づく一致がある、左側のデータセットのすべての行の結合です。
   + **Left anti join** (左反結合): 右側のデータセットで結合条件に基づく一致がない、左側のデータセットのすべての行の結合です。

1. [**Transform**] (変換) タブで、見出し [**Join conditions**] (結合条件) の下にある、[**Add condition**] (条件の追加)を選択します。比較する各データセットからプロパティキーを選択します。比較演算子の左側にあるプロパティキーを左側のデータセット、右側にあるプロパティキーを右側のデータセットと呼びます。

   より複雑な結合条件の場合、[**Add condition**] (条件の追加) を複数回クリックして、他の一致するキーを追加できます。誤って条件を追加した場合は、削除アイコン (![\[\]](http://docs.aws.amazon.com/ja_jp/glue/latest/dg/images/delete-icon-black.png)) をクリックして削除できます。

1. (オプション) 変換ノードのプロパティを設定した後、ノードの詳細パネルの [**Output schema**] (出力スキーマ) タブを選択して、データ用に変更されたスキーマを表示できます。ジョブ内の任意のノードに対してこのタブを初めて選択すると、データにアクセスする IAM ロールを指定するよう求められます。[**Job details**] (ジョブの詳細) タブで IAM ロールをまだ指定していない場合、ここで IAM ロールを入力するよう求められます。

1. (オプション) ノードおよび変換のプロパティを設定した後、ノードの詳細パネルの [**Data preview**] (データのプレビュー) タブを選択して、変更されたデータセットをプレビューできます。ジョブ内の任意のノードに対してこのタブを初めて選択すると、データにアクセスする IAM ロールを指定するよう求められます。この機能を使用するには費用がかかり、IAM ロールを指定するとすぐに請求が開始します。

結合出力スキーマの例では、次のプロパティキーを持つ 2 つのデータセット間の結合を検討します。

```
Left: {id, dept, hire_date, salary, employment_status}
Right: {id, first_name, last_name, hire_date, title}
```

結合は、`=` 比較演算子を使用して、`id` および `hire_date` キーで一致するように設定されます。

両方のデータセットに `id` および `hire_date` キーが含まれているため、[**Resolve it**] (解決する) を選択して、右側のデータセットのキーにプレフィックス **right** が自動で追加されるようにします。

出力スキーマのキーは次のようになります。

```
{id, dept, hire_date, salary, employment_status, 
(right)id, first_name, last_name, (right)hire_date, title}
```

# Union を使用して行を結合する
<a name="transforms-configure-union"></a>

 Union 変換ノードは、同じスキーマを持つ複数のデータソースの行を結合する場合に使用します。

 Union 変換には次の 2 種類があります。

1. ALL – ALL を適用すると、Union の結果として、重複する行は削除されません。

1. DISTINCT – DISTINCT を適用すると、Union の結果として、重複する行は削除されます。

 **Union と Join** 

 行を結合するには Union を使用します。列を結合するには Join を使用します。

**Visual ETL キャンバスでの Union 変換の使用**

1.  Union 変換を実行するには、複数のデータソースを追加します。データソースを追加するには、リソースパネルを開き、[ソース] タブからデータソースを選択します。Union 変換を使用する前に、Union の対象となるすべてのデータソースのスキーマと構造が同じであることを確認する必要があります。

1.  Union 変換を使用して結合したいデータソースが 2 つ以上ある場合は、キャンバスに追加して Union 変換を作成します。キャンバス上のリソースパネルを開き、「Union」を検索します。リソースパネルの [変換] タブを選択し、Union 変換が見つかるまで下にスクロールして、**[Union]** を選択することもできます。

1. ジョブキャンバスの Union ノードを選択します。ノードプロパティウィンドウで、Union 変換に接続する親ノードを選択します。

1. AWS Glue は互換性をチェックして、Union 変換がすべてのデータソースに適用できることを確認します。データソースのスキーマが同じ場合、実行できます。データソースのスキーマが同じでない場合は、無効であるというエラーメッセージが表示されます。「この Union の入力スキーマは一致していません。ApplyMapping を使用してスキーマを一致させることを検討してください」 これを修正するには、**[ApplyMapping を使用]** を選択します。

1. Union の種類を選択します。

   1. All – デフォルトでは、Union の種類として All が選択されています。これにより、データを結合したときに、重複する行は重複したままになります。

   1. Distinct – データを結合したときに、重複する行を削除したい場合は、Distinct を選択します。

# SplitFields を使用してデータセットを 2 つに分割する
<a name="transforms-configure-split-fields"></a>

*SplitFields* 変換を使用すると、入力データセット内のデータプロパティキーをいくつか選択し、それらを 1 つのデータセットに配置したり、選択されていないキーを別のデータセットに配置できます。この変換からの出力は、`DynamicFrames` のコレクションです。

**注記**  
出力をターゲットの場所に送信するには、*SelectFromCollection* 変換を使用して、`DynamicFrames` のコレクションを単一の `DynamicFrame` に変換する必要があります。

*SplitFields* 変換では、大文字と小文字が区別されます。大文字と小文字を区別しないプロパティキー名が必要な場合は、*ApplyMapping* 変換を親ノードとして追加します。

**SplitFields 変換ノードをジョブ図に追加するには**

1. (オプション) リソースパネルを開いて、**[SplitFields]** を選択し、必要に応じてジョブ図に新しい変換を追加します。

1. [**Node properties**] (ノードのプロパティ) タブで、ジョブ図のノードの名前を入力します。ノードの親がまだ選択されていない場合は、[**Node parents**] (ノードの親) リストから、変換の入力ソースとして使用するノードを選択します。

1. [**Transform**] (変換) タブを選択します。

1. 最初のデータセットに入れるプロパティキーを選択します。選択しなかったキーは、2 番目のデータセットに配置されます。

1. (オプション) 変換ノードのプロパティを設定した後、ノードの詳細パネルの [**Output schema**] (出力スキーマ) タブを選択して、データ用に変更されたスキーマを表示できます。ジョブ内の任意のノードに対してこのタブを初めて選択すると、データにアクセスする IAM ロールを指定するよう求められます。[**Job details**] (ジョブの詳細) タブで IAM ロールをまだ指定していない場合、ここで IAM ロールを入力するよう求められます。

1. (オプション) ノードおよび変換のプロパティを設定した後、ノードの詳細パネルの [**Data preview**] (データのプレビュー) タブを選択して、変更されたデータセットをプレビューできます。ジョブ内の任意のノードに対してこのタブを初めて選択すると、データにアクセスする IAM ロールを指定するよう求められます。この機能を使用するには費用がかかり、IAM ロールを指定するとすぐに請求が開始します。

1. *SelectFromCollection* 変換ノードを設定して、結果のデータセットを処理します。

# *SelectFromCollection* 変換の概要
<a name="transforms-selectfromcollection-overview"></a>

*SplitFields* のように、単一ではなく、複数のデータセットが出力される変換もあります。*SelectFromCollection* 変換では、データセットのコレクション (`DynamicFrames` の配列) から、1 つのデータセット (`DynamicFrame`) が選択されます。変換の出力は、選択された `DynamicFrame` です。

この変換は、次のような `DynamicFrames` のコレクションを作成する変換を使用した後に使用する必要があります。
+ カスタムコード変換
+ SplitFields

変換後に *SelectFromCollection* 変換ノードをジョブ図に追加しないと、ジョブでエラーが発生します。

この変換の親ノードは、`DynamicFrames` のコレクションを返すノードである必要があります。この変換ノードに、*Join* (結合) 変換などの単一の `DynamicFrame` を返す親ノードを選択すると、ジョブによりエラーが返されます。

同様に、ジョブ図の *SelectFromCollection* ノードを、入力として単一の `DynamicFrame` を想定している変換の親ノードとして使用する場合、ジョブによりエラーが返されます。

![\[このスクリーンショットは、ノードの詳細パネルの [Node properties] (ノードのプロパティ) タブでの、[Node parents] (ノードの親) フィールドを示しています。選択したノードの親は SplitFields で、「Parent node Split Fields outputs a collection, but node Drop Fields does not accept a collection. (親ノードの分割フィールドはコレクションを出力しますが、削除フィールドはコレクションを受け入れません)」というエラーメッセージが表示されています。\]](http://docs.aws.amazon.com/ja_jp/glue/latest/dg/images/screenshot-edit-splitfields-wrong-parent.png)


# SelectFromCollection を使用して保持するデータセットを選択する
<a name="transforms-configure-select-collection"></a>

*SelectFromCollection* 変換を使用して、`DynamicFrames` のコレクションを単一の `DynamicFrame` に変換できます。

**SelectFromCollection 変換ノードをジョブ図に追加するには**

1. (オプション) リソースパネルを開いて、**[SelectFromCollection]** を選択し、必要に応じてジョブ図に新しい変換を追加します。

1. [**Node properties**] (ノードのプロパティ) タブで、ジョブ図のノードの名前を入力します。ノードの親がまだ選択されていない場合は、[**Node parents**] (ノードの親) リストから、変換の入力ソースとして使用するノードを選択します。

1. [**Transform**] (変換) タブを選択します。

1. 見出し [**Frame index**] (フレームインデックス)の下で、`DynamicFrames` のコレクションから選択する `DynamicFrame` に対応する配列のインデックス番号を選択します。

   例えば、この変換の親ノードが *SplitFields* 変換である場合、そのノードの [**Output schema**] (出力スキーマ) タブで各 `DynamicFrame` のスキーマを表示できます。[**出力 2**] のスキーマに関連付けられている `DynamicFrame` を保持する場合、**フレームインデックス**の値は **1** を選択します。これは、リストの 2 番目の値です。

   選択した `DynamicFrame` だけが出力に含まれます。

1. (オプション) 変換ノードのプロパティを設定した後、ノードの詳細パネルの [**Output schema**] (出力スキーマ) タブを選択して、データ用に変更されたスキーマを表示できます。ジョブ内の任意のノードに対してこのタブを初めて選択すると、データにアクセスする IAM ロールを指定するよう求められます。[**Job details**] (ジョブの詳細) タブで IAM ロールをまだ指定していない場合、ここで IAM ロールを入力するよう求められます。

1. (オプション) ノードおよび変換のプロパティを設定した後、ノードの詳細パネルの [**Data preview**] (データのプレビュー) タブを選択して、変更されたデータセットをプレビューできます。ジョブ内の任意のノードに対してこのタブを初めて選択すると、データにアクセスする IAM ロールを指定するよう求められます。この機能を使用するには費用がかかり、IAM ロールを指定するとすぐに請求が開始します。

# データセット内の欠落値を検索して埋める
<a name="transforms-configure-fmv"></a>

*FillMissingValues* 変換を使用して、データセット内に欠落値があるレコードを検索し、補完により決定する値を持つ新しいフィールドを追加します。入力データセットは、欠落値を決定する機械学習 (ML) モデルのトレーニングに使用されます。増分のデータセットを使用する場合、増分の各セットが ML モデルのトレーニングデータとして使用されるため、結果はそれほど正確ではない可能性があります。

**ジョブ図で FillMissingValues 変換ノードを使用するには**

1. (オプション) リソースパネルを開いて、**[FillMissingValues]** を選択し、必要に応じてジョブ図に新しい変換を追加します。

1. [**Node properties**] (ノードのプロパティ) タブで、ジョブ図のノードの名前を入力します。ノードの親がまだ選択されていない場合、[**Node parents**] (ノードの親) リストから、変換の入力ソースとして使用するノードを選択します。

1. [**Transform**] (変換) タブを選択します。

1. [**Data field**] (データフィールド) で、欠落値を分析するソースデータから、列名またはフィールド名を選択します。

1. (オプション) [**New field name**] (新しいフィールド名) フィールドに、フィールドの名前を入力します。このフィールドは、分析したフィールドの推定置換値を保持する各レコードに追加されます。分析したフィールドに欠落値がない場合、その分析したフィールドの値が新しいフィールドにコピーされます。

   フィールドの名前を指定しない場合、デフォルトの名前は、分析した列に `_filled` を追加した名前になります。例えば、[**Data field**] (データフィールド) に「**Age**」と入力し、[**New field name**] (新しいフィールド名) に値を指定しない場合、**Age\$1filled** という名前の新しいフィードが各レコードに追加されます。

1. (オプション) 変換ノードのプロパティを設定した後、ノードの詳細パネルの [**Output schema**] (出力スキーマ) タブを選択して、データ用に変更されたスキーマを表示できます。ジョブ内の任意のノードに対してこのタブを初めて選択すると、データにアクセスする IAM ロールを指定するよう求められます。[**Job details**] (ジョブの詳細) タブで IAM ロールをまだ指定していない場合、ここで IAM ロールを入力するよう求められます。

1. (オプション) ノードおよび変換のプロパティを設定した後、ノードの詳細パネルの [**Data preview**] (データのプレビュー) タブを選択して、変更されたデータセットをプレビューできます。ジョブ内の任意のノードに対してこのタブを初めて選択すると、データにアクセスする IAM ロールを指定するよう求められます。この機能を使用するには費用がかかり、IAM ロールを指定するとすぐに請求が開始します。

# データセット内のキーのフィルタリング
<a name="transforms-filter"></a>

*フィルター*変換を使用して、正規表現に基づいて入力データセットのレコードをフィルタリングすることで、新しいデータセットを作成できます。フィルター条件を満たさない行は、出力から削除されます。
+ 文字列のデータ型の場合、キー値と指定された文字列が一致する行をフィルタリングできます。
+ 数値のデータ型の場合、比較演算子 `<`、`>`、`=`、`!=`、`<=`、`>=` を使用してキー値と指定された値を比較することで、行をフィルタリングできます。

複数のフィルター条件を指定した場合、デフォルトでは `AND` 演算子を使用して結果が結合されますが、代わりに `OR` を使用することもできます。

*フィルター*変換では、大文字と小文字が区別されます。大文字と小文字を区別しないプロパティキー名が必要な場合は、*ApplyMapping* 変換を親ノードとして追加します。

**フィルター変換ノードをジョブ図に追加するには**

1. (オプション) リソースパネルを開いて、**[フィルター]** を選択し、必要に応じてジョブ図に新しい変換を追加します。

1. [**Node properties**] (ノードのプロパティ) タブで、ジョブ図のノードの名前を入力します。ノードの親がまだ選択されていない場合は、[**Node parents**] (ノードの親) リストから、変換の入力ソースとして使用するノードを選択します。

1. [**Transform**] (変換) タブを選択します。

1. [**Global AND**] または [**Global OR**] を選択します。これにより、複数のフィルター条件の結合方法が決定します。すべての条件は、`AND` または `OR` オペレーションで結合されます。フィルター条件が 1 つしかない場合は、どちらかを選択できます。

1. [**Filter condition**] (フィルター条件) セクションで [**Add condition**] (条件の追加) ボタンをクリックして、フィルター条件を追加します。

   [**Key**] (キー) フィールドで、データセットからプロパティキー名を選択します。[**Operation**] (オペレーション) フィールドで、比較演算子を選択します。[**Value**] (値) フィールドに、比較値を入力します。フィルター条件のいくつかの例を次に示します。
   + `year >= 2018`
   + `State matches 'CA*'`

   文字列の値をフィルタリングする場合は、比較値に、ジョブのプロパティ (Python または Scala) で選択したスクリプト言語と一致する正規表現の形式が使用されていることを確認します。

1. 必要に応じて、他のフィルター条件を追加します。

1. (オプション) 変換ノードのプロパティを設定した後、ノードの詳細パネルの [**Output schema**] (出力スキーマ) タブを選択して、データ用に変更されたスキーマを表示できます。ジョブ内の任意のノードに対してこのタブを初めて選択すると、データにアクセスする IAM ロールを指定するよう求められます。[**Job details**] (ジョブの詳細) タブで IAM ロールをまだ指定していない場合、ここで IAM ロールを入力するよう求められます。

1. (オプション) ノードおよび変換のプロパティを設定した後、ノードの詳細パネルの [**Data preview**] (データのプレビュー) タブを選択して、変更されたデータセットをプレビューできます。ジョブ内の任意のノードに対してこのタブを初めて選択すると、データにアクセスする IAM ロールを指定するよう求められます。この機能を使用するには費用がかかり、IAM ロールを指定するとすぐに請求が開始します。

# NULL 値を持つフィールドを削除するDropNullFields の使用
<a name="transforms-dropnull-fields"></a>

 フィールド内のすべての値が 'null' の場合、[*DropNullFields*]transform を使用し、データセットからフィールドを削除します。デフォルトでは、AWS Glue Studio は null オブジェクトを認識しますが、空の文字列、“null”の列、-1 の整数、または 0 などのプレースホルダなどでは、自動的に「null」として認識されません。

**DropNullFields を使用するには**

1.  ジョブダイアグラムに DropNullFields ノードを追加します。

1.  [**Node properties**]タブで、NULL 値を表す追加の値を選択します。値を選択しないか、すべての値を選択するかを選択できます。  
![\[スクリーンショットは、DropnullFields ノードの Transform tab タブを示しています。\]](http://docs.aws.amazon.com/ja_jp/glue/latest/dg/images/DropNullFields-transform-tab.png)
   +  空の文字列("" or '') －空の文字列を含むフィールドは削除されます。
   +  "null string"-単語「null」の文字列を含むフィールドは削除されます。
   +  a-1 (負の 1) integerを含む-1 整数 - フィールドは削除されます。

1.  必要に応じて、カスタム NULL 値を指定することもできます。これらは、データセットに一意である可能性がある NULL 値です。カスタム NULL 値を追加するには、[**Add new value**]を選択します。

1.  カスタム Null 値を入力します。たとえば、ゼロを指定したり、データセット内の NULL を表すために使用されている任意の値を指定できます。

1.  ドロップダウンフィールドでデータタイプを選択します。データ型は、文字列または整数のいずれかです。
**注記**  
 カスタムの NULL 値とそのデータ型は、フィールドが NULL 値として認識され、フィールドを削除するために、正確に一致する必要があります。カスタムの NULL 値のみが一致しているがデータ型が一致しない部分的な一致については、フィールドが削除されません。

# SQL クエリを使用してデータを変換する
<a name="transforms-sql"></a>

[**SQL**] 変換を使用して、SQL クエリの形式で独自の変換を記述できます。

SQL 変換ノードでは、入力として複数のデータセットを持つことができますが、出力として生成されるデータセットは 1 つだけです。これには、Apache SparkSQL クエリを入力するテキストフィールドが含まれています。入力として使用する各データセットにエイリアスを割り当てることで、SQL クエリを簡単に実行できます。SQL 構文の詳細については、[Spark SQL ドキュメント](https://spark.apache.org/docs/latest/sql-ref.html)を参照してください。

**注記**  
VPC にあるデータソースで Spark SQL 変換を使用する場合は、AWS Glue VPC エンドポイントを、データソースを含む VPC に追加します。開発エンドポイントの設定の詳細については、*AWS Glue デベロッパーガイド*の「[Adding a Development Endpoint](https://docs.aws.amazon.com/glue/latest/dg/add-dev-endpoint.html)」、「[Setting Up Your Environment for Development Endpoints](https://docs.aws.amazon.com/glue/latest/dg/start-development-endpoint.html)」、「[Accessing Your Development Endpoint](https://docs.aws.amazon.com/glue/latest/dg/dev-endpoint-elastic-ip.html)」を参照してください。

**ジョブ図で SQL 変換ノードを使用するには**

1. (オプション) 必要な場合、ジョブ図に変換ノードを追加します。ノードタイプに **[SQL クエリ]** を選択します。
**注記**  
 データプレビューセッションおよびカスタム SQL またはカスタムコードノードを使用する場合、データプレビューセッションはデータセット全体に SQL またはコードブロックをそのまま実行します。

1. [**Node properties**] (ノードのプロパティ) タブで、ジョブ図のノードの名前を入力します。ノードの親がまだ選択されていない場合、または SQL 変換に複数の入力が必要な場合は、[**Node parents**] (ノードの親) リストから、変換の入力ソースとして使用するノードを選択します。必要な場合、他の親ノードを追加します。

1. ノードの詳細パネルで [**Transform**] (変換) タブを選択します。

1. SQL クエリのソースデータセットは、各ノードの [**Name**] (名前) フィールドで指定する名前により識別されます。これらの名前を使用しない場合、または名前が SQL クエリに適していない場合は、各データセットに名前を関連付けることができます。コンソールでは、`MyDataSource` などのデフォルトのエイリアスが提供されています。

   例えば、SQL 変換ノードの親ノードの名前が `Rename Org PK field` の場合、このデータセットに `org_table` という名前を関連付けることができます。その後、このエイリアスをノード名の代わりに SQL クエリで使用できます。

1. 見出し [**Code block**] (コードブロック) の下にある テキスト入力フィールドで、SQL クエリを貼り付けるか、入力します。テキストフィールドには、SQL 構文のハイライトとキーワードの候補が表示されます。

1. SQL 変換ノードを選択した状態で、[**Output schema**] (出力スキーマ) タブを選択してから、[**Edit**] (編集) を選択します。SQL クエリの出力フィールドを示す、列とデータ型を指定します。

   そのページの [**Output schema**] (出力スキーマ) セクションにある次のアクションを使用して、スキーマを指定します。
   + 列の名前を変更するには、その列の [**Key**] (キー) テキストボックス ([*field*] (フィールド) または [*property key*] (プロパティキー) とも示されます) にカーソルを置き、新しい名前を入力します。
   + 列のデータ型を変更するには、ドロップダウンリストから列の新しいデータ型を選択します。
   + トップレベルの新しい列をスキーマに追加するには、[Overflow] (オーバーフロー) (![\[\]](http://docs.aws.amazon.com/ja_jp/glue/latest/dg/images/edit-schema-actions-button.png)) ボタンを選択して、[**Add root key**] (ルートキーの追加) をクリックします。新しい列がスキーマの先頭に追加されます。
   + スキーマから列を削除するには、キー名の右端にある削除アイコン (![\[\]](http://docs.aws.amazon.com/ja_jp/glue/latest/dg/images/delete-icon-black.png)) をクリックします。

1. 出力スキーマの指定が完了したら、[**Apply**] (適用) を選択して変更を保存し、スキーマエディタを終了します。変更を保存しない場合は、[**Cancel**] (キャンセル) を選択して、スキーマエディタを編集します。

1. (オプション) ノードおよび変換のプロパティを設定した後、ノードの詳細パネルの [**Data preview**] (データのプレビュー) タブを選択して、変更されたデータセットをプレビューできます。ジョブ内の任意のノードに対してこのタブを初めて選択すると、データにアクセスする IAM ロールを指定するよう求められます。この機能を使用するには費用がかかり、IAM ロールを指定するとすぐに請求が開始します。

# [集計] を使用して選択したフィールドに対して集約計算を実行する
<a name="transforms-aggregate-fields"></a>

**Aggregate transform を使用するには**

1.  Aggregate ノードをジョブダイアグラムに追加します。

1.  **Node properties**タブ上で、ドロップダウンフィールド (オプション) を選択して、一緒にグループ化するフィールドを選択します。一度に複数のフィールドを選択するか、検索バーに入力してフィールド名を検索できます。

    フィールドを選択すると、名前とデータ型が表示されます。フィールドを削除するには、フィールドで [X] を選択します。  
![\[スクリーンショットは、Aggregate ノードの [Transform] タブを示しています。\]](http://docs.aws.amazon.com/ja_jp/glue/latest/dg/images/Aggregate-transform-tab.png)

1.  [**Aggregate another column**]を選択します。少なくとも 1 つのフィールドを選択する必要があります。  
![\[スクリーンショットは、[別の列を集約] を選択したときのフィールドを示しています。\]](http://docs.aws.amazon.com/ja_jp/glue/latest/dg/images/Aggregate-fieldtoaggregate.png)

1.  [**Field to aggregate**]ドロップダウン中のフィールドを選択します。

1.  選択したフィールドに適用する集計関数を選択します：
   +  avg-平均を計算します。
   +  CountDistinct-一意の非ヌル値の数を計算します。
   +  count-非 null 値の数を計算します。
   +  first-「グループ別」の基準を満たす最初の値を返します。
   +  last-「グループ別」の基準を満たす最後の値を返します。
   +  kurtosis-周波数ディストリビューション曲線のピークのシャープネスを計算します。
   +  max-「グループ別」の基準を満たす最高値を返します。
   +  min-「グループ別」の基準を満たす最小値を返します。
   +  skewness-正規ディストリビューションの確率ディストリビューションの非対称性の尺度 
   +  stddev\$1pop-母標準偏差を計算し、母分散の平方根を返します。
   +  sum-グループ内のすべての値の合計 
   +  sumDistinct-グループ内の個別の値の合計 
   +  var\$1samp-グループのサンプル分散 (ヌルは無視されます) 
   +  var\$1pop-グループの母分散 (ヌルは無視されます) 

# ネストされた Struct のフラット化
<a name="transforms-flatten"></a>

*データ内のネストされた Struct のフィールドをフラット化し*、最上位のフィールドにします。新しいフィールドの名前には、そこに届く Struct フィールドの名前が接頭辞として付いたフィールド名が、ドットで区切られて使用されます。

例えば、データに「phone\$1numbers」という Struct 型のフィールドがあり、他のフィールドでの「home\$1phone」という名前の Struct 型の 1 つとともに、「country\$1code」および「number」という 2 つのフィールドを伴っているとします。フラット化されると、この 2 つのフィールドはそれぞれ「phone\$1numbers.home\$1phone.country\$1code」および「phone\$1numbers.home\$1phone.number」という名前の最上位のフィールドになります。

***フラット化された*変換ノードをジョブ図に追加するには**

1. リソースパネルを開いて、**[変換]** タブの **[フラット化]** 選択し、ジョブ図に新しい変換を追加します。検索バーを使用して、「Flatten」と入力し、フラット化ノードをクリックすることもできます。ノードを追加する際に選択したノードが、その親になります。  
![\[スクリーンショットに、リソースパネルと「Flatten」という単語が入力された検索バーを示します。検索結果には、フラット化変換が表示されます。\]](http://docs.aws.amazon.com/ja_jp/glue/latest/dg/images/transform-flatten.png)

1. (オプション) **[Node properties]** (ノードのプロパティ) タブで、ジョブ図にノードの名前を入力できます。ノードの親がまだ選択されていない場合は、[**Node parents**] (ノードの親) リストから、変換の入力ソースとして使用するノードを選択します。

1. (オプション) **[Transform]** (変換) タブでは、フラット化するネストレベルの上限を設定できます。例えばその値を 1 に設定すると、最上位の Struct のみをフラット化できます。上限を 2 に設定すると、最上位とその次の Struct をフラット化できます。

# UUID カラムを追加する
<a name="transforms-uuid"></a>

*UUID* (ユニバーサル一意識別子) 列を追加すると、各行に 36 字の一意の文字列が割り当てられます。

***UUID* 変換ノードをジョブ図に追加するには**

1. リソースパネルを開いて、**[UUID]** を選択し、ジョブ図に新しい変換を追加します。ノードを追加する際に選択したノードが、その親になります。

1. (オプション) **[Node properties]** (ノードのプロパティ) タブで、ジョブ図にノードの名前を入力できます。ノードの親がまだ選択されていない場合は、[**Node parents**] (ノードの親) リストから、変換の入力ソースとして使用するノードを選択します。

1. (オプション) 新しい列の名前は **[Transform]** (変換) タブでカスタマイズできます。デフォルトでは「uuid」という名前が付けられます。

# 識別子列を追加する
<a name="transforms-identifier"></a>

データセット内の各行に数値*識別子*を割り当てます。

**ジョブ図に*識別子*変換ノードを追加するには**

1. リソースパネルを開いて、**[Identifier]** を選択し、ジョブ図に新しい変換を追加します。ノードを追加する際に選択したノードが、その親になります。

1. (オプション) **[Node properties]** (ノードのプロパティ) タブで、ジョブ図にノードの名前を入力できます。ノードの親がまだ選択されていない場合は、[**Node parents**] (ノードの親) リストから、変換の入力ソースとして使用するノードを選択します。

1. (オプション) 新しい列の名前は **[Transform]** (変換) タブでカスタマイズできます。デフォルトでは、「id」という名前が付けられます。

1. (オプション) ジョブがデータを段階的に処理して保存する場合は、ジョブの実行時に同じ ID が再利用されないよう注意する必要があります。

   **[Transform]** (変換) タブで、チェックボックスのオプション **[unique]** (一意) をチェックします。これで識別子にジョブのタイムスタンプが追加されるため、複数の実行間で一意になります。数字を増やせるようにするには、long の代わりに列を 10 進数にします。

# 列をタイムスタンプタイプに変換する
<a name="transforms-to-timestamp"></a>

*To timestamp* 変換を使用すると、数値または文字列の列のデータ型をタイムスタンプに変更できます。これで、そのデータ型で保存したり、タイムスタンプを必要とする他の変換に適用したりできるようになります。

***To timestamp* 変換ノードをジョブ図に追加するには**

1. リソースパネルを開いて、**[To timestamp]** を選択し、ジョブ図に新しい変換を追加します。ノードを追加する際に選択したノードが、その親になります。

1. (オプション) **[Node properties]** (ノードのプロパティ) タブで、ジョブ図にノードの名前を入力できます。ノードの親がまだ選択されていない場合は、[**Node parents**] (ノードの親) リストから、変換の入力ソースとして使用するノードを選択します。

1. **[Transform]** (変換) タブで、変換する列の名前を入力します。

1. **[Transform]** (変換) タブで、タイプを選択し、選択した列の解析方法を定義します。

   値が数値の場合は、秒 (Unix/Python タイムスタンプ)、ミリ秒、マイクロ秒のいずれかで表すことができます。その際は対応するオプションを選択します。

   値がフォーマットされた文字列の場合は、「iso」タイプを選択します。文字列は ISO 形式のいずれかに準拠している必要があります (例:「2022-11-02T14:40:59.915Z」)。

   この時点でタイプが不明な場合や、行によってタイプが異なる場合は、[autodetect] (自動検出) を選択すると、システムが最小限の実行コストでベストな推測を行います。

1. (オプション) **[Transform]** タブでは、選択した列を変換する代わりに、新しい列の名前を入力すれば、新しい列を作成し、元の列を残すことができます。

# タイムスタンプ列をフォーマットされた文字列に変換する
<a name="transforms-format-timestamp"></a>

タイムスタンプ列をパターンに基づいた文字列にフォーマットします。*Format timestamp* を使用すると、日付と時刻を希望する形式の文字列で取得できます。形式の定義には、[Spark の日付構文](https://spark.apache.org/docs/latest/sql-ref-datetime-pattern.html)とほとんどの [Python 日付コード](https://docs.python.org/3/library/datetime.html#strftime-and-strptime-format-codes)を使用できます。

例えば、日付文字列を「2023-01-01 00:00」のような形式にしたいときは、Spark 構文を「yyyy-MM-dd HH:mm」として使用するか、Python の同様の日付コード「%Y-%m-%d %H:%M」を使用することで、形式を定義できます。

***Format timestamp* 変換ノードをジョブ図に追加するには**

1. リソースパネルを開いて、**[Format timestamp]** を選択し、ジョブ図に新しい変換を追加します。ノードを追加する際に選択したノードが、その親になります。

1. (オプション) **[Node properties]** (ノードのプロパティ) タブで、ジョブ図にノードの名前を入力できます。ノードの親がまだ選択されていない場合は、[**Node parents**] (ノードの親) リストから、変換の入力ソースとして使用するノードを選択します。

1. **[Transform]** (変換) タブで、変換する列の名前を入力します。

1. **[Transform]** タブに、使用する**タイムスタンプ形式**のパターンを、[Spark 日付構文](https://spark.apache.org/docs/latest/sql-ref-datetime-pattern.html)または [Python 日付コード](https://docs.python.org/3/library/datetime.html#strftime-and-strptime-format-codes)を使って入力します。

1. (オプション) **[Transform]** タブでは、選択した列を変換する代わりに、新しい列の名前を入力すれば、新しい列を作成し、元の列を残すことができます。

# 条件付きルーター変換の作成
<a name="transforms-conditional-router"></a>

 条件付きルーター変換を使うと、着信データに複数の条件を適用することができます。着信データの行はそれぞれグループフィルター条件により評価され、対応するグループに取り入れて処理されます。行が複数のグループフィルター条件を満たしている場合、変換により、その行が複数のグループに渡されます。行がどの条件も満たしていない場合は、その行を削除するか、デフォルトの出力グループにルーティングします。

 この変換はフィルター変換に似ていますが、同じ入力データを複数の条件でテストしたいユーザーにとって便利です。

**条件付きルーター変換を追加するには**

1.  条件付きルーター変換を実行するノードを選択します。これは、ソースノードでも別の変換でもかまいません。

1.  **[Action]** (アクション) を選択し、検索バーで [Conditional Router] (条件付きルーター) を検索し、選択します。**条件付きルーター**変換が、2 つの出力ノードと共に追加されます。一方の出力ノード [Default group] (デフォルトグループ) には、もう一方の出力ノードで定義された条件のいずれをも満たさないレコードが含まれます。デフォルトのグループは編集できません。  
![\[こちらのスクリーンショットは、ソースノードに接続された条件付きルーター変換を示したものです。出力ノードは、条件付きルーターノードから分岐しています。\]](http://docs.aws.amazon.com/ja_jp/glue/latest/dg/images/transform-conditional-router-node.png)

    **[Add group]** (グループを追加) を選択すると、出力グループを追加できます。各出力グループで、グループに名前を付けてフィルタ条件と論理演算子を追加できます。  
![\[このスクリーンショットは、条件付きルーター変換のタブで、出力グループ、論理演算子、条件付きフィルターに名前を付けるオプションが付いています。\]](http://docs.aws.amazon.com/ja_jp/glue/latest/dg/images/transform-conditional-router-tab.png)

1.  出力グループの名前を変更するときは、グループに新しい名前を入力します。AWS Glue Studio は、ユーザーに代わって自動的にグループに名前を付けます (例: 「output\$1group\$11」)。

1.  論理演算子 (**AND**、**OR**) を選択し、**[Key]** (キー)、**[Operation]** (演算)、**[Value]** (値) を指定して**[Filter condition]** (フィルター条件) を追加します。論理演算子を使用すると、複数のフィルター条件を実装し、指定した各フィルター条件に対して論理演算子を実行できます。

    キーを指定するときは、スキーマに表示されているキーの中から選択します。その後、選択したキーの種類に応じて使用可能な演算を選択します。例えば、キーの種類が「string」の場合、選択できる演算は「match」です。  
![\[こちらのスクリーンショットは、キー、操作、値のフィルター条件フィールドを含む、条件付きルーター変換タブです。\]](http://docs.aws.amazon.com/ja_jp/glue/latest/dg/images/transform-conditional-router-filter-condition.png)

1.  **[Value]** (値) フィールドに値を入力します。その他の条件を追加するときは、**[Add condition]** (条件を追加) を選択します。フィルター条件を削除するときは、ごみ箱のアイコンを選択します。

# [列の連結] 変換を使用して列を追加する
<a name="transforms-concatenate-columns"></a>

 [連結] 変換では、オプションのスペーサーを使用して、他の列の値を使った新しい文字列の列を作成できます。「year」、「month」、「day」を順にスペーサー「-」で連結して、連結した列「date」を定義する例を以下に示します。


| day | month | year | date | 
| --- | --- | --- | --- | 
| 01 | 01 | 2020 | 2020-01-01 | 
| 02 | 01 | 2020 | 2020-01-02 | 
| 03 | 01 | 2020 | 2020-01-03 | 
| 04 | 01 | 2020 | 2020-01-04 | 

**[連結] 変換を追加するには**

1. リソースパネルを開きます。次に **[列の連結]** を選択して、ジョブ図に新しい変換を追加します。ノードを追加する際に選択したノードが、その親になります。

1. (オプション) **[Node properties]** (ノードのプロパティ) タブで、ジョブ図にノードの名前を入力できます。ノードの親がまだ選択されていない場合は、[Node parents] (ノードの親) リストから、変換の入力ソースとして使用するノードを選択します。

1. **[変換]** タブで、連結する列および連結した文字列を保持する列の名前を入力します。ドロップダウンで列にチェックを入れた順序が、使用される順序になります。  
![\[スクリーンショットは、[連結] 変換の [変換] タブを示しています。\]](http://docs.aws.amazon.com/ja_jp/glue/latest/dg/images/transforms-concatenate-transform-tab.png)

1. **[スペーサー - オプション]** — 連結したフィールドの間に配置する文字列を入力します。デフォルトでは、スペーサーはありません。

1. **[NULL 値 - オプション]** — 列の値が「NULL」の場合に使用する文字列を入力します。デフォルトでは、列の値が「NULL」または「NA」の場合、空の文字列が使用されます。

# [文字列の分割] 変換を使用して文字列の列を分割する
<a name="transforms-split-string"></a>

 [文字列の分割] 変換を使用して、正規表現の文字列をトークンの配列に分割し、分割方法を定義します。その後、列を配列型のままにするか、この後に **[配列から列へ]** 変換を適用して、配列の値を抽出し最上位のフィールドに追加できます。ただし、各トークンの意味が事前にわかっていることが前提です。また、カテゴリのセットなどトークンの順序が関係ない場合、**[分解]** 変換を使用して値ごとに個別の行を生成できます。

 例えば、カンマを分割のパターンとして使用して「categories」列を分割し、「categories\$1arr」列を追加できます。


| product\$1id | カテゴリ | categories\$1arr | 
| --- | --- | --- | 
| 1 | sports,winter | [sports, winter] | 
| 2 | garden,tools | [garden, tools] | 
| 3 | videogames | [videogames] | 
| 4 | game,boardgame,social | [game, boardgame, social] | 

**[文字列の分割] 変換を追加するには：**

1. リソースパネルを開いて、[Split String] を選択し、ジョブ図に新しい変換を追加します。ノードを追加する際に選択したノードが、その親になります。

1. (オプション) [Node properties] (ノードのプロパティ) タブで、ジョブ図にノードの名前を入力できます。ノードの親がまだ選択されていない場合は、[Node parents] (ノードの親) リストから、変換の入力ソースとして使用するノードを選択します。

1. **[変換]** タブで、分割する列を選択して文字列の分割に使用するパターンを入力します。ほとんどの場合、正規表現として特別な意味がありエスケープする必要がある場合を除いて、文字を入力するだけで済みます。エスケープする必要がある文字は `\.[]{}()<>*+-=!?^$|` で、文字の前にバックスラッシュを追加することでエスケープできます。例えば、ドット (「.」) で区切る場合は、「`\.`」と入力する必要があります。ただし、カンマには特別な意味はなく、「`,`」のようにそのまま指定できます。  
![\[スクリーンショットは、[文字列の分割] 変換の [変換] タブを示しています。\]](http://docs.aws.amazon.com/ja_jp/glue/latest/dg/images/transforms-split-string-transform-tab.png)

1. (オプション) 元の文字列の列を保持したい場合は、新しい配列の列の名前を入力できます。これにより、元の文字列の列と新しいトークン化された配列の列の両方が保持できます。

# [配列から列へ] 変換を使用して、配列の要素を抽出して最上位の列に追加する
<a name="transforms-array-to-columns"></a>

 [配列から列へ] 変換では、配列型の列の一部またはすべての要素を抽出して新しい列に追加できます。配列に抽出に十分な数の値がある場合、変換によって新しい列が可能な限り埋め込まれ、オプションで指定された位置の要素を取得できます。

 例えば、ip v4 サブネットに「文字列の分割」変換を適用した結果である配列の列「subnet」がある場合、最初と 4 番目の要素を抽出して、新しい列「first\$1octect」と「forth\$1octect」に追加できます。この例の変換の出力は次のようになります (最後の 2 行の配列が期待する長さよりも短いことに注意してください)。


| サブネット | first\$1octect | fourth\$1octect | 
| --- | --- | --- | 
| [54, 240, 197, 238] | 54 | 238 | 
| [192, 168, 0, 1] | 192 | 1 | 
| [192, 168] | 192 |  | 
| [] |  |  | 

**[配列から列へ] 変換を追加するには:**

1. リソースパネルを開いて、**[Array To Columns]** を選択し、ジョブ図に新しい変換を追加します。ノードを追加する際に選択したノードが、その親になります。

1. (オプション) **[Node properties]** (ノードのプロパティ) タブで、ジョブ図にノードの名前を入力できます。ノードの親がまだ選択されていない場合は、[Node parents] (ノードの親) リストから、変換の入力ソースとして使用するノードを選択します。

1. **[変換]** タブで、抽出する配列の列を選択し、抽出されたトークンの新しい列のリストを入力します。  
![\[スクリーンショットは、[配列から列へ] 変換の [変換] タブを示しています。\]](http://docs.aws.amazon.com/ja_jp/glue/latest/dg/images/transforms-array-to-columns-transform-tab.png)

1. (オプション) 列を割り当てるために配列のトークンを取得しない場合は、指定した同じ順序で列のリストに割り当てるインデックスを指定できます。例えば、出力列が「column1, column2, column3」でインデックスが「4, 1, 3」の場合、配列の 4 番目の要素は column1 に、最初の要素は column2 に、3 番目の要素は column3 に指定できます (配列がインデックスの番号より短い場合は NULL 値が設定されます)。

# [現在のタイムスタンプを追加] 変換の使用
<a name="transforms-add-current-timestamp"></a>

 **[現在のタイムスタンプを追加]** 変換では、データが処理された時刻で行をマークできます。これは、監査目的やデータパイプラインでのレイテンシーの追跡に役立ちます。この新しい列は、タイムスタンプのデータ型またはフォーマットされた文字列として追加できます。

**[現在のタイムスタンプを追加] 変換を追加するには:**

1. リソースパネルを開いて、**[Add Current Timestamp]** を選択し、ジョブ図に新しい変換を追加します。ノードを追加する際に選択したノードが、その親になります。

1. (オプション) **[Node properties]** (ノードのプロパティ) タブで、ジョブ図にノードの名前を入力できます。ノードの親がまだ選択されていない場合は、[Node parents] (ノードの親) リストから、変換の入力ソースとして使用するノードを選択します。  
![\[スクリーンショットは、[現在のタイムスタンプを追加] 変換の [変換] タブを示しています。\]](http://docs.aws.amazon.com/ja_jp/glue/latest/dg/images/transforms-add-current-timestamp-transform-tab.png)

1. (オプション) 列をフォーマット済の日付の文字列にしたい場合は、**[変換]** タブで、新しい列のカスタム名とフォーマットを入力します。

# [行から列へのピボット] 変換の使用
<a name="transforms-pivot-rows-to-columns"></a>

 **[行から列へのピボット]** 変換では、選択した列の固有の値を回転させて数値列を集約し、新しい列にすることができます (複数の列を選択した場合は、値が連結され新しい列に名前が付けられます)。このように、それぞれの固有の値ごとに部分的な集計を含む列を増やしながら、行を統合します。例えば、月別および国別の売上に関するデータセットがあるとします (わかりやすいように並べ替えられています)。


| 年 | month | country | amount | 
| --- | --- | --- | --- | 
| 2020 | Jan | uk | 32 | 
| 2020 | Jan | de | 42 | 
| 2020 | Jan | us | 64 | 
| 2020 | Feb | uk | 67 | 
| 2020 | Feb | de | 4 | 
| 2020 | Feb | de | 7 | 
| 2020 | Feb | us | 6 | 
| 2020 | Feb | us | 12 | 
| 2020 | Jan | us | 90 | 

 **金額**と**国**を集計列としてピボットすると、元の**国**列から新しい列が作成されます。次の表では、**国**列の代わりに **de**、**uk**、**us** の新しい列が作成されています。


| 年 | month | de | uk | us | 
| --- | --- | --- | --- | --- | 
| 2020 | Jan | 42 | 32 | 64 | 
| 2020 | Jan | 11 | 67 | 18 | 
| 2021 | Jan |  |  | 90 | 

 代わりに、月と国の両方をピボットする場合は、それらの列の値の組み合わせごとに列が表示されます。


| year | Jan\$1de | Jan\$1uk | Jan\$1us | Feb\$1de | Feb\$1uk | Feb\$1us | 
| --- | --- | --- | --- | --- | --- | --- | 
| 2020 | 42 | 32 | 64 | 11 | 67 | 18 | 
| 2021 |  |  | 90 |  |  |  | 

**[行から列へのピボット] 変換を追加するには:**

1. リソースパネルを開いて、**[Pivot Rows To Columns]** を選択し、ジョブ図に新しい変換を追加します。ノードを追加する際に選択したノードが、その親になります。

1. (オプション) **[Node properties]** (ノードのプロパティ) タブで、ジョブ図にノードの名前を入力できます。ノードの親がまだ選択されていない場合は、[Node parents] (ノードの親) リストから、変換の入力ソースとして使用するノードを選択します。

1. **[変換]** タブで、新しい列の値を生成するために集約される数値列、適用する集計関数、および固有の値を新しい列に変換する列を選択します。  
![\[スクリーンショットは、[行から列へのピボット] 変換の [変換] タブを示しています。\]](http://docs.aws.amazon.com/ja_jp/glue/latest/dg/images/transforms-pivot-rows-to-columns-transform-tab.png)

# [列から行へのピボット解除] 変換の使用
<a name="transforms-unpivot-columns-to-rows"></a>

 **[ピボット解除]** 変換では、列を新しい列の値に変換して、固有の値ごとに行を生成できます。この変換はピボットの逆ですが、集約された同じ値の行を分解したり、組み合わせを元の列に分割できないため、同等ではないことに注意してください (これらは、後で [分割] 変換を使用して行うことができます)。例えば、次のようなテーブルがあるとします。


| 年 | month | de | uk | us | 
| --- | --- | --- | --- | --- | 
| 2020 | Jan | 42 | 32 | 64 | 
| 2020 | Feb | 11 | 67 | 18 | 
| 2021 | Jan |  |  | 90 | 

 値「amount」を使用して「de」、「uk」、「us」の列を「country」列にピボット解除すると、次のようになります (ここでは分かりやすくするために並べ替えられています)。


| 年 | month | country | amount | 
| --- | --- | --- | --- | 
| 2020 | Jan | uk | 32 | 
| 2020 | Jan | de | 42 | 
| 2020 | Jan | us | 64 | 
| 2020 | Feb | uk | 67 | 
| 2020 | Feb | de | 11 | 
| 2020 | Feb | us | 18 | 
| 2021 | Jan | us | 90 | 

 NULL 値の列 (Jan 2021 の「de」と「uk」) はデフォルトでは生成されません。このオプションを有効にすると、次のようになります。


| 年 | month | country | amount | 
| --- | --- | --- | --- | 
| 2020 | Jan | uk | 32 | 
| 2020 | Jan | de | 42 | 
| 2020 | Jan | us | 64 | 
| 2020 | Feb | uk | 67 | 
| 2020 | Feb | de | 11 | 
| 2020 | Feb | us | 18 | 
| 2021 | Jan | us | 90 | 
| 2021 | Jan | de |  | 
| 2021 | Jan | uk |  | 

**[列から行へのピボット解除] 変換を追加するには:**

1. リソースパネルを開いて、**[Unpivot Columns to Rows]** を選択し、ジョブ図に新しい変換を追加します。ノードを追加する際に選択したノードが、その親になります。

1. (オプション) **[Node properties]** (ノードのプロパティ) タブで、ジョブ図にノードの名前を入力できます。ノードの親がまだ選択されていない場合は、[Node parents] (ノードの親) リストから、変換の入力ソースとして使用するノードを選択します。

1. **[変換]** タブで、ピボット解除する列の名前と値を保持するために作成する新しい列を入力します。  
![\[スクリーンショットは、[列から行へのピボット解除] 変換の [変換] タブを示しています。\]](http://docs.aws.amazon.com/ja_jp/glue/latest/dg/images/transforms-unpivot-columns-to-rows-transform-tab.png)

# [オートバランス処理] 変換を使用してランタイムを最適化する
<a name="transforms-autobalance-processing"></a>

 **[オートバランス処理]** 変換は、パフォーマンスを向上させるためにデータをワーカー間で再配分します。これは、データのバランスが取れていない場合や、ソースからのデータでは十分に並行処理ができない場合に役立ちます。これは、ソースが gzip 圧縮されている場合や JDBC である場合に一般的です。データの再配分には中程度のパフォーマンスコストがかかるため、データのバランスが既に取れている場合は、最適化により必ずしもコストが補われるとは限りません。変換で Apache Spark の再パーティション化を使用して、クラスターのキャパシティに最適な複数のパーティション間でデータをランダムに再度割り当てできます。上級ユーザーの場合は、複数のパーティションを手動で入力できます。さらに、指定した列に基づいてデータを再編成することで、分割テーブルの書き込みを最適化することもできます。これにより、出力ファイルがより統合されます。

****

1. リソースパネルを開いて、**[Autobalance Processing]** を選択し、ジョブ図に新しい変換を追加します。ノードを追加する際に選択したノードが、その親になります。

1. (オプション) **[Node properties]** (ノードのプロパティ) タブで、ジョブ図にノードの名前を入力できます。ノードの親がまだ選択されていない場合は、[Node parents] (ノードの親) リストから、変換の入力ソースとして使用するノードを選択します。

1. (オプション) **[変換]** タブで、複数のパーティションを入力できます。一般的に、この値はシステムに決定させることをお勧めしますが、値を制御する必要がある場合は乗数を調整したり特定の値を入力できます。列で分割されたデータを保存する場合は、再パーティションの列と同じ列を選択できます。これにより、各パーティションのファイルの数を最小限に抑え、パーティションごとに多数のファイルが作成されるのを防ぐことができます。ファイルが多数作成されると、データをクエリするツールのパフォーマンスが低下します。  
![\[スクリーンショットは、[オートバランス処理] 変換の [変換] タブを示しています。\]](http://docs.aws.amazon.com/ja_jp/glue/latest/dg/images/transforms-autobalance-processing-transform-tab.png)

# [派生列] 変換を使用して他の列を結合する
<a name="transforms-derived-column"></a>

 **[派生列]** 変換では、定数やリテラル、データ内の他の列も使用できる数式または SQL 式に基づいて新しい列を定義できます。例えば「success」および「count」列から「percentage」列を派生させるには、「success \$1 100 / count \$1\$1 '%'」という SQL 式を入力します。

 結果の例: 


| success | count | 割合(%) | 
| --- | --- | --- | 
| 14 | 100 | 14% | 
| 6 | 20 | 3% | 
| 3 | 40 | 7.5% | 

**[派生列] 変換を追加するには**

1. リソースパネルを開いて、**[Derived Column]** を選択し、ジョブ図に新しい変換を追加します。ノードを追加する際に選択したノードが、その親になります。

1. (オプション) **[Node properties]** (ノードのプロパティ) タブで、ジョブ図にノードの名前を入力できます。ノードの親がまだ選択されていない場合は、[Node parents] (ノードの親) リストから、変換の入力ソースとして使用するノードを選択します。

1. **[変換]** タブで、列の名前とその内容の式を入力します。  
![\[スクリーンショットは、[派生列] 変換の [変換] タブを示しています。\]](http://docs.aws.amazon.com/ja_jp/glue/latest/dg/images/transforms-dervied-column-transform-tab.png)

# [ルックアップ] 変換を使用してカタログテーブルから一致するデータを追加する
<a name="transforms-lookup"></a>

 **[ルックアップ]** 変換では、キーがデータ内の定義済みのルックアップ列と一致する場合、定義済みのカタログテーブルから列を追加できます。これは、データとルックアップテーブル間を左外部結合し、条件に一致する列として使用するのと同じです。

**[ルックアップ] 変換を追加するには**

1. リソースパネルを開いて、**[Lookup]** を選択し、ジョブ図に新しい変換を追加します。ノードを追加する際に選択したノードが、その親になります。

1. (オプション) **[Node properties]** (ノードのプロパティ) タブで、ジョブ図にノードの名前を入力できます。ノードの親がまだ選択されていない場合は、[Node parents] (ノードの親) リストから、変換の入力ソースとして使用するノードを選択します。

1. **[変換]** タブで、ルックアップの実行に使用するカタログテーブルの完全修飾名を入力します。例えば、データベースが「mydb」で、テーブルが「mytable」の場合は、「mydb.mytable」と入力します。次に、ルックアップキーが作成されている場合は、ルックアップテーブルで一致するものを見つけるための基準を入力します。キー列のリストは、カンマで区切って入力します。1 つ以上のキー列に同じ名前がない場合は、マッチマッピングを定義する必要があります。

   例えば、データ列が「user\$1id」と「region」で、ユーザーテーブルで対応する列の名前が「id」と「region」の場合、**[一致する列]** フィールドに「user\$1id=id, region」と入力します。region=region と入力することもできますが、これらは同じなので必要ありません。

1. 最後に、ルックアップテーブルで一致した行から取得する列を入力して、それらをデータに組み込みます。一致するものが見つからなかった場合、それらの列は NULL に設定されます。
**注記**  
**[ルックアップ]** 変換では、効率を上げるため左結合を使用しています。ルックアップテーブルに複合キーがある場合は、一致する列がすべてのキーの列と一致するように設定されていることを確認し、一致が 1 つだけになるようにしてください。そうしないと、複数のルックアップ行が一致し、一致するごとに余分な行が追加されます。  
![\[スクリーンショットは、[ルックアップ] 変換の [変換] タブを示しています。\]](http://docs.aws.amazon.com/ja_jp/glue/latest/dg/images/transforms-lookup-transform-tab.png)

# [配列またはマップを行に分解] 変換の使用
<a name="transforms-explode-array"></a>

 **[分解]** 変換では、ネストされたデータ構造から値を抽出し、操作しやすい個々の行を追加できます。配列の場合、変換により配列の各値に対して行が生成され、その行に他の列の値が複製されます。マップの場合、変換によりキーと値を列として持つ各エントリに対して行が生成されます。各エントリには列としてのキーと値があり、その行に他の列も複製されます。

 例えば、このデータセットに複数の値がある「category」配列の列があるとします。


| product\$1id | category | 
| --- | --- | 
| 1 | [sports, winter] | 
| 2 | [garden, tools] | 
| 3 | [videogames] | 
| 4 | [game, boardgame, social] | 
| 5 | [] | 

 「category」列が同じ名前の列に分解されると、その列が上書きされます。NULL を含めるように選択すると、次のようになります (分かりやすいように順番になっています)。


| product\$1id | category | 
| --- | --- | 
| 1 | sports | 
| 1 | winter | 
| 2 | garden | 
| 2 | tool | 
| 3 | videogames | 
| 4 | ゲーム | 
| 4 | boardgame | 
| 4 | social | 
| 5 |  | 

**[配列またはマップを行に分解] 変換を追加するには:**

1. リソースパネルを開いて、**[Explode Array Or Map Into Rows]** を選択し、ジョブ図に新しい変換を追加します。ノードを追加する際に選択したノードが、その親になります。

1. (オプション) **[Node properties]** (ノードのプロパティ) タブで、ジョブ図にノードの名前を入力できます。ノードの親がまだ選択されていない場合は、[Node parents] (ノードの親) リストから、変換の入力ソースとして使用するノードを選択します。

1. **[変換]** タブで、分解する列を選択します (タイプが配列またはマップである必要があります)。次に、配列の項目を表す列の名前を入力するか、マップを分解する場合はキーと値を表す列の名前を入力します。

1. (オプション) **[変換]** タブでは、デフォルトで分解する列が NULL、またはデータ構造が空である場合、分解されたデータセットではその列が省略されます。(新しい列を NULL として) 行を残しておきたい場合は、[NULL を含む] にチェックを入れます。  
![\[スクリーンショットは、[配列またはマップを行に分解] 変換の [変換] タブを示しています。\]](http://docs.aws.amazon.com/ja_jp/glue/latest/dg/images/transforms-explode-array-transform-tab.png)

# レコードマッチング変換を使用して既存のデータ分類変換を呼び出す
<a name="transforms-record-matching"></a>

この変換は、既存のレコードマッチング機械学習データ分類変換を呼び出します。

この変換は、ラベルに基づいて、トレーニング済みモデルに対して現在のデータを評価します。列「match\$1id」が追加され、アルゴリズムトレーニングに基づいて、同等とみなされる項目のグループに各行が割り当てられます。詳細については、「[AWS Lake Formation FindMatches によるレコードのマッチング](https://docs.aws.amazon.com/glue/latest/dg/machine-learning.html)」を参照してください。

**注記**  
ビジュアルジョブで使用する AWS Glue のバージョンは、レコードマッチング変換の作成時に AWS Glue で使用するバージョンと一致する必要があります。

![\[このスクリーンショットは、変換のデータプレビューを示しています。\]](http://docs.aws.amazon.com/ja_jp/glue/latest/dg/images/recording-matching-transform-1.png)


**レコードマッチング変換ノードをジョブ図に追加するには**

1. リソースパネルを開いて、**[Record Matching]** を選択し、ジョブ図に新しい変換を追加します。ノードを追加する際に選択したノードが、その親になります。

1. ノードのプロパティパネルで、ジョブ図にノード名を入力します。ノードの親がまだ選択されていない場合、[**Node parents**] (ノードの親) リストから、変換の入力ソースとして使用するノードを選択します。

1. **[変換]** タブに、**[機械学習の変換]** ページから取得した ID を入力します。  
![\[このスクリーンショットは、機械学習変換ページの ID を示しています。\]](http://docs.aws.amazon.com/ja_jp/glue/latest/dg/images/recording-matching-transform-2.png)

1. (オプション) **[変換]** タブで、信頼スコアを追加するオプションを確認できます。計算量は増えますが、モデルは各マッチングの信頼スコアを追加の列として推定します。

# null 行の削除
<a name="transforms-remove-null-rows"></a>

この変換は、すべての列が null である行をデータセットから削除します。さらに、この条件を拡張して空のフィールドを含め、1 つ以上の列が空でない行を保持することもできます。

**null 行削除変換ノードをジョブ図に追加するには**

1. リソースパネルを開いて、**[Remove Null Rows]** を選択し、ジョブ図に新しい変換を追加します。ノードを追加する際に選択したノードが、その親になります。

1. ノードのプロパティパネルで、ジョブ図にノード名を入力します。ノードの親がまだ選択されていない場合、[**Node parents**] (ノードの親) リストから、変換の入力ソースとして使用するノードを選択します。

1. (オプション) 行が null でもなく空でもないようにする必要がある場合は、**[変換]** タブで **[Extended]** オプションをオンにします。この変換により、空の文字列、配列、マップは null とみなされます。

# JSON データを含む文字列の列の解析
<a name="transforms-parse-json-column"></a>

この変換は、JSON データを含む文字列の列を解析し、JSON がオブジェクトか配列かに応じて、それぞれを構造体または配列の列に変換します。(オプション) 解析された列と元の列の両方を保持できます。

JSON スキーマは、オプションのサンプリングを使用して提供または推測できます (JSON オブジェクトの場合)。

**JSON 列解析変換ノードをジョブ図に追加するには**

1. リソースパネルを開いて、**[Parse JSON Column]** を選択し、ジョブ図に新しい変換を追加します。ノードを追加する際に選択したノードが、その親になります。

1. ノードのプロパティパネルで、ジョブ図にノード名を入力します。ノードの親がまだ選択されていない場合、[**Node parents**] (ノードの親) リストから、変換の入力ソースとして使用するノードを選択します。

1. **[変換]** タブで、JSON 文字列を含む列を選択します。

1. (オプション) **[変換]** タブで、JSON データが従うスキーマを、SQL 構文を使用して入力します (例: オブジェクトの場合は「field1 STRING, field2 INT」、配列の場合は「ARRAY<STRING>」)。

   配列の場合はスキーマが必要ですが、オブジェクトの場合はデータを使用して推測されます (スキーマが指定されていない場合)。スキーマの推論による影響を軽減するため (特に大規模なデータセットの場合)、**[Ratio of samples to use to infer schema]** を入力することで、データ全体を 2 回読み取る必要がなくなります。値が 1 より小さい場合は、対応するランダムサンプルの比率を使用してスキーマが推測されます。データに信頼性があり、行間でオブジェクトが一貫している場合は、0.1 などの小さな比率を使用してパフォーマンスを高めることができます。

1. (オプション) 元の文字列の列と解析された列の両方を保持する場合は、**[変換]** タブで新しい列名を入力します。

# JSON パスの抽出
<a name="transforms-extract-json-path"></a>

この変換は、JSON 文字列の列から新しい列を抽出します。この変換は、必要なデータ要素が少なく、JSON コンテンツ全体をテーブルスキーマにインポートしない場合に便利です。

**JSON パス抽出変換ノードをジョブ図に追加するには**

1. リソースパネルを開いて、**[Extract JSON Path]** を選択し、ジョブ図に新しい変換を追加します。ノードを追加する際に選択したノードが、その親になります。

1. ノードのプロパティパネルで、ジョブ図にノード名を入力します。ノードの親がまだ選択されていない場合、[**Node parents**] (ノードの親) リストから、変換の入力ソースとして使用するノードを選択します。

1. **[変換]** タブで、JSON 文字列を含む列を選択します。1 つ以上の JSON パス式をカンマで区切って入力します。各式は、JSON 配列またはオブジェクトから値を抽出する方法を示しています。例えば、JSON 列に「prop\$11」と「prop2」というプロパティを持つオブジェクトが含まれている場合、「prop\$11, prop\$12」と名前を指定して両方を抽出できます。

   JSON フィールドに特殊文字が含まれていて、この JSON `{"a. a": 1}` からプロパティを抽出する場合などには、パス `$['a. a']` を使用できます。例外は、パスを区切るためのカンマです。続いて、各パスに対応する列名をカンマで区切って入力します。

1. (オプション) **[変換]** タブでは、抽出された JSON 列を削除するようにチェックできます。これは、必要な JSON データを抽出した後、残りのデータが不要な場合に便利です。

# 正規表現による文字列の断片の抽出
<a name="transforms-regex-extractor"></a>

この変換は、正規表現を使用して文字列の断片を抽出し、そこから新しい列を作成します。正規表現グループを使用する場合は複数の列を作成します。

**正規表現抽出変換ノードをジョブ図に追加するには**

1. リソースパネルを開いて、**[Regex Extractor]** を選択し、ジョブ図に新しい変換を追加します。ノードを追加する際に選択したノードが、その親になります。

1. ノードのプロパティパネルで、ジョブ図にノード名を入力します。ノードの親がまだ選択されていない場合、[**Node parents**] (ノードの親) リストから、変換の入力ソースとして使用するノードを選択します。

1. **[変換]** タブに、正規表現とそれを適用する必要のある列を入力します。続いて、一致する文字列を格納する新しい列の名前を入力します。新しい列は、ソース列が null の場合にのみ null になり、正規表現が一致しない場合は空になります。

   正規表現がグループを使用する場合、対応する列名はカンマで区切られますが、列名を空のままにすることでグループをスキップできます。

   例えば、長い ISO 日付形式と短い ISO 日付形式の両方を使用する文字列を含む列「purchase\$1date」があり、使用可能な場合は、年、月、日、時間を抽出します。時間グループはオプションであり、使用できない場合、(正規表現が一致しないため) 抽出されたすべてのグループは空の文字列になります。グループで、時間をオプションではなく含めたい場合は、名前を空のままにすることで抽出されなくなります (グループには T 文字が含まれます)。  
![\[このスクリーンショットは、正規表現抽出の正規表現の設定を示しています。\]](http://docs.aws.amazon.com/ja_jp/glue/latest/dg/images/regex-extractor-1.png)

   データプレビューの結果:  
![\[このスクリーンショットは、正規表現抽出のデータプレビューの設定を示しています。\]](http://docs.aws.amazon.com/ja_jp/glue/latest/dg/images/regex-extractor-2.png)

# カスタム変換を作成する
<a name="transforms-custom"></a>

データに対してより複雑な変換を実行する必要がある場合、またはデータプロパティキーをデータセットに追加する場合は、ジョブ図に**カスタムコード**変換を追加します。カスタムコードノードを使用すると、変換を実行するスクリプトを入力できます。

カスタムコードを使用する場合は、スキーマエディタを使用して、カスタムコードを通して出力に加えらえる変更を指定する必要があります。スキーマの編集時に、次のアクションを実行できます。
+ データプロパティキーの追加または削除
+ データプロパティキーのデータ型の変更
+ データプロパティキーの名前の変更
+ ネストされたプロパティキーの再構築

出力をターゲットの場所に送信するには、*SelectFromCollection* 変換を使用して、カスタム変換ノードの結果から単一の `DynamicFrame` を選択する必要があります。

次のタスクを実行して、カスタム変換ノードをジョブ図に追加できます。

## カスタムコード変換ノードをジョブ図に追加する
<a name="transforms-custom-addnode"></a>

**カスタム変換ノードをジョブ図に追加するには**

1. (オプション) リソースパネルを開いて、**[Custom transform]** を選択し、ジョブ図にカスタム変換を追加します。

1. [**Node properties**] (ノードのプロパティ) タブで、ジョブ図のノードの名前を入力します。ノードの親がまだ選択されていない場合、またはカスタム変換に複数の入力が必要な場合は、[**Node parents**] (ノードの親) リストから、変換の入力ソースとして使用するノードを選択します。

## カスタム変換ノードのコードを入力する
<a name="transforms-custom-addcode"></a>

入力フィールドにコードを入力またはコピーできます。ジョブでは、データ変換の実行にこのコードを使用します。Python または Scala のいずれかでコードのスニペットを指定できます。コードは、入力として 1 つ以上の `DynamicFrames` を取り、`DynamicFrames` のコレクションを返す必要があります。

**カスタム変換ノードのスクリプトを入力するには**

1. ジョブ図でカスタム変換ノードを選択した状態で、[**Transform**] (変換) タブを選択します。

1. 見出し [**Code block**] (コードブロック) の下のテキスト入力フィールドで、変換用のコードを貼り付けるか、入力します。使用するコードは、[**Job details**] (ジョブの詳細) タブのジョブで指定されている言語と一致する必要があります。

   コード内の入力ノードを参照する場合、AWS Glue Studio は、作成された順序に基づきジョブの図表ノードによって連続的に返される `DynamicFrames` に名前を付けます。コード内で次のいずれかのネーミングメソッドを使用します。
   + Classic code generation — 関数名を使用して、ジョブダイアグラム内のノードを参照します。
     + データソースノード: `DataSource0`、`DataSource1`、`DataSource2` などです。
     + 変換ノード: `Transform0`、`Transform1`、`Transform2` などです。
   + New code generation — '`_node1`','`_node2`'などが添付されたノードの[**Node properties**]タブ上で指定された名前を使用します。例えば、`S3bucket_node1`、`ApplyMapping_node2`、`S3bucket_node2`、`MyCustomNodeName_node1`

   各エラーコード generator のさらなる詳細については、「[スクリプトコードの生成](job-editor-features.md#code-gen)」を参照してください。

次の例は、コードボックスに入力するコードの形式を示しています。

------
#### [ Python ]

次の例では、まず `DynamicFrame` を受信し、それを `DataFrame` に変換してネイティブフィルターメソッド (1000 票を超えるレコードのみを保持)を適用しています。その後、返す前に `DynamicFrame` に再び変換しています。

```
def FilterHighVoteCounts (glueContext, dfc) -> DynamicFrameCollection:
    df = dfc.select(list(dfc.keys())[0]).toDF()
    df_filtered = df.filter(df["vote_count"] > 1000)
    dyf_filtered = DynamicFrame.fromDF(df_filtered, glueContext, "filter_votes")
    return(DynamicFrameCollection({"CustomTransform0": dyf_filtered}, glueContext))
```

------
#### [ Scala ]

次の例では、まず `DynamicFrame` を受信し、それを `DataFrame` に変換してネイティブフィルターメソッド (1000 票を超えるレコードのみを保持)を適用しています。その後、返す前に `DynamicFrame` に再び変換しています。

```
object FilterHighVoteCounts {
  def execute(glueContext : GlueContext, input : Seq[DynamicFrame]) : Seq[DynamicFrame] = {
    val frame = input(0).toDF()
    val filtered = DynamicFrame(frame.filter(frame("vote_count") > 1000), glueContext)
    Seq(filtered)
  }
}
```

------

## カスタム変換ノードでスキーマを編集する
<a name="transforms-custom-editschema"></a>

カスタム transform ノードを使用する場合、AWS Glue Studio は、transform によって作成された出力スキーマを自動で推測することはできません。スキーマエディタを使用して、カスタム変換コードによって実装されるスキーマの変更を記述できます。

カスタムコードノードでは、カスタムコードの入力として `DynamicFrame` を提供する任意の数の親ノードを持つことができます。カスタムコードノードでは、`DynamicFrames` のコレクションが返されます。入力として使用される各 `DynamicFrame` には、スキーマが関連付けられています。カスタムコードノードによって返される各 `DynamicFrame` を記述するスキーマを追加する必要があります。

**注記**  
 カスタム変換で独自のスキーマを設定した場合、AWS Glue Studio は、前のノードからのスキーマ継承を行いません。スキーマを更新するには、カスタム変換のノードを選択した上で、[Data preview] (データプレビュー) タブを開きます。プレビューが生成されたら、[Use Preview Schema] (プレビュースキーマを使用) をクリックします。その後、このスキーマがプレビューデータを使用するスキーマに置き換えられます。

**カスタム変換ノードの入力スキーマを編集するには**

1. ジョブ図でカスタム変換ノードを選択した状態で、ノードの詳細パネルの [**Output schema**] (出力スキーマ) タブを選択します。

1. [**Edit**] (編集) を選択して、スキーマを変更します。

   配列やオブジェクトなどのネストされたデータのプロパティキーがある場合、各スキーマパネルの右上部にある [**Expand-Rows**] (行の展開) アイコン (![\[\]](http://docs.aws.amazon.com/ja_jp/glue/latest/dg/images/expand-rows-icon.png)) を選択して、子データのプロパティキーのリストを展開します。このアイコンは、選択すると [**Collapse-Rows**] (列の折りたたみ) アイコン (![\[\]](http://docs.aws.amazon.com/ja_jp/glue/latest/dg/images/collapse-rows-icon.png)) に変わり、子のプロパティキーのリストを折りたたむことができます。

1. ページ右側のセクションにある次のアクションを使用して、スキーマを変更します。
   + プロパティキーの名前を変更するには、プロパティキーの [**Key**] (キー) テキストボックスにカーソルを置き、新しい名前を入力します。
   + プロパティキーのデータ型を変更するには、リストを使用して、プロパティキーの新しいデータ型を選択します。
   + トップレベルの新しいプロパティキーをスキーマに追加するには、[**Cancel**] (キャンセル) ボタンの左側にある [**Overflow**] (オーバーフロー) (![\[\]](http://docs.aws.amazon.com/ja_jp/glue/latest/dg/images/edit-schema-actions-button.png)) アイコンをクリックして、[**Add root key**] (ルートキーの追加) を選択します。
   + スキーマに子のプロパティキーを追加するには、親キーに関連付けられている [**Add-Key**] (キーの追加) (![\[\]](http://docs.aws.amazon.com/ja_jp/glue/latest/dg/images/filter-add-icon.png)) アイコンをクリックします。子のキーの名前を入力し、データ型を選択します。
   + スキーマからプロパティキーを削除するには、キー名の右端にある [**Remove**] (削除) アイコン (![\[\]](http://docs.aws.amazon.com/ja_jp/glue/latest/dg/images/delete-icon-black.png)) をクリックします。

1. カスタム変換コードで `DynamicFrames` を複数使用していない場合、他の出力スキーマを追加できます。
   + 新しい空のスキーマを追加するには、[**Overflow**] (オーバーフロー) (![\[\]](http://docs.aws.amazon.com/ja_jp/glue/latest/dg/images/edit-schema-actions-button.png)) アイコンをクリックし、[**Add output schema**] (出力スキーマの追加) を選択します。
   + 既存のスキーマを新しい出力スキーマにコピーするには、コピーするスキーマがスキーマセレクタに表示されていることを確認します。[**Overflow**] (オーバーフロー) (![\[\]](http://docs.aws.amazon.com/ja_jp/glue/latest/dg/images/edit-schema-actions-button.png)) アイコンをクリックして、[**Duplicate**] (複製) を選択します。

   出力スキーマを削除する場合は、コピーするスキーマがスキーマセレクタに表示されていることを確認します。[**Overflow**] (オーバーフロー) (![\[\]](http://docs.aws.amazon.com/ja_jp/glue/latest/dg/images/edit-schema-actions-button.png)) アイコンをクリックして、[**Delete**] (削除)を選択します。

1. 新しいスキーマに新しいルートキーを追加するか、複製したキーを編集します。

1. 出力スキーマを変更する場合は、[**Apply**] (適用) ボタンをクリックして変更を保存し、スキーマエディタを終了します。

   変更を保存しない場合は、[**Cancel**] (キャンセル) ボタンをクリックします。

## カスタム変換の出力を設定する
<a name="transforms-custom-output"></a>

カスタムコード変換では、1 つの結果セットに `DynamicFrame` が 1 つだけであっても、`DynamicFrames` のコレクションが返されます。

**カスタム変換ノードからの出力を処理するには**

1. カスタム変換ノードを親ノードとして持つ *SelectFromCollection* 変換ノードを追加します。この変換を更新して、使用するデータセットを指定します。詳細については「[SelectFromCollection を使用して保持するデータセットを選択する](transforms-configure-select-collection.md)」を参照してください。

1. カスタム変換ノードによって生成される他の `DynamicFrames` を使用する場合は、*SelectFromCollection* 変換をジョブ図に追加します。

   カスタム変換ノードを追加してフライトのデータセットを複数のデータセットに分割し、フライトの日付や番号などの各出力スキーマで識別プロパティキーを複製するシナリオを考えてみましょう。各出力スキーマに、カスタム変換ノードを親として持つ *SelectFromCollection* 変換ノードを追加します。

1. (オプション) その後、各 *SelectFromCollection* 変換ノードをジョブ内の他のノードの入力として、またはデータターゲットノードの親として使用できます。

# カスタムビジュアル変換によるデータの変換
<a name="custom-visual-transform"></a>

 カスタムビジュアル変換を使用すると、変換を作成して AWS Glue Studio ジョブで使用できるようになります。ETL 開発者は、コーディングに慣れていない場合がありますが、カスタムビジュアル変換により、AWS Glue Studio インターフェイスを使用して増え続ける変換のライブラリを検索して使用することができます。

 カスタムのビジュアル変換を作成し、Amazon S3 にアップロードして、AWS Glue Studio のビジュアルエディタでこれらのジョブを処理できるようにすることができます。

**Topics**
+ [カスタムビジュアル変換を開始する](custom-visual-transform-getting-started.md)
+ [ステップ 1. JSON 設定ファイルを作成する](custom-visual-transform-json-config-file.md)
+ [ステップ 2. 変換ロジックを実装する](custom-visual-transform-implementation.md)
+ [ステップ 3. AWS Glue Studio でのカスタムビジュアル変換の検証とトラブルシューティング](custom-visual-transform-validation.md)
+ [ステップ 4. 必要に応じてカスタムビジュアル変換を更新する](custom-visual-transform-updating-transforms.md)
+ [ステップ 5. AWS Glue Studio でカスタムビジュアル変換を使用する](custom-visual-transform-create-gs.md)
+ [使用例](custom-visual-transform-example-json.md)
+ [カスタムビジュアルスクリプトの例](custom-visual-transform-example-scripts.md)
+ [動画](#custom-visual-transform-video)

# カスタムビジュアル変換を開始する
<a name="custom-visual-transform-getting-started"></a>

 カスタムビジュアル変換を作成するには、次の手順を実行します。
+  ステップ 1. JSON 設定ファイルを作成する 
+  ステップ 2. 変換ロジックを実装する 
+  ステップ 3. カスタムビジュアル変換を検証する 
+  ステップ 4. 必要に応じてカスタムビジュアル変換を更新する 
+  ステップ 5. AWS Glue Studio でカスタムビジュアル変換を使用する 

 Amazon S3 バケットをセットアップして開始し、**ステップ 1。JSON 設定ファイルを作成する**に進みます。

## 前提条件
<a name="custom-visual-transform-prerequisites"></a>

 お客様提供の変換はお客様の AWS アカウント内にあります。そのアカウントは変換を所有しているため、変換を表示 (検索、使用)、編集、削除するすべてのアクセス許可を持っています。

 AWS Glue Studio でカスタム変換を使用するには、その AWS アカウントの Amazon S3 アセットバケットに次の 2 つのファイルを作成してアップロードする必要があります。
+  **Python ファイル** – 変換関数が含まれています 
+  **JSON ファイル** – 変換を記述します。これは、設定ファイルとも呼ばれ、変換の定義に必要です。

 ファイルをペアリングするには、両方に同じ名前を使用します。例えば、次のようになります。
+  myTransform.json 
+  myTransform.py 

 必要に応じて、アイコンを含む **SVG ファイル**を指定することで、カスタムビジュアル変換にカスタムアイコンを付加できます。ファイルをペアリングするには、次のように、アイコンに同じ名前を使用します。
+  myTransform.svg 

 AWS Glue Studio では、それぞれのファイル名を使用して自動的に照合されます。ファイル名を既存のモジュールと同じにすることはできません。

## 推奨される変換ファイル名の命名規則
<a name="custom-visual-transform-recommended-transform-file-name"></a>

 AWS Glue Studio では、ファイルはモジュール (例えば、`import myTransform`) としてジョブスクリプトにインポートされます。そのため、ファイル名は Python の変数名 (識別子) に設定されているのと同じ命名規則に従う必要があります。具体的には、文字またはアンダースコアで始まり、文字、数字、および/またはアンダースコアのみで構成されている必要があります。

**注記**  
 予期しない実行時の問題を避けるため、変換ファイル名がロードされている既存の Python モジュール (`sys, array, copy` など) と競合していないことを確認してください。

## Amazon S3 バケットのセットアップ
<a name="custom-visual-transform-setting-up-s3"></a>

 作成した変換は Amazon S3 に保存され、AWS アカウントによって所有されます。すべてのジョブスクリプトが現在保存されている Amazon S3 アセットフォルダ (例えば、`s3://aws-glue-assets-<accountid>-<region>/transforms`) にファイル (json と py) をアップロードするだけで、新しいカスタムビジュアル変換を作成できます。カスタムアイコンを使用している場合は、それもアップロードします。デフォルトでは、AWS Glue Studio は同じ S3 バケット内の /transforms フォルダからすべての .json ファイルを読み取ります。

# ステップ 1. JSON 設定ファイルを作成する
<a name="custom-visual-transform-json-config-file"></a>

 カスタムビジュアル変換を定義して記述するには、JSON 設定ファイルが必要です。設定ファイルのスキーマは次の通りです。

## JSON ファイル構造
<a name="custom-visual-transform-json-file-structure"></a>

 **フィールド** 
+  `name: string` – (必須) 変換の識別に使用される変換システム名。Python の変数名 (識別子) に設定されているのと同じ命名規則に従ってください。具体的には、文字またはアンダースコアで始まり、文字、数字、および/またはアンダースコアのみで構成されている必要があります。
+  `displayName: string` – (オプション) AWS Glue Studio ビジュアルジョブエディタに表示される変換の名前。`displayName` を指定しない場合は、AWS Glue Studio では `name` が変換の名前として使用されます。
+  `description: string` – (オプション) 変換の説明が AWS Glue Studio に表示され、検索できます。
+  `functionName: string` – (必須) Python 関数名が Python スクリプトで呼び出す関数を識別するために使用されます。
+  `path: string` – (オプション) Python ソースファイルへの Amazon S3 のフルパス。指定しない場合は、AWS Glue では、ファイル名マッチングを使用して .json ファイルと .py ファイルがペアリングされます。例えば、JSON ファイルの名前が `myTransform.json` の場合、同じ Amazon S3 ロケーションにある `myTransform.py` という Python ファイルとペアになります。
+  `parameters: Array of TransformParameter object` – (オプション) AWS Glue Studio ビジュアルエディタで設定するときに表示されるパラメータのリスト。

<a name="transformparameter-fields"></a> **TransformParameter フィールド** 
+  `name: string` – (必須) ジョブスクリプト内で名前付き引数として Python 関数に渡されるパラメータ名。Python の変数名 (識別子) に設定されているのと同じ命名規則に従ってください。具体的には、文字またはアンダースコアで始まり、文字、数字、および/またはアンダースコアのみで構成されている必要があります。
+  `displayName: string` – (オプション) AWS Glue Studio ビジュアルジョブエディタに表示される変換の名前。`displayName` を指定しない場合は、AWS Glue Studio では `name` が変換の名前として使用されます。
+  `type: string` – (必須) 一般的な Python データ型を受け入れるパラメータ型。有効な値: 'str' \$1 'int' \$1 'float' \$1 'list' \$1 'bool'。
+  `isOptional: boolean` – (オプション) パラメータがオプションかどうかを決定します。デフォルトでは、すべてのパラメータが必須です。
+  `description: string` – (オプション) ユーザーによる変換パラメータの設定に役立つ説明が AWS Glue Studio に表示されます。
+  `validationType: string` – (オプション) このパラメータの検証方法を定義します。現在、正規表現のみをサポートしています。デフォルトで検証タイプは `RegularExpression` に設定されています。
+  `validationRule: string` – (オプション) `validationType` が `RegularExpression` に設定されている場合、送信前にフォーム入力を検証するために使用される正規表現。正規表現の構文は [RegExp Ecmascript の仕様](https://tc39.es/ecma262/multipage/text-processing.html#sec-regexp-regular-expression-objects)に合致している必要があります。
+  `validationMessage: string` – (オプション) 検証が失敗したときに表示するメッセージ。
+  `listOptions: An array of TransformParameterListOption object` または `string`、もしくは「column」という文字列の値 — (オプション) 選択、または複数選択の UI コントロールに表示するためのオプション。カンマ区切り値 (CSV) のリスト、または強く型付けされた `TransformParameterListOption` 型の JSON オブジェクトを受け入れます。文字列の値「column」を指定すると、親ノードのスキーマから、列のリストを動的に入力することもできます。
+  `listType: string` – (オプション) type = 'list' のオプションタイプを定義します。有効な値: 'str' \$1 'int' \$1 'float' \$1 'list' \$1 'bool'。一般的な Python データ型を受け入れるパラメータ型。

 **TransformParameterListOption フィールド** 
+  `value: string | int | float | bool` – (必須) オプション値。
+  `label: string` – (オプション) 選択ドロップダウンに表示されるオプションラベル。

## AWS Glue Studio での変換パラメータ
<a name="custom-visual-transform-parameters"></a>

 .json ファイルで `isOptional` と指定しない限り、デフォルトでパラメータは必須です。AWS Glue Studio では、パラメータが **[Transform]** (変換) タブに表示されます。この例は、E メールアドレス、電話番号、年齢、性別、出身国などのユーザー定義パラメータを示しています。

![\[スクリーンショットは、選択したカスタムビジュアル変換と、ユーザー定義のパラメータを表示している [Transform] (変換) タブを示しています。\]](http://docs.aws.amazon.com/ja_jp/glue/latest/dg/images/dynamic-transform-parameters.png)


 `validationRule` パラメータを指定し、`validationMessage` で検証メッセージを指定することで、JSON ファイルで正規表現を使用する際に AWS Glue Studio で一部の検証を必須にできます。

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

**注記**  
 検証はブラウザで行われるため、正規表現の構文は [RegExp Ecmascript の仕様](https://tc39.es/ecma262/multipage/text-processing.html#sec-regexp-regular-expression-objects)に合致している必要があります。Python 構文は、これらの正規表現ではサポートされていません。

 検証を追加することで、ユーザーが誤ったユーザー入力でジョブを保存するのを防ぐことができます。次の例のように AWS Glue Studio に検証メッセージが表示されます。

![\[このスクリーンショットは、検証エラーメッセージを含むカスタムビジュアル変換パラメータを示しています。有効な E メールアドレスを入力してください。\]](http://docs.aws.amazon.com/ja_jp/glue/latest/dg/images/dynamic-transform-validation-message.png)


 パラメータは、パラメータ設定に基づいて AWS Glue Studio に表示されます。
+  `type` が `str`、`int`、または `float` の場合、テキスト入力フィールドが表示されます。例えば、スクリーンショットは「E メールアドレス」と「年齢」パラメータの入力フィールドを示しています。  
![\[スクリーンショットは、テキスト入力フィールド付きのカスタムビジュアル変換パラメータを示しています。\]](http://docs.aws.amazon.com/ja_jp/glue/latest/dg/images/dynamic-transform-email-address.png)  
![\[スクリーンショットは、テキスト入力フィールド付きのカスタムビジュアル変換パラメータを示しています。\]](http://docs.aws.amazon.com/ja_jp/glue/latest/dg/images/dynamic-transform-your-age.png)
+  `type` が `bool` の場合、チェックボックスが表示されます。  
![\[スクリーンショットは、テキスト入力フィールド付きのカスタムビジュアル変換パラメータを示しています。\]](http://docs.aws.amazon.com/ja_jp/glue/latest/dg/images/dynamic-transform-bool.png)
+  `type` が `str` であり、`listOptions` が指定されていると、単一選択リストが表示されます。  
![\[スクリーンショットは、カスタムビジュアル変換パラメータを単一選択リストのドロップダウンとともに示しています。\]](http://docs.aws.amazon.com/ja_jp/glue/latest/dg/images/dynamic-transform-single-list.png)
+  `type` が `list` であり、`listOptions` と `listType` が指定されていると、複数選択リストが表示されます。  
![\[スクリーンショットは、カスタムビジュアル変換パラメータをリストのドロップダウンとともに示しています。\]](http://docs.aws.amazon.com/ja_jp/glue/latest/dg/images/dynamic-transform-list-options.png)

### 列のセレクタをパラメータとして表示
<a name="custom-visual-transform-parameters-column-selector"></a>

 スキーマから列をユーザーが選択するように設定されている場合は、列セレクタを表示することで、ユーザーは列の名前を入力する必要がなくなります。`listOptions` フィールドを「column」に設定すると、親ノードの出力スキーマに基づいて、列セレクタを AWS Glue Studio が動的に表示します。AWS Glue Studio は単一の列、または複数列のセレクタを表示できます。

 次の例でスキーマを使用しています。

![\[スクリーンショットは、出力スキーマの例を示しています。\]](http://docs.aws.amazon.com/ja_jp/glue/latest/dg/images/custom-visual-transform-example-schema.png)


**単一の列を表示するように、Custom Visual Transform パラメータを定義するには**

1.  JSON ファイルで、`parameters` オブジェクトの `listOptions` の値を、「column」に設定します。これにより、ユーザーが AWS Glue Studio の選択リストから列を選択できるようになります。  
![\[スクリーンショットは、listOptions パラメータを「column」に設定した JSON ファイルと、その結果の AWS Glue Studio のユーザーインターフェイスの例を示しています。\]](http://docs.aws.amazon.com/ja_jp/glue/latest/dg/images/custom-visual-transform-example-listoptions-column.png)

1.  次のようにパラメータを定義すると、複数の列を選択することもできます。
   +  `listOptions: "column"` 
   +  `type: "list"`   
![\[スクリーンショットは、listOptions パラメータを「column」に、タイプを「list」に設定した JSON ファイルと、その結果の AWS Glue Studio のユーザーインターフェイスの例を示しています。\]](http://docs.aws.amazon.com/ja_jp/glue/latest/dg/images/custom-visual-transform-example-listoptions-column-type-list.png)

# ステップ 2. 変換ロジックを実装する
<a name="custom-visual-transform-implementation"></a>

**注記**  
 カスタムビジュアル変換は Python スクリプトのみをサポートしています。Scala はサポートされていません。

 .json 設定ファイルで定義された関数を実装するコードを追加するには、Python ファイルを .json ファイルと同じ場所に同じ名前で「.py」拡張子を付けて配置することをお勧めします。AWS Glue Studio では、.json ファイルと .py ファイルが自動的にペアリングされるため、設定ファイルで Python ファイルのパスを指定する必要はありません。

 Python ファイルに、指定されたパラメータを設定した宣言済み関数を追加し、その関数を `DynamicFrame` で使用するために登録します。Python ファイルの例を次に示します。

```
from awsglue import DynamicFrame

# self refers to the DynamicFrame to transform, 
# the parameter names must match the ones defined in the config
# if it's optional, need to provide a default value
def myTransform(self, email, phone, age=None, gender="", 
                      country="", promotion=False):
   resulting_dynf = # do some transformation on self 
   return resulting_dynf
   
DynamicFrame.myTransform = myTransform
```

 Python コードの開発とテストを最も早く行うために、AWS Glue ノートブックの使用をお勧めします。「[AWS Glue Studio 中でのノートブックの使用開始](https://docs.aws.amazon.com/glue/latest/ug/notebook-getting-started.html)」を参照してください。

 変換ロジックの実装方法を説明するために、以下の例でのカスタムビジュアル変換は、入力データをフィルタリングして特定の米国の州に関連するデータのみを保持する変換になっています。.json ファイルには `functionName` のパラメータが `custom_filter_state` として含まれ、2 つの引数 (「str」型の「state」と「colName」) が含まれています。

 .json 設定ファイルの例は次のとおりです。

```
{
"name": "custom_filter_state",
"displayName": "Filter State",
"description": "A simple example to filter the data to keep only the state indicated.",
"functionName": "custom_filter_state",
"parameters": [
   {
    "name": "colName",
    "displayName": "Column name",
    "type": "str",
    "description": "Name of the column in the data that holds the state postal code"
   },
   {
    "name": "state",
    "displayName": "State postal code",
    "type": "str",
    "description": "The postal code of the state whole rows to keep"
   }   
  ]
}
```

**Python でコンパニオンスクリプトを実装するには**

1.  AWS Glue ノートブックを起動し、セッションを開始するために提供された最初のセルを実行します。最初のセルを実行すると、必要な基本コンポーネントが作成されます。

1.  例で説明されているようにフィルタリングを実行する関数を作成し、`DynamicFrame` に登録します。以下のコードをコピーして、AWS Glue ノートブックのセルに貼り付けます。

   ```
   from awsglue import DynamicFrame
   
   def custom_filter_state(self, colName, state):
       return self.filter(lambda row: row[colName] == state)
   
   DynamicFrame.custom_filter_state = custom_filter_state
   ```

1.  サンプルデータを作成またはロードして、同じセルまたは新しいセルでコードをテストします。サンプルデータを新しいセルに追加する場合は、セルを実行することを忘れないでください。例えば、次のようになります。

   ```
   # A few of rows of sample data to test
   data_sample = [
       {"state": "CA", "count": 4},
       {"state": "NY", "count": 2},
       {"state": "WA", "count": 3}    
   ]
   df1 = glueContext.sparkSession.sparkContext.parallelize(data_sample).toDF()
   dynf1 = DynamicFrame.fromDF(df1, glueContext, None)
   ```

1.  さまざまな引数で次のようにテストして、「custom\$1filter\$1state」を検証します。  
![\[スクリーンショットは、dynamicFrame.show 関数に渡された引数を含む AWS Glue ノートブック内のセルを示しています。\]](http://docs.aws.amazon.com/ja_jp/glue/latest/dg/images/dynamic-transform-notebook-test-python.png)

1.  いくつかのテストを実行した後、.py 拡張子を付けてコードを保存し、.py ファイルに .json ファイル名と同じ名前を付けます。.py ファイルと .json ファイルは同じ変換フォルダにある必要があります。

    次のコードをコピーしてファイルに貼り付け、.py ファイル拡張子に変更します。

   ```
   from awsglue import DynamicFrame
   
   def custom_filter_state(self, colName, state):
       return self.filter(lambda row: row[colName] == state)
   
   DynamicFrame.custom_filter_state = custom_filter_state
   ```

1.  AWS Glue Studio でビジュアルジョブを開き、使用可能な **[Transforms]** (変換) のリストから変換を選択して変換をジョブに追加します。

    この変換を Python スクリプトコードで再利用するには、Amazon S3 パスを [Referenced files path] (参照されるファイルパス) の下のジョブの .py ファイルに追加し、スクリプト内の python ファイルの名前 (拡張子なし) をファイルの先頭に追加してインポートします。例えば、`import` <ファイル名 (拡張子なし)> 

# ステップ 3. AWS Glue Studio でのカスタムビジュアル変換の検証とトラブルシューティング
<a name="custom-visual-transform-validation"></a>

 カスタムビジュアル変換が AWS Glue Studio にロードされる前に AWS Glue Studio で JSON 設定ファイルが検証されます。検証には次の項目が含まれます。
+  必須フィールドの有無 
+  JSON 形式の検証 
+  パラメータの誤りまたは無効 
+  同じ Amazon S3 パスに .py ファイルと .json ファイルの両方が存在すること 
+  .py ファイル名と .json のファイル名の一致 

 検証が成功すると、変換がビジュアルエディタの利用可能な **[Actions]** (アクション) のリストに表示されます。カスタムアイコンが指定されている場合は、**[アクション]** の横に表示されているはずです。

 検証に失敗した場合、AWS Glue Studio では、カスタムビジュアル変換はロードされません。

# ステップ 4. 必要に応じてカスタムビジュアル変換を更新する
<a name="custom-visual-transform-updating-transforms"></a>

 一度作成して使用すると、次のように変換が対応する JSON 定義に従っている限り、変換スクリプトを更新できます。
+  DynamicFrame に割り当てるときに使用される名前は、JSON の `functionName` と一致している必要があります。
+  関数の引数は、[ステップ 1. JSON 設定ファイルを作成する](custom-visual-transform-json-config-file.md) で説明されているように JSON ファイルで定義する必要があります。
+  Python ファイルの Amazon S3 パスは、ジョブが直接それに依存しているため、変更できません。

**注記**  
 更新が必要な場合は、スクリプトと .json ファイルの更新を整合させ、ビジュアルジョブを新しい変換で正しく再保存します。更新後にビジュアルジョブを保存しないと、更新の適用と検証が行われません。Python スクリプトファイルの名前が変更されたり、.json ファイルの横に配置されなかったりする場合は、.json ファイルにフルパスを指定する必要があります。

**カスタムアイコン**

**[アクション]** のデフォルトアイコンではワークフローの一部として視覚的に区別できないと判断した場合は、「[カスタムビジュアル変換を開始する](custom-visual-transform-getting-started.md)」で説明されているようにカスタムアイコンを指定できます。Amazon S3 でホストされている対応する SVG を更新することで、アイコンを更新できます。

最良の結果を得るには、Cloudscape Design System のガイドラインに従って、32 x 32 ピクセルで表示されるように画像をデザインしてください。Cloudscape ガイドラインの詳細については、[Cloudscape のドキュメント](https://cloudscape.design/foundation/visual-foundation/iconography/#custom-icons)を参照してください。

# ステップ 5. AWS Glue Studio でカスタムビジュアル変換を使用する
<a name="custom-visual-transform-create-gs"></a>

 AWS Glue Studio でカスタムビジュアル変換を使用するには、設定ファイルとソースファイルをアップロードし、**[Action]** (アクション) メニューから変換を選択します。値や入力が必要なパラメータはどれも **[Transform]** (変換) タブで利用できます。

1.  2 つのファイル (Python ソースファイルと JSON 設定ファイル) を、ジョブスクリプトが保存されている Amazon S3 アセットフォルダにアップロードします。デフォルトでは、AWS Glue は同じ Amazon S3 バケット内の **/transforms** フォルダからすべての JSON ファイルを取得します。

1.  **[Action]** (アクション) メニューから、カスタムビジュアル変換を選択します。これの名前は、変換の `displayName` または .json 設定ファイルで指定した名前になります。

1.  設定ファイルに設定されたパラメータの値を入力します。  
![\[このスクリーンショットは、ユーザーが [Transform] (変換) タブで入力するパラメータを使用したカスタムビジュアル変換を示しています。\]](http://docs.aws.amazon.com/ja_jp/glue/latest/dg/images/dynamic-transform-parameters.png)

# 使用例
<a name="custom-visual-transform-example-json"></a>

 .json 設定ファイルに含めることが可能なすべてのパラメータの例を次に示します。

```
{
  "name": "MyTransform",
  "displayName": "My Transform",
  "description": "This transform description will be displayed in UI",
  "functionName": "myTransform",
  "parameters": [
      {
      "name": "email",
      "displayName": "Email Address",
      "type": "str",
      "description": "Enter your work email address below",
      "validationType": "RegularExpression",
      "validationRule": "^\\w+([\\.-]?\\w+)*@\\w+([\\.-]?\\w+)*(\\.\\w{2,3})+$",
      "validationMessage": "Please enter a valid email address"
    },
    {
      "name": "phone",
      "displayName": "Phone Number",
      "type": "str",
      "description": "Enter your mobile phone number below",
      "validationRule": "^\\(?(\\d{3})\\)?[- ]?(\\d{3})[- ]?(\\d{4})$",
      "validationMessage": "Please enter a valid US number"
    },
    {
      "name": "age",
      "displayName": "Your age",
      "type": "int",
      "isOptional": true
    },
    {
      "name": "gender",
      "displayName": "Your gender",
      "type": "str",
      "listOptions": [
            {"label": "Male", "value": "male"},
            {"label": "Female", "value": "female"},
            {"label": "Other", "value": "other"}
        ],
      "isOptional": true
    },
    {
      "name": "country",
      "displayName": "Your origin country ?",
      "type": "list",
      "listOptions": "Afghanistan,Albania,Algeria,American Samoa,Andorra,Angola,Anguilla,Antarctica,Antigua and Barbuda,Argentina,Armenia,Aruba,Australia,Austria,Azerbaijan,Bahamas,Bahrain,Bangladesh,Barbados,Belarus,Belgium,Belize,Benin,Bermuda,Bhutan,Bolivia,Bosnia and Herzegovina,Botswana,Bouvet Island,Brazil,British Indian Ocean Territory,Brunei Darussalam,Bulgaria,Burkina Faso,Burundi,Cambodia,Cameroon,Canada,Cape Verde,Cayman Islands,Central African Republic,Chad,Chile,China,Christmas Island,Cocos (Keeling Islands),Colombia,Comoros,Congo,Cook Islands,Costa Rica,Cote D'Ivoire (Ivory Coast),Croatia (Hrvatska,Cuba,Cyprus,Czech Republic,Denmark,Djibouti,Dominica,Dominican Republic,East Timor,Ecuador,Egypt,El Salvador,Equatorial Guinea,Eritrea,Estonia,Ethiopia,Falkland Islands (Malvinas),Faroe Islands,Fiji,Finland,France,France,Metropolitan,French Guiana,French Polynesia,French Southern Territories,Gabon,Gambia,Georgia,Germany,Ghana,Gibraltar,Greece,Greenland,Grenada,Guadeloupe,Guam,Guatemala,Guinea,Guinea-Bissau,Guyana,Haiti,Heard and McDonald Islands,Honduras,Hong Kong,Hungary,Iceland,India,Indonesia,Iran,Iraq,Ireland,Israel,Italy,Jamaica,Japan,Jordan,Kazakhstan,Kenya,Kiribati,Korea (North),Korea (South),Kuwait,Kyrgyzstan,Laos,Latvia,Lebanon,Lesotho,Liberia,Libya,Liechtenstein,Lithuania,Luxembourg,Macau,Macedonia,Madagascar,Malawi,Malaysia,Maldives,Mali,Malta,Marshall Islands,Martinique,Mauritania,Mauritius,Mayotte,Mexico,Micronesia,Moldova,Monaco,Mongolia,Montserrat,Morocco,Mozambique,Myanmar,Namibia,Nauru,Nepal,Netherlands,Netherlands Antilles,New Caledonia,New Zealand,Nicaragua,Niger,Nigeria,Niue,Norfolk Island,Northern Mariana Islands,Norway,Oman,Pakistan,Palau,Panama,Papua New Guinea,Paraguay,Peru,Philippines,Pitcairn,Poland,Portugal,Puerto Rico,Qatar,Reunion,Romania,Russian Federation,Rwanda,Saint Kitts and Nevis,Saint Lucia,Saint Vincent and The Grenadines,Samoa,San Marino,Sao Tome and Principe,Saudi Arabia,Senegal,Seychelles,Sierra Leone,Singapore,Slovak Republic,Slovenia,Solomon Islands,Somalia,South Africa,S. Georgia and S. Sandwich Isls.,Spain,Sri Lanka,St. Helena,St. Pierre and Miquelon,Sudan,Suriname,Svalbard and Jan Mayen Islands,Swaziland,Sweden,Switzerland,Syria,Tajikistan,Tanzania,Thailand,Togo,Tokelau,Tonga,Trinidad and Tobago,Tunisia,Turkey,Turkmenistan,Turks and Caicos Islands,Tuvalu,Uganda,Ukraine,United Arab Emirates,United Kingdom (Britain / UK),United States of America (USA),US Minor Outlying Islands,Uruguay,Uzbekistan,Vanuatu,Vatican City State (Holy See),Venezuela,Viet Nam,Virgin Islands (British),Virgin Islands (US),Wallis and Futuna Islands,Western Sahara,Yemen,Yugoslavia,Zaire,Zambia,Zimbabwe",
      "description": "What country were you born in?",
      "listType": "str",
      "isOptional": true
    },
    {
      "name": "promotion",
      "displayName": "Do you want to receive promotional newsletter from us?",
      "type": "bool",
      "isOptional": true
    }
  ]
}
```

# カスタムビジュアルスクリプトの例
<a name="custom-visual-transform-example-scripts"></a>

 以下の例で行われる変換はどれも等価です。ただし、2 番目の例 (SparkSQL) が最もクリーンで効率的です。その次が Pandas UDF で、最後は最初の例の低レベルのマッピングです。次の例は、2 つの列を合計する単純な変換の完全な例です。

```
from awsglue import DynamicFrame
 
# You can have other auxiliary variables, functions or classes on this file, it won't affect the runtime
def record_sum(rec, col1, col2, resultCol):
    rec[resultCol] = rec[col1] + rec[col2]
    return rec
 
 
# The number and name of arguments must match the definition on json config file
# (expect self which is the current DynamicFrame to transform
# If an argument is optional, you need to define a default value here
#  (resultCol in this example is an optional argument)
def custom_add_columns(self, col1, col2, resultCol="result"):
    # The mapping will alter the columns order, which could be important
    fields = [field.name for field in self.schema()]
    if resultCol not in fields:
        # If it's a new column put it at the end
        fields.append(resultCol)
    return self.map(lambda record: record_sum(record, col1, col2, resultCol)).select_fields(paths=fields)
 
 
# The name we assign on DynamicFrame must match the configured "functionName"
DynamicFrame.custom_add_columns = custom_add_columns
```

 次の例は、SparkSQL API を利用した同等の変換です。

```
from awsglue import DynamicFrame
 
# The number and name of arguments must match the definition on json config file
# (expect self which is the current DynamicFrame to transform
# If an argument is optional, you need to define a default value here
#  (resultCol in this example is an optional argument)
def custom_add_columns(self, col1, col2, resultCol="result"):
    df = self.toDF()
    return DynamicFrame.fromDF(
        df.withColumn(resultCol, df[col1] + df[col2]) # This is the conversion logic
        , self.glue_ctx, self.name) 
 
 
# The name we assign on DynamicFrame must match the configured "functionName"
DynamicFrame.custom_add_columns = custom_add_columns
```

 次の例では同じ変換を使用していますが、Pandas UDF を使用しているため、プレーン UDF を使用するよりも効率的です。Pandas UDF を書く方法の詳細については、[Apache Spark SQL のドキュメント](https://spark.apache.org/docs/3.1.1/api/python/reference/api/pyspark.sql.functions.pandas_udf.html)を参照してください。

```
from awsglue import DynamicFrame
import pandas as pd
from pyspark.sql.functions import pandas_udf
 
# The number and name of arguments must match the definition on json config file
# (expect self which is the current DynamicFrame to transform
# If an argument is optional, you need to define a default value here
#  (resultCol in this example is an optional argument)
def custom_add_columns(self, col1, col2, resultCol="result"):
    @pandas_udf("integer")  # We need to declare the type of the result column
    def add_columns(value1: pd.Series, value2: pd.Series) → pd.Series:
        return value1 + value2
 
    df = self.toDF()
    return DynamicFrame.fromDF(
        df.withColumn(resultCol, add_columns(col1, col2)) # This is the conversion logic
        , self.glue_ctx, self.name) 
 
# The name we assign on DynamicFrame must match the configured "functionName"
DynamicFrame.custom_add_columns = custom_add_columns
```

## 動画
<a name="custom-visual-transform-video"></a>

次の動画では、ビジュアルカスタム変換の概要と使用方法を紹介しています。

[![AWS Videos](http://img.youtube.com/vi/https://www.youtube.com/embed/xFpAhANcVcg/0.jpg)](http://www.youtube.com/watch?v=https://www.youtube.com/embed/xFpAhANcVcg)


# データレイクフレームワークを AWS Glue Studio で使用する
<a name="gs-data-lake-formats"></a>

## 概要:
<a name="gs-data-lake-formats-overview"></a>

 オープンソースのデータレイクフレームワークは、Amazon S3 上に構築されたデータレイクに保存されたファイルのインクリメンタルデータ処理を簡素化します。AWS Glue 3.0 以降では、次のオープンソースのデータレイクストレージフレームワークをサポートしています。
+  Apache Hudi 
+  Linux Foundation Delta Lake 
+  Apache Iceberg 

 AWS Glue 4.0 では、AWS Glue はこれらのフレームワークをネイティブにサポートしているため、トランザクションが一貫した方法で、Amazon S3 に保存したデータを読み書きできます。AWS Glue ジョブでこれらのフレームワークを使用する場合でも、別のコネクタをインストールしたり、設定手順を追加で実行したりする必要はありません。

 データレイクフレームワークは、Spark Script Editor ジョブから AWS Glue Studio 内のソースまたはターゲットとして使用できます。Apache Hudi、Apache Iceberg、Delta Lake の使用方法の詳細については、「[AWS Glue ETL ジョブでデータレイクフレームワークを使用する](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-etl-datalake-native-frameworks.html)」を参照してください。

## AWS Glue ストリーミングソースからのオープンテーブルフォーマットの作成
<a name="gs-data-lake-formats-streaming"></a>

AWS Glue ストリーミング ETL ジョブは、ストリーミングソースからのデータを継続的に消費し、転送中のデータをクリーンアップおよび変換して、数秒で分析できるようにします。

AWS は、お客様のニーズをサポートする幅広いサービスを提供します。AWS Database Migration Service などのデータベースレプリケーションサービスは、ソースシステムから Amazon S3 にデータをレプリケートできます。Amazon S3 は通常、データレイクのストレージレイヤーをホストします。オンラインソースアプリケーションをサポートするリレーショナルデータベース管理システム (RDBMS) に更新を適用するのは簡単ですが、この CDC プロセスをデータレイクに適用するのは困難です。オープンソースのデータ管理フレームワークは、増分データ処理とデータパイプライン開発を簡素化し、この問題を解決するための優れたオプションです。

詳細については、以下を参照してください。
+ [AWS Glue ストリーミングを使用して、Apache Hudi ベースのほぼリアルタイムのトランザクションデータレイクを作成する](https://aws.amazon.com/blogs/big-data/create-an-apache-hudi-based-near-real-time-transactional-data-lake-using-aws-dms-amazon-kinesis-aws-glue-streaming-etl-and-data-visualization-using-amazon-quicksight/)
+ [Build a real-time GDPR-aligned Apache Iceberg data lake](https://aws.amazon.com/blogs/big-data/build-a-real-time-gdpr-aligned-apache-iceberg-data-lake/)

# AWS Glue Studio Glue で Hudi フレームワークを使用する
<a name="gs-data-lake-formats-hudi"></a>

 ジョブを作成または編集すると、AWS Glue Studio では、使用している AWS Glue のバージョンに応じて対応する Hudi ライブラリが自動的に追加されます。詳細は、「[AWS Glue での Hudi フレームワークの使用](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-etl-format-hudi.html)」を参照してください。

## データカタログのデータソースで Apache Hudi フレームワークを使用する
<a name="gs-data-lake-formats-hudi-source-catalog"></a>

**Hudi データソースフォーマットをジョブに追加するには:**

1.  [ソース] メニューで、[AWS Glue Studio データカタログ] を選択します。

1.  **[Data source properties]** (データソースのプロパティ) タブで、データベースとテーブルを選択します。

1.  AWS Glue Studio に、フォーマットタイプとして Apache Hudi と Amazon S3 URL が表示されます。  
![\[このスクリーンショットは、データカタログソースノードのデータソースプロパティタブです。\]](http://docs.aws.amazon.com/ja_jp/glue/latest/dg/images/data_lake_formats_data_catalog_hudi.png)

## Amazon S3 データソースで Hudi フレームワークを使用する
<a name="gs-data-lake-formats-hudi-source-s3.title"></a>

1.  [Source] (ソース) メニューで、[Amazon S3] を選択します。

1.  Amazon S3 ソースタイプとしてデータカタログテーブルを選択する場合は、データベースとテーブルを選択します。

1.  AWS Glue Studio に、Apache Hudi と Amazon S3 URL がフォーマットとして表示されます。

1.  **Amazon S3 ソースタイプ**として Amazon S3 の場所を選択する場合は、**[Browse Amazon S3]** (Amazon S3 を参照) をクリックして Amazon S3 URL を選択します。

1.  **[Data format]** (データフォーマット) で、[Apache Hudi] を選択します。
**注記**  
 AWS Glue Studio が、選択した Amazon S3 フォルダまたはファイルからスキーマを推測できない場合は、**[Additional options]** (追加オプション) を選択し、新しいフォルダまたはファイルを選択します。  
 **[Additional options]** (追加オプション) の **[Schema inference]** (スキーマ推論) から、次のオプションを選択します。  
 [AWS Glue Studio にサンプルファイルを自動選択させる] — スキーマを推測できるよう、AWS Glue Studio が Amazon S3 の場所にあるサンプルファイルを選択します。自動選択されたファイルは **[Auto-sampled file]** (自動サンプル化ファイル) フィールドで確認できます。
 [Choose a sample file from Amazon S3] (Amazon S3 からサンプルファイルを選択) - **[Browse Amazon S3]** (Amazon S3 を参照) をクリックし、使用する使用する Amazon S3 ファイルを選択します。

1.  **[Infer schema]** (スキーマを推測) をクリックします。続いて、**[Output schema]** (出力スキーマ) タブをクリックすると、出力スキーマを確認できます。

1.  **[Additional options]** (追加オプション) をクリックし、キー値ペアを入力します。  
![\[このスクリーンショットは、Amazon S3 データソースノードの [Data source properties] (データソースプロパティ) タブにある [Additional options] (追加オプション) のセクションです\]](http://docs.aws.amazon.com/ja_jp/glue/latest/dg/images/data_lake_formats_additional_options.png)

## データターゲットで Apache Hudi フレームワークを使用する
<a name="gs-data-lake-formats-hudi-target"></a>

### データカタログのデータターゲットで Apache Hudi フレームワークを使用する
<a name="gs-data-lake-formats-hudi-target-catalog"></a>

1.  **[ターゲット]** メニューで [AWS Glue Studio データカタログ] を選択します。

1.  **[Data source properties]** (データソースのプロパティ) タブで、データベースとテーブルを選択します。

1.  AWS Glue Studio に、フォーマットタイプとして Apache Hudi と Amazon S3 URL が表示されます。

#### Amazon S3 データターゲットで Apache Hudi フレームワークを使用する
<a name="gs-data-lake-formats-hudi-target-s3"></a>

 値を入力するか、使用可能なオプションの中から選択し、Apache Hudi 形式を設定します。Apache Hudi の詳細については、「[Apache Hudi のドキュメント](https://hudi.apache.org/docs/overview)」を参照してください。

![\[このスクリーンショットは、Amazon S3 データソースノードの [Data source properties] (データソースプロパティ) タブにある [Additional options] (追加オプション) のセクションです\]](http://docs.aws.amazon.com/ja_jp/glue/latest/dg/images/hudi_s3_target_properties.png)

+  **[Hudi Table Name]** (Hudi テーブル名) — お使いの Hudi Table の名前です。
+  **[Hudi Storage Type]** (Hudi ストレージタイプ) — 次の 2 つのうちいずれかを選択します。
  +  **[Copy on write]** (書き込み時にコピー) — 読み取りパフォーマンスの最適化のため、推奨されています。こちらはデフォルトの Hudi ストレージタイプです。書き込み中、更新するたびに新しいバージョンのファイルが作成されます。
  +  **[Merge on read]** (読み取り時に結合) — 書き込みレイテンシーの最小化のため、推奨されています。更新は、行形式の差分ファイルに記録され、必要に応じて圧縮されて、新しいバージョンの列形式のファイルが作成されます。
+  **[Hudi Write Operation]** (Hudi 書き込みオペレーション) - 次の中から選択します。
  +  **[Upsert]** (アップサート) — デフォルトのオペレーションで、入力レコードはインデックスを検索して挿入または更新として最初にタグ付けされます。既存データを更新する場合に推奨されています。
  +  **[Insert]** (インサート) — レコードが挿入されます。ただし、既存のレコードはチェックされないため重複する可能性があります。
  +  **[Bulk Insert]** (一括インサート) — レコードを挿入します。データの量が多い場合に推奨されています。
+  **[Hudi Record Key Fields]** (Hudi レコードキーフィールド) — 検索バーを使ってプライマリレコードキーを検索し選択します。Hudi のレコードは、レコードキーとレコードが属しているパーティションパスのペアから成るプライマリキーで識別されます。
+  **[Hudi Precombine Field]** (Hudi 事前結合フィールド) — 実際に書き込む前の事前結合で使用されるフィールドです。2 つのレコードのキー値が同じである場合、AWS Glue Studio は、事前結合フィールドの値が大きい方のレコードを選択します。増分値 (例: updated\$1at) が属するフィールドを設定します。
+  **[Compression Type]** (圧縮タイプ) — 圧縮タイプ (非圧縮、GZIP、LZO、Snappy) の中から 1 つ選択します。
+  **[Amazon S3 Target Location]** (Amazon S3 ターゲットの場所) — **[Browse S3]** (S3 を参照) をクリックして Amazon S3 ターゲットの場所を選択します。
+  **[Data Catalog update options]** (データカタログ更新オプション) — 次の中から選択します。
  +  Do not update the Data Catalog(データカタログを更新しない): (デフォルト) スキーマが変更されたり、新しいパーティションが追加された場合、ジョブでデータカタログを更新したくない場合は、このオプションを選択します。
  +  [Create a table in the Data Catalog and on subsequent runs, update the schema and add new partitions] (データカタログにテーブルを作成し、それ以降の実行時にスキーマを更新して新しいパーティションを追加する): このオプションを選択すると、最初のジョブの実行時に、ジョブによりデータカタログにテーブルが作成されます。それ以降のジョブの実行時にスキーマが変更されたり、新しいパーティションが追加されたりすると、ジョブによりデータカタログテーブルが更新されます。

     また、データカタログからデータベースを選択し、テーブル名を入力する必要があります。
  +  [Create a table in the Data Catalog and on subsequent runs, keep existing schema and add new partitions] (データカタログでテーブル作成し、それ以降の実行時に既存のスキーマの保持して新しいパーティションを追加する): このオプションを選択すると、最初のジョブの実行時に、ジョブによりデータカタログにテーブルが作成されます。それ以降のジョブの実行時に、新しいパーティションを追加するため、ジョブでデータカタログテーブルが更新されます。

     また、データカタログからデータベースを選択し、テーブル名を入力する必要があります。
+  Partition keys (パーティションキー): 出力でパーティションキーとして使用する列を選択します。さらにパーティションキーを追加するには、[Add a partition key] (パーティションキーの追加) を選択します。
+  **[Addtional options]** (追加オプション) — 必要に応じてキーと値のペアを入力します。

## AWS Glue Studio によるコード生成
<a name="gs-data-lake-formats-hudi-generating-code"></a>

 ジョブを保存すると、Hudi のソースまたはターゲットが検出された場合に、次のジョブパラメータがジョブに追加されます。
+  `--datalake-formats` — ビジュアルジョブで、([Format] (形式) を選択することで、直接的またはデータレイクでバックアップされたカタログテーブルを選択することで間接的に) 検出されたデータレイク形式の個別リスト。
+  `--conf ` — `--datalake-formats` の値に基づいて生成される。例えば、`--datalake-formats` の値が「hudi」である場合、AWS Glue はこのパラメータの `spark.serializer=org.apache.spark.serializer.KryoSerializer —conf spark.sql.hive.convertMetastoreParquet=false` の値を生成します。

## AWS Glue が提供したライブラリのオーバーライド
<a name="gs-data-lake-formats-hudi-overriding-libraries"></a>

 AWS Glue でサポートされていない Hudi のバージョンを使用するには、独自の Hudi ライブラリ JAR ファイルを指定します。独自の JAR ファイルを使用するには: 
+  `--extra-jars` ジョブパラメータを使用します。例えば、`'--extra-jars': 's3pathtojarfile.jar'`。詳細については、「[AWS Glue ジョブのパラメータ](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-etl-glue-arguments.html)」を参照してください。
+  `--datalake-formats` ジョブパラメータの値として、`hudi` を含めることはできません。値として空白の文字列を入力すると、AWS Glue はデータレイクライブラリを自動的に提供することができません。詳細は、「[AWS Glue での Hudi フレームワークの使用](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-etl-format-hudi.html)」を参照してください。

# AWS Glue Studio でデータレイクフレームワークを使用する
<a name="gs-data-lake-formats-delta"></a>

## データソースでデータレイクフレームワークを使用する
<a name="gs-data-lake-formats-delta-source"></a>

### Amazon S3 データソースでデータレイクフレームワークを使用する
<a name="gs-data-lake-formats-delta-lake-s3-data-source"></a>

1.  [Source] (ソース) メニューで、[Amazon S3] を選択します。

1.  Amazon S3 ソースタイプとしてデータカタログテーブルを選択する場合は、データベースとテーブルを選択します。

1.  AWS Glue Studio に、Delta Lake と Amazon S3 URL がフォーマットとして表示されます。

1.  **[Additional options]** (追加オプション) をクリックし、キー値ペアを入力します。例えば、キーと値のペアは次のようになります。**キー**: timestampAsOf、**値**: 2023-02-24 14:16:18。  
![\[このスクリーンショットは、Amazon S3 データソースノードの [Data source properties] (データソースプロパティ) タブにある [Additional options] (追加オプション) のセクションです\]](http://docs.aws.amazon.com/ja_jp/glue/latest/dg/images/data_lake_formats_additional_options.png)

1.  **Amazon S3 ソースタイプ**として Amazon S3 の場所を選択する場合は、**[Browse Amazon S3]** (Amazon S3 を参照) をクリックして Amazon S3 URL を選択します。

1.  **[Data format]** (データ形式) で [Delta Lake] を選択します。
**注記**  
 AWS Glue Studio が、選択した Amazon S3 フォルダまたはファイルからスキーマを推測できない場合は、**[Additional options]** (追加オプション) を選択し、新しいフォルダまたはファイルを選択します。  
 **[Additional options]** (追加オプション) の **[Schema inference]** (スキーマ推論) から、次のオプションを選択します。  
 [AWS Glue Studio にサンプルファイルを自動選択させる] — スキーマを推測できるよう、AWS Glue Studio が Amazon S3 の場所にあるサンプルファイルを選択します。自動選択されたファイルは **[Auto-sampled file]** (自動サンプル化ファイル) フィールドで確認できます。
 [Choose a sample file from Amazon S3] (Amazon S3 からサンプルファイルを選択) - **[Browse Amazon S3]** (Amazon S3 を参照) をクリックし、使用する使用する Amazon S3 ファイルを選択します。

1.  **[Infer schema]** (スキーマを推測) をクリックします。続いて、**[Output schema]** (出力スキーマ) タブをクリックすると、出力スキーマを確認できます。

### データカタログのデータソースで Delta Lake フレームワークを使用する
<a name="gs-data-lake-formats-delta-catalog"></a>

1.  **[ソース]** メニューで、[AWS Glue Studio データカタログ] を選択します。

1.  **[Data source properties]** (データソースのプロパティ) タブで、データベースとテーブルを選択します。

1.  AWS Glue Studio に、フォーマットタイプとして Delta Lake と Amazon S3 URL が表示されます。
**注記**  
 Delta Lake ソースが AWS Glue データカタログテーブルとしてまだ登録されていない場合は、次の 2 つの方法があります。  
 Delta Lake データストアの AWS Glue クローラーを作成します。詳細は、「[Delta Lake データストアの設定オプションを指定する方法](https://docs.aws.amazon.com/glue/latest/dg/crawler-configuration.html#crawler-delta-lake)」を参照してください。
 Amazon S3 データソースを使用して Delta Lake のデータソースを選択します。「[Amazon S3 データソースでデータレイクフレームワークを使用する](#gs-data-lake-formats-delta-lake-s3-data-source)」を参照してください。

## データターゲットで Delta Lake フォーマットを使用する
<a name="gs-data-lake-formats-delta-target"></a>

### データカタログのデータターゲットで Delta Lake フォーマットを使用する
<a name="gs-data-lake-formats-delta-target-catalog"></a>

1.  **[ターゲット]** メニューで [AWS Glue Studio データカタログ] を選択します。

1.  **[Data source properties]** (データソースのプロパティ) タブで、データベースとテーブルを選択します。

1.  AWS Glue Studio に、フォーマットタイプとして Delta Lake と Amazon S3 URL が表示されます。

### Amazon S3 データソースで Delta Lake フォーマットを使用する
<a name="gs-data-lake-formats-delta-target-s3"></a>

 値を入力するか使用可能なオプションの中から選択し、Delta Lake 形式を設定します。
+  **[Compression Type]** (圧縮タイプ) — 圧縮タイプ (非圧縮、Snappy) の中から 1 つ選択します。
+  **[Amazon S3 Target Location]** (Amazon S3 ターゲットの場所) — **[Browse S3]** (S3 を参照) をクリックして Amazon S3 ターゲットの場所を選択します。
+  **[Data Catalog update options]** (データカタログ更新オプション) — Glue Studio ビジュアルエディターでは、この形式のデータカタログの更新はサポートされていません。
  +  Do not update the Data Catalog(データカタログを更新しない): (デフォルト) スキーマが変更されたり、新しいパーティションが追加された場合、ジョブでデータカタログを更新したくない場合は、このオプションを選択します。
  +  AWS Glue ジョブの実行後にデータカタログを更新するには、AWS Glue クローラーを実行またはスケジュールします。詳細は、「[Delta Lake データストアの設定オプションを指定する方法](https://docs.aws.amazon.com/glue/latest/dg/crawler-configuration.html#crawler-delta-lake)」を参照してください。
+  **[Partition keys]** (パーティションキー): 出力でパーティションキーとして使用する列を選択します。さらにパーティションキーを追加するには、[**Add a partition key**] (パーティションキーの追加) を選択します。
+  **[Additional options]** (追加オプション) をクリックして、キー値ペアを入力します。例えば、キーと値のペアは次のようになります。**キー**: timestampAsOf、**値**: 2023-02-24 14:16:18。

# AWS Glue Studio での Apache Iceberg フレームワークの使用
<a name="gs-data-lake-formats-iceberg"></a>

## データターゲットで Apache Iceberg フレームワークを使用する
<a name="gs-data-lake-formats-iceberg-target"></a>

### データカタログのデータターゲットで Apache Iceberg フレームワークを使用する
<a name="gs-data-lake-formats-iceberg-target-catalog"></a>

1.  **[ターゲット]** メニューで [AWS Glue Studio データカタログ] を選択します。

1.  **[Data source properties]** (データソースのプロパティ) タブで、データベースとテーブルを選択します。

1.  AWS Glue Studio に、フォーマットタイプとして Apache Iceberg と Amazon S3 URL が表示されます。

### Amazon S3 データターゲットで Apache Iceberg フレームワークを使用する
<a name="gs-data-lake-formats-iceberg-s3-data-targets"></a>

 値を入力するか、使用可能なオプションの中から選択し、Apache Iceberg 形式を設定します。
+  **形式** — ドロップダウンメニューから **[Apache Iceberg]** を選択します。
+  **[Amazon S3 ターゲットの場所]** — **[S3 を参照]** をクリックして Amazon S3 ターゲットの場所を選択します。
+  **[データカタログの更新オプション]** — 続けるには、**[データカタログでテーブル作成し、それ以降の実行時に既存のスキーマを保持して新しいパーティションを追加する]** を選択する必要があります。AWS Glue を使用して新しい Iceberg テーブルを作成するには、Iceberg テーブルのカタログとして Data Catalog を設定する必要があります。Data Catalog に登録されている既存の Iceberg テーブルを更新するには、ターゲットとして Data Catalog を選択します。
  +  **[データベース]** — Data Catalog からデータベースを選択します。
  +  **[テーブル名]** – テーブルの名前を値として入力します。Apache Iceberg のテーブル名は、すべて小文字でなければなりません。スペースは使用できないため、必要な場合はアンダースコアを使用してください。例えば、「data\$1lake\$1format\$1tables」のようにします。

![\[このスクリーンショットは、Amazon S3 データターゲットで Apache Iceberg フレームワークを使用する場合の、データターゲットプロパティを示しています。\]](http://docs.aws.amazon.com/ja_jp/glue/latest/dg/images/apache-iceberg-data-target-properties.png)


## Amazon S3 データソースで Apache Iceberg フレームワークを使用する
<a name="gs-data-lake-formats-iceberg-source"></a>

### データカタログのデータソースで Apache Iceberg フレームワークを使用する
<a name="gs-data-lake-formats-iceberg-source-data-catalog"></a>

1.  **[ソース]** メニューで、[AWS Glue Studio データカタログ] を選択します。

1.  **[Data source properties]** (データソースのプロパティ) タブで、データベースとテーブルを選択します。

1.  AWS Glue Studio に、フォーマットタイプとして Apache Iceberg と Amazon S3 URL が表示されます。

![\[このスクリーンショットは、データカタログデータソースで Apache Iceberg フレームワークを使用する場合の、データターゲットプロパティを示しています。\]](http://docs.aws.amazon.com/ja_jp/glue/latest/dg/images/apache-iceberg-data-source-properties.png)


### Amazon S3 データソースで Apache Iceberg フレームワークを使用する
<a name="gs-data-lake-formats-iceberg-source-s3"></a>

 Apache Iceberg は、AWS Glue Studio の Amazon S3 ソースノードのデータオプションとしては使用できません。

# Visual ETL ジョブを使用してデータソースに接続する
<a name="connecting-to-data-chapter"></a>

 新しいジョブの作成中、AWS Glue でのビジュアル ETL ジョブ作成時に接続を使用して、データに接続できます。これには、コネクタを使用してデータを読み込むソースノードと、データを書き出す場所を指定するターゲットノードを追加します。

**Topics**
+ [データソースノードのプロパティを変更する](edit-jobs-source.md)
+ [データソースにデータカタログテーブルを使用する](edit-jobs-source-catalog-tables.md)
+ [データソースにコネクタを使用する](edit-jobs-source-connectors.md)
+ [データソースに Amazon S3 内のファイルを使用する](edit-jobs-source-s3-files.md)
+ [ストリーミングデータソースの使用](edit-jobs-source-streaming.md)
+ [リファレンス](edit-jobs-source-references.md)

# データソースノードのプロパティを変更する
<a name="edit-jobs-source"></a>

データソースのプロパティを指定するには、初めにジョブ図でデータソースノードを選択します。次に、ノードの詳細パネルの右側で、ノードのプロパティを設定します。

**データソースノードのプロパティを変更するには**

1. 新規または保存済みのジョブのビジュアルエディタに移動します。

1. ジョブ図でデータソースノードを選択します。

1. ノードの詳細パネルの [**Node properties**] (ノードのプロパティ) タブを選択して、次の情報を入力します。
   + **Name** (名前): (オプション) ジョブ図でノードに関連付ける名前を入力します。この名前は、このジョブのすべてのノードにおいて一意である必要があります。
   + **Node type** (ノードタイプ): ノードタイプによって、ノードで実行されるアクションが決定します。[**Node type**] (ノードタイプ) のオプションのリストで、見出し [**Data source**] (データソース) の下にリストされている値のいずれかを選択します。

1. **データソースのプロパティ**の情報を設定します。詳細については、次のセクションを参照してください。
   + [データソースにデータカタログテーブルを使用する](edit-jobs-source-catalog-tables.md)
   + [データソースにコネクタを使用する](edit-jobs-source-connectors.md)
   + [データソースに Amazon S3 内のファイルを使用する](edit-jobs-source-s3-files.md)
   + [ストリーミングデータソースの使用](edit-jobs-source-streaming.md)

1. (オプション) ノードおよびデータソースのプロパティを設定した後、ノードのパネルの [**Output schema**] (出力スキーマ) タブをクリックすると、データソースのスキーマを表示できます。ジョブ内の任意のノードに対してこのタブを初めて選択すると、データにアクセスする IAM ロールを指定するよう求められます。[**Job details**] (ジョブの詳細) タブで IAM ロールをまだ指定していない場合、ここで IAM ロールを入力するよう求められます。

1. (オプション) ノードおよびデータソースのプロパティを設定した後、ノードの詳細パネルの [**Data preview**] (データのプレビュー) タブを選択して、データソースからのデータセットをプレビューできます。ジョブ内の任意のノードに対してこのタブを初めて選択すると、データにアクセスする IAM ロールを指定するよう求められます。この機能を使用するには費用がかかり、IAM ロールを指定するとすぐに請求が開始します。

# データソースにデータカタログテーブルを使用する
<a name="edit-jobs-source-catalog-tables"></a>

Amazon S3 とコネクタを除くすべてのデータソースでは、選択するソースタイプの AWS Glue Data Catalog にテーブルが存在する必要があります。AWS Glue はデータカタログテーブルを生成しません。

**データカタログテーブルに基づいてデータソースノードを設定するには**

1. 新規または保存済みのジョブのビジュアルエディタに移動します。

1. ジョブ図でデータソースノードを選択します。

1. [**Data source properties**] (データソースのプロパティ) タブを選択して、次の情報を入力します。
   + **S3 source type** (S3 ソースタイプ): (Amazon S3 データソースのみ) [**Select a Catalog table**] (Catalog テーブルを選択) オプションを選択して、既存の AWS Glue Data Catalog テーブルを使用します。
   + **Database** (データベース): このジョブに使用するソーステーブルを含むデータカタログのデータベースを選択します。検索フィールドを使用して、名前でデータベースを検索できます。
   + **Table** (テーブル): ソースデータに関連付けられたテーブルをリストから選択します。このテーブルは、既に AWS Glue Data Catalog に存在している必要があります。検索フィールドを使用して、名前でテーブルを検索できます。
   + **Partition predicate** (パーティション述語):(Amazon S3 データソースのみ) パーティション列のみを含む Spark SQL に基づいてブール式を入力します。例: `"(year=='2020' and month=='04')"`
   + **Temporary directory** (一時ディレクトリ): (Amazon Redshift データソースのみ) ETL ジョブが一時的な中間結果を書き込める Amazon S3 の作業ディレクトリの場所のパスを入力します。
   + **Role associated with the cluster** (クラスターに関連付けられたロール): (Amazon Redshift データソースのみ) Amazon Redshift クラスターのアクセス許可を含む、使用する ETL ジョブのロールを入力します。詳細については、「[データソースとデータターゲットのアクセス許可](getting-started-min-privs-job.md#getting-started-min-privs-data)」を参照してください。

# データソースにコネクタを使用する
<a name="edit-jobs-source-connectors"></a>

**ノードタイプ**にコネクタを選択する場合、[カスタムコネクタを使用したジョブのオーサリング](job-authoring-custom-connectors.md) の説明に従って、データソースのプロパティの設定を完了します。

# データソースに Amazon S3 内のファイルを使用する
<a name="edit-jobs-source-s3-files"></a>

データソースとして Amazon S3 を選択する場合、次のいずれかを選択できます。
+ データカタログデータベースおよびテーブル。
+ Amazon S3 内のバケット、フォルダ、またはファイル。

Amazon S3 バケットをデータソースとして使用する場合、AWS Glue は、ファイルの一つ、あるいはサンプルファイルとして指定したファイルを使うことによって、指定した場所にあるデータのスキーマを検出します。[**Infer schema**] (スキーマを推測) ボタンをクリックすると、スキーマの検出が行われます。Amazon S3 の場所またはサンプルファイルを変更する場合は、[**Infer schema**] (スキーマを推測) を再度クリックして、新しい情報を使用しスキーマの検出を実行します。

**Amazon S3 内のファイルから直接読み取るデータソースノードを設定するには**

1. 新規または保存済みのジョブのビジュアルエディタに移動します。

1. Amazon S3 ソース用に、ジョブ図でデータソースノードを選択します。

1. [**Data source properties**] (データソースのプロパティ) タブを選択して、次の情報を入力します。
   + **S3 source type** (S3 ソースタイプ): (Amazon S3 データソースのみ) [**S3 location**] (S3 の場所) オプションを選択します。
   + **S3 URL** (S3 の URL): ジョブのデータを含む Amazon S3 バケット、フォルダ、またはファイルへのパスを入力します。[**Browse S3**] (S3 をブラウズ) を選択すると、アカウントで利用可能な場所からパスを選択できます。
   + **Recursive** : S3 の場所にある子フォルダ内のファイルからデータをAWS Glue に読ませたい場合、このオプションを選択します。

     子フォルダにパーティション化されたデータが含まれている場合、AWS Glue は、フォルダ名中で指定されているパーティション情報をデータカタログに追加しません。例えば、Amazon S3 で、次のフォルダについて考えてみます。

     ```
     S3://sales/year=2019/month=Jan/day=1
     S3://sales/year=2019/month=Jan/day=2
     ```

     [**Recursive**] を選択し、`sales` フォルダを S3 の場所として選択した場合、AWS Glue は、すべての子フォルダーのデータを読みますが、年、月、日のパーティションは作成しません。
   + **Data format** (データ形式): データを保存する形式を選択します。JSON、CSV、または Parquet を選択できます。選択した値により、ソースファイルからデータを読み取る方法が AWS Glue ジョブに伝えられます。
**注記**  
データのためにに正しい形式を選択していない場合、AWS Glue はスキーマは正しく推測する可能性はありますが、ジョブはソースファイルからのデータを正しく解析することはでないかもしれません。

     選択した形式に応じて、追加の設定オプションを入力できます。
     + **JSON** (JavaScript Object Notation)
       + **JsonPath**: テーブルスキーマの定義に使用されるオブジェクトを指す JSON パス。JSON パス式では、XPath 式が XML ドキュメントと組み合わせて使用されるのと同じように、常に JSON 構造を参照します。JSON パスの「ルートメンバーオブジェクト」は、オブジェクトや配列であっても、常に `$` として参照されます。JSON パスは、ドット表記またはブラケット表記で記述できます。

         JSON パスの詳細については、GitHub ウェブサイトの「[JsonPath](https://github.com/json-path/JsonPath)」を参照してください。
       + **Records in source files can span multiple lines** (ソースファイル内のレコードが複数行にまたがることができる): CSV ファイル内の単一のレコードが複数行にまたがることができる場合は、このオプションを選択します。
     + **CSV** (カンマ区切り値)
       + **Delimiter** (区切り記号): 行内の各列エントリの区切りを示す文字 (`;`、`,` など) を入力します。
       + **Escape character** (エスケープ文字): エスケープ文字として使用する文字を入力します。この文字は、その直後の文字は文字通りに解釈され、区切り文字として解釈しないことを示します。
       + **Quote character** (引用符文字): 区切られた文字列を単一の値にグループ化するのに使用する文字を入力します。例えば、CSV ファイルに `"This is a single value"` などの値がある場合、**ダブルクォート (")** を選択します。
       + **Records in source files can span multiple lines** (ソースファイル内のレコードが複数行にまたがることができる): CSV ファイル内の単一のレコードが複数行にまたがることができる場合は、このオプションを選択します。
       + **First line of source file contains column headers** (ソースファイルの最初の行に列ヘッダーが含まれる): CSV ファイルの最初の行にデータではなく列ヘッダーが含まれている場合は、このオプションを選択します。
     + **Parquet** (Apache Parquet 列指向ストレージ)

       Parquet 形式で保存されたデータに対する追加の設定はありません。
     + **Apache Hudi**

       Apache Hudi 形式で保存されたデータに対する追加の設定はありません。
     + **Delta Lake**

       Delta Lake 形式で保存されたデータに対する追加の設定はありません。
     + **Excel**

       Excel 形式で保存されたデータに対する追加の設定はありません。
   + **Partition predicate** (パーティション述語): データソースから読み取られたデータをパーティション分割するには、パーティション列のみを含む Spark SQL に基づいてブール式を入力します。例: `"(year=='2020' and month=='04')"`
   + **Advanced options**： 特定のファイルに基づくデータのスキーマの検出を AWS Glue にさせたい場合は、このセクションを展開します。
     + **Schema inference** : AWS Glue にファイルを選択させる代わりに、特定のダイルを使用したい場合は、 オプションの 「**Choose a sample file from S3**」 を選択します。スキーマ推論は Excel ソースでは使用できません。
     + **Auto-sampled file** (自動サンプリングファイル): スキーマの推測に使用する Amazon S3 内のファイルへのパスを入力します。

     データソースノードを編集中に、選択したサンプルファイルを変更する場合は、[**Reload schema**] (スキーマの再ロード) を選択して、新しいサンプルファイルを使用してスキーマを検出します。

1. [**Infer schema**] (スキーマを推測) ボタンをクリックして、Amazon S3 内のソースファイルからスキーマを検出します。Amazon S3 の場所またはサンプルファイルを変更する場合は、[**Infer schema**] (スキーマを推測) を再度選択して、新しい情報を使用してスキーマを推測します。

# ストリーミングデータソースの使用
<a name="edit-jobs-source-streaming"></a>

Amazon Kinesis Data Streams、Apache Kafka、および Amazon Managed Streaming for Apache Kafka (Amazon MSK) で、ストーミングからのデータを消費し、連続的に実行されるストリーミング抽出、変換、ロード (ETL) ジョブを作成できます。

**ストリーミングデータソースのプロパティを設定するには**

1. 新規または保存済みのジョブのビジュアルグラフエディタに移動します。

1. Kafka または Kinesis Data Streams のグラフでデータソースノードを選択します。

1. [**Data source properties**] (データソースのプロパティ) タブを選択して、次の情報を入力します。

------
#### [ Kinesis ]
   + **Kinesis source type**: ストリームの詳細への直接のアクセスを使うためにオプションの[**Stream details**]を選択するか、、そこに格納されている情報を使用するために[**Data Catalog table**] (データカタログテーブル) を選択します。

     [**Stream details**]を選択すると、以下の追加情報を指定します。
     + **Location of data stream**：ストリームを現在のユーザーに関連付けるかどうか、または別のユーザーに関連付けるかどうかを選択します。
     + **Region**: ストリームが存在する[AWS リージョン] を選択します。この情報は、データストリームにアクセスするための ARN を構築するために使用されます。
     + **Stream ARN**: Kinesis Data Streams の Amazon リソースネーム (ARN)を入力します。ストリームが現在のアカウント内にある場合は、ドロップダウンリストからストリーム名を選択します。検索フィールドを使用して、名前、あるいは ARN でデータベースを検索できます。
     + **Data format**: リストから、データストリームで使用される形式を選択します。

       AWS Glue は、ストリーミングデータからスキーマを自動的に検出します。

     [**Data Catalog table**] (データカタログテーブル) を選択すると、以下の追加情報を指定します。
     + **Database** : (オプション) ストリーミングデータソースに関連付けられたテーブルを含む AWS Glueデータカタログ内のデータベースを選択します。検索フィールドを使用して、名前でデータベースを検索できます。
     + **Table** (テーブル): (オプション) ソースデータに関連付けられたテーブルをリストから選択します。このテーブルは、AWS Glue のデータカタログに既に存在している必要があります。検索フィールドを使用して、名前でテーブルを検索できます。
     + **Detect schema**: このオプションを選択すると、スキーマの情報がデータカタログテーブルに格納されるのではなく、AWS Glue にストリーミングデータからスキーマを検出させます。[**Stream details**] オプションを選択すると、このオプションは自動的に有効になります。
   + **Starting position**: デフォルトでは、ETL ジョブは[**Earliest**]オプションを使います。これは、ストリーム内の使用可能な最も古いレコードから始まるデータを読み取ることを意味します。代わりに[**Latest**]選択することができます。これは、ETL ジョブがストリーム内の最新のレコードの直後から読み出しを開始する必要があることを示します。
   + **Window size** (ウィンドウサイズ): デフォルトでは、ETL ジョブによるデータ処理と書き出しは 100 秒ウィンドウ単位で行われます。これにより、データを効率的に処理しつつ、想定より遅く到着するデータに対して集計を実行できます。ウィンドウサイズを変更することで、適時性や集計の精度を高めることができます。

     AWS Glue ストリーミングジョブでは、読み込んだデータの追跡には、ジョブのブックマークではなくチェックポイントが使用されます。
   + **Connection options** : 追加の接続オプションを指定するために、このセクションを展開してキーバリューペアを追加します。ここで指定できるオプションの詳細については、[*AWS Glue Developer Guide*]中の 「"["connectionType": "kinesis"](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-etl-connect.html#aws-glue-programming-etl-connect-kinesis)」を参照してください。

------
#### [ Kafka ]
   + **Apache Kafka source**: オプションの[**Stream details** ]を選択し、ストリームの詳細ストリーミングソースへの直接アクセスを使用するか、[**Data Catalog table**] を選択して代わりに、そこに格納されている情報を使用します。

     [**Data Catalog table**] を選択すると、以下の追加情報を指定します。
     + **Database** : (オプション) ストリーミングデータソースに関連付けられたテーブルを含む AWS Glueデータカタログ内のデータベースを選択します。検索フィールドを使用して、名前でデータベースを検索できます。
     + **Table** (テーブル): (オプション) ソースデータに関連付けられたテーブルをリストから選択します。このテーブルは、AWS Glue のデータカタログに既に存在している必要があります。検索フィールドを使用して、名前でテーブルを検索できます。
     + **Detect schema** : このオプションを選択し、スキーマの情報がデータカタログテーブルに格納されるのではなく、ストリーミングデータからスキーマを AWS Glue に検出させます。**Stream details** オプションを選択すると、このオプションは自動的に有効になります。

     **Stream details**を選択すると、以下の追加情報を指定します。
     + **Connection name**: Kafka データストリームのためのアクセス情報と認証情報を含む AWS Glue の接続を選択します。Kafka ストリーミングデータソースとの接続を使用する必要があります。接続が存在しない場合は、AWS Glue のコンソールを使用して Kafka データストリームのための接続を作成します。
     + **Topic name**: 読み取り元のトピック名を入力します。
     + **Data format**：Kafka イベントストリームからデータを読み取るときに使用する形式を選択します。
   + **Starting position**: デフォルトでは、ETL ジョブは[**Earliest**] オプションを使用します。これは、ストリーム内の使用可能な最も古いレコードから始まるデータを読み取ることを意味します。代わりに[**Latest**]選択することができます。これは、ETL ジョブがストリーム内の最新のレコードの直後から読み出しを開始する必要があることを示します。
   + **Window size** (ウィンドウサイズ): デフォルトでは、ETL ジョブによるデータ処理と書き出しは 100 秒ウィンドウ単位で行われます。これにより、データを効率的に処理しつつ、想定より遅く到着するデータに対して集計を実行できます。ウィンドウサイズを変更することで、適時性や集計の精度を高めることができます。

     AWS Glue ストリーミングジョブでは、読み込んだデータの追跡には、ジョブのブックマークではなくチェックポイントが使用されます。
   + **Connection options** : 追加の接続オプションを指定するために、このセクションを展開してキーバリューペアを追加します ここで指定できるオプションの詳細については、 [*AWS Glue Developer Guide*]内の「["connectionType": "kafka"](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-etl-connect.html#aws-glue-programming-etl-connect-kafka)」を参照してください。

------

**注記**  
現在、ストリーミングデータソースでのデータのプレビューはサポートされていません。

# リファレンス
<a name="edit-jobs-source-references"></a>

 **ベストプラクティス** 
+  [AWS Glue を使用して Amazon S3 から Amazon Redshift にデータを段階的にロードする ETL サービスパイプラインを構築します。](https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/build-an-etl-service-pipeline-to-load-data-incrementally-from-amazon-s3-to-amazon-redshift-using-aws-glue.html)

 **ETL プログラミング** 
+  [AWS Glue での ETL の接続タイプとオプション](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-connections.html) 
+  [JDBC connectionType の値](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-etl-connect.html#aws-glue-programming-etl-connect-jdbc) 
+  [Amazon Redshift との間でのデータ移動に関する詳細オプション](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-etl-redshift.html) 

# データターゲットノードの設定
<a name="data-target-nodes"></a>

データターゲットは、変換されたデータがジョブにより書き込まれる場所です。

## データターゲットでのオプションの概要
<a name="edit-jobs-target-overview"></a>

データターゲット (*データシンク*とも呼ばれます) は、次のようになります。
+ **S3** – ジョブにより、選択した Amazon S3 の場所にある、指定した形式のファイルにデータが書き込まれます。

  データターゲットにパーティション列を設定すると、ジョブによりパーティションキーに基づいて Amazon S3 へのデータセットがディレクトリに書き込まれます。
+ **AWS Glue Data Catalog** –データカタログ内のテーブルに関連付けられた情報を使用して、ジョブによりターゲットの場所に出力データが書き込まれます。

  テーブルは、手動で、またはクローラーを使用して作成できます。また、AWS CloudFormation テンプレートを使用して、データカタログにテーブルを作成できます。
+ コネクタ – コネクタは、データストアと AWS Glue 間の通信を容易にするコードの一部です。コネクタや関連付けられた接続を使用して、ジョブにより出力データがターゲットの場所に書き込まれます。で提供されるコネクタをサブスクライブするには、AWS Marketplaceまたは、独自のカスタムコネクタを作成することもできます。詳細については、「[AWS Glue Studio にコネクタを追加する](creating-custom-connectors.md#creating-connectors)」を参照してください。

ジョブにより Amazon S3 のデータターゲットに書き込みが行われる際、データカタログを更新するように選択できます。このオプションを使用すると、スキーマまたはパーティションの変更時に、クローラーをリクエストしなくてもデータカタログが更新されます。これにより、テーブルを最新の状態に保つことが容易になります。また、このオプションではデータカタログに新しいテーブルを追加したり、テーブルパーティションを更新したり、ジョブから直接テーブルのスキーマを更新できます。これにより、データを分析に使用できるようにするプロセスが簡略化されます。

## データターゲットノードの編集
<a name="edit-jobs-target"></a>

データターゲットは、変換されたデータがジョブにより書き込まれる場所です。

**ジョブ図でデータターゲットノードを追加または設定するには**

1. (オプション) ターゲットノードを追加する必要がある場合、ビジュアルエディタの上部のツールバーで [**Target**] (ターゲット) を選択し、その後 [**S3**] または [**Glue Data Catalog**] (Glue データカタログ) を選択します。
   + ターゲットに [**S3**] を選択した場合、ジョブにより指定した Amazon S3 の場所にある 1 つ以上のファイルにデータセットが書き込まれます。
   + ターゲットに [**AWS Glue Data Catalog**] を選択した場合、ジョブによりデータカタログから選択したテーブルによって記述された場所に書き込みが行われます。

1. ジョブ図でデータターゲットノードを選択します。ノードを選択すると、ページの右側にノードの詳細パネルが表示されます。

1. [**Node properties**] (ノードのプロパティ) タブを選択して、次の情報を入力します。
   + **Name** (名前): ジョブ図でノードに関連付ける名前を入力します。
   + **Node type** (ノードタイプ): 値は既に選択されていますが、必要に応じて変更できます。
   + **Node parents** (ノードの親): 親ノードは、ターゲットの場所に書き込む出力データを提供するジョブ図内のノードです。事前に設定されたジョブ図では、ターゲットノードで既に親ノードが選択されている必要があります。親ノードが表示されていない場合は、リストから親ノードを選択します。

     ターゲットノードは、単一の親ノードを持ちます。

1. **データターゲットのプロパティ**情報を設定する 詳細については、次のセクションを参照してください。
   + [データターゲットに Amazon S3 を使用する](#edit-job-target-S3)
   + [データターゲットにデータカタログテーブルを使用する](#edit-job-target-catalog)
   + [データターゲットにコネクタを使用する](#edit-job-target-connector)

1. (オプション) データターゲットノードのプロパティの設定後、ノードの詳細パネルの [**Output schema**] (出力スキーマ) タブを選択して、データの出力スキーマを表示できます。ジョブ内の任意のノードに対してこのタブを初めて選択すると、データにアクセスする IAM ロールを指定するよう求められます。[**Job details**] (ジョブの詳細) タブで IAM ロールをまだ指定していない場合、ここで IAM ロールを入力するよう求められます。

### データターゲットに Amazon S3 を使用する
<a name="edit-job-target-S3"></a>

Amazon S3 とコネクタを除くすべてのデータソースでは、選択するソースタイプの AWS Glue Data Catalog にテーブルが存在する必要があります。AWS Glue Studio はデータカタログテーブルを生成しません。

**Amazon S3 に書き込むデータターゲットノードを設定するには**

1. 新規または保存済みのジョブのビジュアルエディタに移動します。

1. ジョブ図でデータソースノードを選択します。

1. [**Data source properties**] (データソースのプロパティ) タブを選択して、次の情報を入力します。
   + **Format** (形式): リストから形式を選択します。データ結果に使用できる形式のタイプは次のとおりです。
     + **JSON**: JavaScript Object Notation。
     + **CSV**: カンマで区切られた値。
     + **Avro**: Apache Avro JSON バイナリ。
     + **Parquet**: データ形式として `DynamicFrames` 用に最適化されたカスタム Parquet ライターのタイプ。データに対して事前に計算されたスキーマをリクエストしなくても、スキーマを動的に計算して変更します。
     + **ORC**: Apache Optimized Row Columnar (ORC) 形式。
     + **Apache Hudi**: 増分データ処理とデータパイプラインの開発を簡素化する、オープンソースのデータレイク用ストレージフレームワーク。
     + **Apache Iceberg**: SQL テーブルと同様な機能を持つ、高性能なテーブルフォーマット。
     + **Delta Lake**: ACID トランザクションの実行、メタデータ処理のスケーリング、さらにストリーミングとバッチデータ処理の統合を支援する、オープンソースのデータレイクストレージフレームワーク。
     + **XML**: 拡張マークアップ言語 (XML)。
     + **Tableau Hyper**: Tableau のインメモリデータエンジンテクノロジー。

     これらの形式のオプションについての詳細は、*AWS Glue デベロッパーガイド*の「[Format Options for ETL Inputs and Outputs in AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-etl-format.html)」を参照してください。
   + **圧縮タイプ**: `CSV`、`JSON` または `Parquet` のファイルタイプを使用して、任意でデータを圧縮するかどうかを選択できます。デフォルトでは圧縮なし、または [**None**] (なし) です。    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/glue/latest/dg/data-target-nodes.html)
   + **S3 Target Location** (S3 ターゲットの場所): Amazon S3 バケットおよびデータを出力する場所。[**Browse S3**] (S3 をブラウズ) ボタンをクリックして、アクセスできる Amazon S3 バケットを表示し、バケットの 1 つをターゲットの宛先として選択できます。
   + **データカタログの更新オプション**
     + **Do not update the Data Catalog**(データカタログを更新しない): (デフォルト) スキーマが変更されたり、新しいパーティションが追加された場合、ジョブでデータカタログを更新したくない場合は、このオプションを選択します。
     + **Create a table in the Data Catalog and on subsequent runs, update the schema and add new partitions** (データカタログにテーブルを作成し、それ以降の実行時にスキーマを更新して新しいパーティションを追加する): このオプションを選択すると、最初のジョブの実行時に、ジョブによりデータカタログにテーブルが作成されます。それ以降のジョブの実行時にスキーマが変更されたり、新しいパーティションが追加されたりすると、ジョブによりデータカタログテーブルが更新されます。

       また、データカタログからデータベースを選択し、テーブル名を入力する必要があります。
     + **[Create a table in the Data Catalog and on subsequent runs, keep existing schema and add new partitions]** (データカタログでテーブル作成し、それ以降の実行時に既存のスキーマの保持して新しいパーティションを追加する): このオプションを選択すると、最初のジョブの実行時に、ジョブによりデータカタログにテーブルが作成されます。それ以降のジョブの実行時に、新しいパーティションを追加するため、ジョブでデータカタログテーブルが更新されます。

       また、データカタログからデータベースを選択し、テーブル名を入力する必要があります。
   + **ファイルのパーティショニング**: 出力を保存するパーティショニングのタイプを選択します。
     + **ファイルの自動生成 (推奨)**: これは生成されたファイル数のデフォルト値です。
     + **複数のファイル出力**: 必要なファイル出力の数を指定します。最適なパフォーマンスを得るには、デフォルトで自動生成されたファイル数の値を使用します。
   + **Partition keys** (パーティションキー): 出力でパーティションキーとして使用する列を選択します。さらにパーティションキーを追加するには、[**Add a partition key**] (パーティションキーの追加) を選択します。

   ファイルのパーティショニングは、ターゲット形式としての Tableau Hyper ではサポートされていません。

### データターゲットにデータカタログテーブルを使用する
<a name="edit-job-target-catalog"></a>

Amazon S3 とコネクタを除くすべてのデータソースでは、選択するターゲットタイプの AWS Glue Data Catalog にテーブルが存在する必要があります。AWS Glue Studio はデータカタログテーブルを生成しません。

**データカタログテーブルを使用するターゲットのデータプロパティを設定するには**

1. 新規または保存済みのジョブのビジュアルエディタに移動します。

1. ジョブ図でデータターゲットノードを選択します。

1. [**Data target properties**] (データターゲットのプロパティ) タブを選択して、次の情報を入力します。
   + **Database** (データベース): ターゲットとして使用するテーブルを含むデータベースをリストから選択します。このデータベースは、データカタログに既に存在している必要があります。
   + **Table** (テーブル): 出力データのスキーマを定義するテーブルをリストから選択します。このテーブルは、データカタログに既に存在している必要があります。

     データカタログのテーブルは、列名、データ型の定義、パーティション情報、およびターゲットのデータセットに関するその他のメタデータで構成されています。ジョブにより、データカタログのこのテーブルで示されている場所に書き込みが行われます。

     データカタログでのテーブルの作成についての詳細は、*AWS Glue デベロッパーガイド*の「[Defining Tables in the Data Catalog](https://docs.aws.amazon.com/glue/latest/dg/tables-described.html)」を参照してください。
   + **データカタログの更新オプション**
     + **Do not change table definition** (テーブルの定義を変更しない)： (デフォルト) スキーマが変更されたり、新しいパーティションが追加された場合、ジョブでデータカタログを更新したくない場合は、このオプションを選択します。
     + **[Update schema and add new partitions]** (スキーマを更新して新しいパーティションを追加する): このオプションを選択すると、スキーマが変更されたり新しいパーティションが追加される際に、ジョブによりデータカタログテーブルが更新されます。
     + **[Keep existing schema and add new partitions]** (既存のスキーマを保持して新しいパーティションを追加する): このオプションを選択すると、ジョブにより データカタログテーブルが更新され、新しいパーティションが追加されます。
     + **Partition keys** (パーティションキー): 出力でパーティションキーとして使用する列を選択します。さらにパーティションキーを追加するには、[**Add a partition key**] (パーティションキーの追加) を選択します。

### データターゲットにコネクタを使用する
<a name="edit-job-target-connector"></a>

**ノードタイプ**にコネクタを選択する場合、[カスタムコネクタを使用したジョブのオーサリング](job-authoring-custom-connectors.md) の説明に従って、データターゲットのプロパティ設定を完了します。

# ジョブスクリプトの編集またはアップロード
<a name="edit-nodes-script"></a>

AWS Glue Studio のビジュアルエディタを使用して、ジョブスクリプトを編集したり、独自のスクリプトをアップロードします。

ジョブが AWS Glue Studio で作成された場合にのみ、ビジュアルエディタを使用してジョブノードを編集できます。 AWS Glue コンソールをAPI コマンドを通して、またはコマンドラインインターフェイス (CLI) を使用してジョブが作成された場合、AWS Glue Studio 中のスクリプトエディタを使用して、ジョブスクリプト、パラメータ、スケジュールを編集できます。ジョブをスクリプト専用モードに変換して、AWS Glue Studio 内に作成されたジョブのスクリプトを編集することもできます。

**ジョブスクリプトを編集または独自のスクリプトをアップロードするには**

1. 新しいジョブを作成する場合、[**Jobs**] (ジョブ) ページで、[**Spark script editor**] (Spark スクリプトエディタ) オプションを選択して Spark ジョブを作成するか、[**Python Shell script editor**] (Python シェルスクリプトエディタ) を選択して Python シェルジョブを作成します。新しいスクリプトを作成するか、既存のスクリプトをアップロードできます。[**Spark script editor**] (Spark スクリプトエディタ) を選択した場合、Scala スクリプトまたは Python スクリプトのいずれかを作成またはアップロードできます。[**Python Shell script editor**] (Python シェルスクリプトエディタ) を選択した場合、Python スクリプトの作成またはアップロードのみが可能です。

   新しいジョブを作成するオプションを選択した後、表示される [**Options**] (オプション) セクションで、スタータースクリプト (**定型コードを含む新しいスクリプトを作成**) から開始するか、ジョブスクリプトとして使用するローカルファイルをアップロードするかを選択できます。

   [**Spark script editor**] (Spark スクリプトエディタ) を選択した場合、Python または Scala スクリプトファイルのどちらかをアップロードできます。Scala スクリプトには、ファイル拡張子 `.scala` が必要です。Python スクリプトは、Python タイプのファイルとして認識される必要があります。[**Python Shell script editor**] (Python シェルスクリプトエディタ) を選択した場合、Python スクリプトファイルのみをアップロードできます。

   選択が完了したら、[**Create**] (作成) をクリックしてジョブを作成し、ビジュアルエディタを開きます。

1. 新規または保存済みのジョブのビジュアルジョブエディタに移動して、[**Script**] (スクリプト) タブを選択します。

1. スクリプトエディタのオプションを使用して新しいジョブを作成しておらず、既存のジョブのスクリプトを編集したことがない場合、[**Script**] (スクリプト) タブには、[**Script (Locked)**] (スクリプト (ロックされています)) という見出しが表示されます。これは、スクリプトエディタが読み取り専用モードであることを意味します。[**Edit script**] (スクリプトの編集) を選択して、編集用のスクリプトのロックを解除します。

   スクリプトを編集可能にするには、AWS Glue Studio がジョブをビジュアルジョブからスクリプト専用ジョブに変換します。編集用にスクリプトをロック解除すると、保存後にこのジョブでビジュアルエディタを使用できなくなります。

   確認ウィンドウで、[**Confirm**] (確認) を選択して続行するか、[**Cancel**] (キャンセル) を選択して引き続きビジュアルの編集にジョブを使用します。

   [**Confirm**] (確認) を選択すると、[**Visual**] (ビジュアル) タブはエディタに表示されなくなります。AWS Glue Studio を使って、スクリプトエディタを使用したスクリプトを変更したり、ジョブの詳細やスケジュールを変更したり、実行中のジョブを表示したりできます。
**注記**  
ジョブを保存するまで、スクリプト専用ジョブへの変換は永続的ではありません。コンソールのウェブページを更新したり、ビジュアルエディタでジョブを保存する前に閉じて再度開いても、ビジュアルエディタで個々のノードを編集できます。

1. 必要に応じて、スクリプトを編集します。

   スクリプトの編集が終了したら、[**Save**] (保存) をクリックしてジョブを保存し、ジョブをビジュアルからスクリプト専用に永続的に変換します。

1. (オプション)[**Script**] タブ 上の[**Download**]ボタンを選択することにより、AWS Glue Studio コンソールからのスクリプトをダウンロードできます。このボタンをクリックすると、新しいブラウザウィンドウが開き、Amazon S3 内にあるその場所からのスクリプトが表示されます。[**Job details**] (ジョブの詳細) タブの [**Script filename**] (スクリプトファイル名) および [**Script path**] (スクリプトパス) パラメータにより、Amazon S3 のスクリプトファイルの名前と場所が決定します。  
![\[\]](http://docs.aws.amazon.com/ja_jp/glue/latest/dg/images/job-details-script-location-params-screenshot.png)

   ジョブを保存すると、AWS Glue によりこれらのフィールドで指定された場所にジョブスクリプトが保存されます。Amazon S3 内のこの場所にあるスクリプトファイルを変更すると、AWS Glue Studio は次回ジョブを編集するときに、変更されたスクリプトをロードします。

## AWS Glue Studio 中の Scala スクリプトの作成および編集
<a name="edit-job-scala-script"></a>

ジョブの作成のためにスクリプトエディタを選択する場合、デフォルトでは、ジョブのプログラミング言語は `Python 3` に設定されています。スクリプトをアップロードするのではなく、新しいスクリプトの記述を選択した場合、AWS Glue Studio は、Python 内に記述された定型テキストを用いて新しいスクリプトを開始します。Scala スクリプトを記述する場合は、Scala を使用するよう最初にスクリプトエディタを設定する必要があります。

**注記**  
ジョブのプログラミング言語として Scala を選択し、ビジュアルエディタを使用してジョブを設計する場合、生成されるジョブスクリプトは Scala で記述されます。それ以上のアクションは必要ありません。

**AWS Glue Studio 中の新しい Scala スクリプトの作成**

1. [**Spark script editor**] (Spark スクリプトエディタ) オプションを選択して、新しいジョブを作成します。

1. [**Options**] (オプション) の、[**Create a new script with boilerplate code**] (定型コードで新しいスクリプトを作成する) を選択します。

1. [**Job details**] (ジョブの詳細) タブを選択し、[**Language**] (言語) を [`Scala`] (`Python 3` ではなく) に設定します。
**注記**  
[**Spark script editor**] (Spark スクリプトエディタ) オプションを選択してジョブを作成すると、ジョブの [**Type**] (タイプ) プロパティは `Spark` に自動的に設定されます。

1. [**Script**] (スクリプト) タブを選択します。

1. Python の定型テキストを削除します。これを、次の Scala の定型テキストに置き換えることができます。

   ```
   import com.amazonaws.services.glue.{DynamicRecord, GlueContext}
   import org.apache.spark.SparkContext
   import com.amazonaws.services.glue.util.JsonOptions
   import com.amazonaws.services.glue.util.GlueArgParser
   import com.amazonaws.services.glue.util.Job
   
   object MyScript {
     def main(args: Array[String]): Unit = {
       val sc: SparkContext = new SparkContext()
       val glueContext: GlueContext = new GlueContext(sc)
   
       }
   }
   ```

1. エディタで Scala ジョブスクリプトを記述します。必要に応じて、他の `import` ステートメントを追加します。

## AWS Glue Studio 中の Python シェルジョブの作成および編集
<a name="edit-job-python-shell"></a>

ジョブの作成に Python シェルスクリプトエディタを選択すると、既存の Python スクリプトをアップロードするか、新しい Python スクリプトを記述できます。新しいスクリプトを作成する場合、定型コードが新しい Python ジョブスクリプトに追加されます。

**新しい Python シェルジョブを作成するには**  
「[AWS Glue Studio でのジョブの開始](edit-nodes-chapter.md#create-jobs-start)」の手順を参照してください。

Python シェルジョブでサポートされているジョブプロパティは、Spark ジョブでサポートされているものとは異なります。次のリストは、[**Job details**] (ジョブの詳細) タブでの、Python シェルジョブで使用可能なジョブパラメータの変更について示しています。
+ ジョブの [**Type**] (タイプ) プロパティは自動的に [`Python Shell`] に設定され、変更はできません。
+ [**Language**] (言語) の代わりに、ジョブ用の [**Python version**] (Python バージョン) プロパティがあります。現在、AWS Glue Studio で作成される Python シェルジョブは Python 3.6 を使用します。
+ [**Glue version**] (Glue バージョン) プロパティは Python シェルジョブには適用されないため、使用できません。
+ [**Worker type**] (ワーカータイプ) および [**Number of workers**] (ワーカー数) の代わりに、[**Data processing units**] (データ処理ユニット) プロパティが表示されます。このジョブプロパティにより、ジョブの実行時に Python シェルによって消費されるデータ処理ユニット (DPU) の数が決定します。
+ [**Job bookmark**] (ジョブのブックマーク) プロパティは Python シェルジョブではサポートされていないため、使用できません。
+ [**Advanced properties**] (詳細プロパティ) の次のプロパティは Python シェルジョブでは使用できません。
  + **ジョブのメトリクス**
  + **連続ログ記録**
  + [**Spark UI**] および [**Spark UI logs path**] (Spark UI ログパス)
  + 見出し [**Libraries**] (ライブラリ) の下の [**依存 JARS パス**]

# ジョブ図でノードの親ノードを変更する
<a name="edit-job-change-parents"></a>

ノードの親を変更して、ジョブ図内のノードを移動したり、ノードのデータソースを変更できます。

**親ノードを変更するには**

1. ジョブ図で変更するノードを選択します。

1. ノードの詳細パネルの [**Node properties**] (ノードのプロパティ) タブの、見出し [**Node parents**] (ノードの親) の下で、そのノードの現在の親を削除します。

1. リストから新しい親ノードを選択します。

1. 必要に応じて、新しく選択した親ノードと一致するように、ノードのその他のプロパティを変更します。

誤ってノードを変更した場合は、[**Undo**] (元に戻す) ボタンをクリックして、アクションを元に戻します。

# ジョブ図からノードを削除する
<a name="edit-job-delete-node"></a>

 Visual ETL ジョブを使用するとき、削除されたノードに接続されているノードを再追加または再構築せずに、キャンバスからノードを削除できます。

 以下の例では、**[ETL ジョブ > Visual ETL]** を選択し、次に **[サンプルジョブ]** で **[複数のソースを統合する Visual ETL ジョブ]** を選択して手順に従います。**[サンプルジョブの作成]** を選択してジョブを作成し、以下の手順に従います。

![\[スクリーンショットでは、選択した複数のソースの例を結合するため、Visual ETL ジョブでサンプルジョブのパネルが示されています。\]](http://docs.aws.amazon.com/ja_jp/glue/latest/dg/images/visual-etl-example-jobs-create.png)


**キャンバスからノードを削除する方法**

1.  AWS Glue コンソールで、ナビゲーションメニューから **[Visual ETL]** を選択し、既存のジョブを選択します。ジョブキャンバスは、以下のように示されるサンプルジョブを表示します。  
![\[スクリーンショットでは、サンプルジョブから生成されたジョブ図が示されています。\]](http://docs.aws.amazon.com/ja_jp/glue/latest/dg/images/visual-job-example-job-nodes.png)

1.  削除するノードを選択します。キャンバスがノードにズームインします。キャンバスの右側のツールバーで **[ゴミ箱]** アイコンを選択します。これによってノードが削除され、そのノードに接続されているすべてのノードが移動し、ワークフローで削除されたノードを置き換えます。この例では、最初の **[結合]** ノードがキャンバスから削除されました。

    ワークフローでノードを削除した場合、ワークフローが無効にならないように AWS Glue がノードを再配置します。それでもノードの設定を修正する必要がある場合があります。

    この例では、**[サブスクライバー]** ノードの下にある **[結合]** ノードは削除されています。その結果、**[プラン]** ソースノードは最上位に移動され、子の **[結合]** ノードにまだ接続されています。**[結合]** は選択したテーブルを持つ 2 つの親ソースのノードが必要なため、**[結合]** ノードには追加の設定が必要になりました。キャンバスの右側の **[変換]** タブは、**[結合条件]** に不足している要件を表示しています。  
![\[スクリーンショットでは、親ノードがプラン割り当ておよびサブスクライバーの 2 つのソースノードであるジョブ図が示されています。[統合] ノードに接続されています。[プラン] ソースノードおよび [結合] ノードは [スキーマ変更] ノードに接続されています。[カタログ] ノードは [スキーマ変更] ノードに接続されています。\]](http://docs.aws.amazon.com/ja_jp/glue/latest/dg/images/visual-job-delete-node-join-plans.png)

1.  2 つ目の **[結合]** ノードおよび **[フィールド選択]** ノードを削除します。ノードが削除されると、ワークフローは以下の例のようになります。  
![\[スクリーンショットでは、[結合] ノードおよび [フィールド選択] が削除され、接続されているノードである [スキーマ変更] ノードがジョブフローで上位に移動し、削除されたノードを置き換えていることが示されています。\]](http://docs.aws.amazon.com/ja_jp/glue/latest/dg/images/visual-job-three-data-sources-rearranged.png)

1.  ノード接続を変更するには、ノードのハンドルをクリックして接続を新しいノードにドラッグします。ノードを削除したり、論理フローでノードを再配置したりできるようにします。この例では、[プラン] ノードのハンドルをクリックし、赤い矢印で示されているように [結合] ノードに接続をドラッグすることにより、新しい接続を確立しています。  
![\[スクリーンショットでは、ハンドルが赤い丸で囲まれ、赤い矢印が [プラン] ノードおよび [結合] ノードをつないでクリックおよびドラッグ操作によるノード同士の接続を示すジョブ図が表示されています。\]](http://docs.aws.amazon.com/ja_jp/glue/latest/dg/images/visual-job-plans-node-handle-selected.png)

1.  操作を取り消す必要がある場合、キャンバスの右側のツールバーにある **[ゴミ箱]** アイコンの真下にある **[元に戻す]** アイコンを選択します。

# AWS Glue データカタログノードにソースパラメータとターゲットパラメータを追加する
<a name="edit-job-add-job-parameters"></a>

 AWS Glue Studio によって、ビジュアルジョブをパラメータ化できます。本番環境と開発環境ではカタログテーブル名が異なる場合があるため、ジョブの実行時に実行されるデータベースとテーブルのランタイムパラメータを定義して選択できます。

 ジョブのパラメータ化により、ソースとターゲットをパラメータ化して、AWS Glue データカタログノードを使用する際にそれらのパラメータをジョブに保存できます。ソースとターゲットをパラメータとして指定すると、特に同じジョブを複数の環境で使用する場合に、ジョブの再利用が可能になります。ソースとターゲットを管理する時間と労力を節約して、デプロイメント環境全体でコードをプロモートする際に役立ちます。さらに、指定したカスタムパラメータは、特定の実行のデフォルト引数をオーバーライドします。AWS Glue仕事。

 **ソースパラメータとターゲットパラメータを追加するには** 

 AWS Glue データカタログノードをソースまたはターゲットとして使用しているかどうかにかかわらず、**[Job details]** (ジョブの詳細) タブの **[Advanced properties]** (詳細プロパティ) セクションでランタイムパラメータを定義できます。

1.  ソースノードまたはターゲットノードとして AWS Glue データカタログノードを選択します。

1.  [**Job details**] (ジョブの詳細) タブを選択します。

1.  **[Advanced properties]** (詳細プロパティ) を選択します。

1.  [Job parameters] (ジョブパラメータ) セクションで、キー値を入力します。例えば、`--db.source` はデータベースソースのパラメータになります。キー名の後に '-' (ダッシュ) が続いている限り、任意の名前をキーに入力できます。  
![\[スクリーンショットは、[Job details] (ジョブの詳細) タブの [Job parameters] (ジョブパラメータ) セクションを示しています。データベースとテーブルの実行時に使用するパラメータを定義できます。\]](http://docs.aws.amazon.com/ja_jp/glue/latest/dg/images/Data_Catalog_node_job_details_job_parameters.png)

1.  値を入力します。例えば、`databasename` はパラメータ化されるデータベースの値になります。

1.  さらにパラメータを追加する場合は、**[Add new parameter]** (新しいパラメータを追加) を選択します。最大 50 個のパラメータを使用できます。キーと値のペアを定義したら、AWS Glue データカタログノードでパラメータを使用できます。

 **ランタイムパラメータを選択するには** 

**注記**  
 データベースとテーブルのランタイムパラメータを選択するプロセスは、AWS Glue データカタログノードがソースであっても、ターゲットであっても同じです。

1.  ソースノードまたはターゲットノードとして AWS Glue データカタログノードを選択します。

1.  **[Data source properties - Data Catalog]** (データソースのプロパティ - データカタログ) タブの **[Database]** (データベース) で、**[Use runtime parameters]** (ランタイムパラメータを使用) を選択します。  
![\[スクリーンショットは、ランタイムパラメータのドロップダウンメニューを示しています。データベースとテーブルの実行時に使用する任意の定義済みパラメータを選択できます。\]](http://docs.aws.amazon.com/ja_jp/glue/latest/dg/images/Data_Catalog_node_select_runtime_parameters.png)

1.  ドロップダウンメニューからパラメータを選択します。例えば、ソースデータベースに定義したパラメータを選択し、**[Apply]** (適用) を選択すると、データベースのドロップダウンメニューにデータベースが自動的に入力されます。

1.  [Table] (テーブル) セクション で、ソーステーブルとして定義済みのパラメータを選択します。**[Apply]** (適用) を選択した場合は、使用するテーブルとしてテーブルが自動的に入力されます。

1.  ジョブを保存して実行すると、AWS Glue Studio はジョブの実行中に選択されたパラメータを参照します。

# AWS Glue で Git のバージョン管理システムを使用する
<a name="edit-job-add-source-control-integration"></a>

**注記**  
 ノートブックは現在、AWS Glue Studio のバージョン管理には対応していません。ただし、AWS Glue ジョブスクリプトとビジュアル ETL ジョブのバージョン管理はサポートされています。

 リモートリポジトリがあり、そのリポジトリを使用して AWS Glue ジョブを管理する場合は、AWS Glue Studio または AWS CLI を使用して、リポジトリと AWS Glue のジョブへの変更を同期できます。この方法で変更を同期すると、ジョブは AWS Glue Studio からリポジトリにプッシュされるか、リポジトリから AWS Glue Studio にプルされます。

 AWS Glue Studio での Git との統合により、次のことができるようになります。
+  AWS CodeCommit、GitHub、GitLab、 Bitbucket など、Git のバージョン管理システムとの統合 
+  ビジュアルジョブやスクリプトジョブを使用するかどうかにかかわらず、AWS Glue Studio で AWS Glue ジョブを編集し、リポジトリに同期する 
+  ジョブのソースとターゲットをパラメータ化する 
+  リポジトリからジョブをプルし、AWS Glue Studio で編集する 
+  AWS Glue Studio のマルチブランチワークフローを利用して、ブランチからプルしたり、ブランチにプッシュしたりして、ジョブをテストする 
+  リポジトリからファイルをダウンロードし、ジョブを AWS Glue Studio にアップロードしてクロスアカウントジョブを作成する 
+  選択した自動化ツール (Jenkins、AWS CodeDeploy など) を使用する 

このビデオでは、AWS Glue を Git と統合し、継続的な共有コードパイプラインを構築する方法について紹介します。

[![AWS Videos](http://img.youtube.com/vi/https://www.youtube.com/embed/XRlZq2kvE4U/0.jpg)](http://www.youtube.com/watch?v=https://www.youtube.com/embed/XRlZq2kvE4U)


## IAM アクセス許可
<a name="git-integration-permissions"></a>

 ジョブに次の IAM アクセス許可のいずれかがあることを確認します。IAM アクセス許可の設定方法の詳細については、「[AWS Glue Studio に対する IAM のアクセス許可の設定](https://docs.aws.amazon.com/glue/latest/ug/setting-up.html?icmpid=docs_glue_studio_helppanel#getting-started-iam-permissions)」を参照してください。
+ `AWSGlueServiceRole`
+ `AWSGlueConsoleFullAccess`

 Git との統合では、少なくとも次のアクションが必要です。
+  `glue:UpdateJobFromSourceControl` - バージョン管理システムに存在するジョブで AWS Glue を更新できるようにする 
+  `glue:UpdateSourceControlFromJob` - AWS Glue に保存されているジョブでバージョン管理システムを更新できるようにする 
+  `s3:GetObject` - バージョン管理システムにプッシュしている間にジョブのスクリプトを取得できるようにする 
+  `s3:PutObject` - ソース管理システムからジョブをプルする際にスクリプトを更新できるようにする 

## 前提条件
<a name="edit-job-push-source-repository-prerequisites"></a>

 ジョブをソース管理リポジトリにプッシュするには、以下が必要です。
+  管理者によってすでに作成されているリポジトリ 
+  リポジトリ内のブランチ 
+  個人アクセストークン (Bitbucket の場合、これはリポジトリアクセストークン) 
+  リポジトリの所有者のユーザー名 
+  AWS Glue Studio にリポジトリの読み取りと書き込みを許可するためのアクセス許可をリポジトリに設定 
  +  **[GitLab]** — トークンスコープを api、read\$1repository、write\$1repository に設定 
  +  **[Bitbucket]** — アクセス許可を次のように設定します。
    + **[Workspace membership]** — 読み取り、書き込み
    + **[プロジェクト]** — 書き込み、管理者による読み取り
    + **[リポジトリ]** — 読み取り、書き込み、管理、削除

**注記**  
 AWS CodeCommit の使用時には、個人アクセストークンとリポジトリの所有者は必要ありません。「[Git および AWS CodeCommit の開始方法](https://docs.aws.amazon.com/codecommit/latest/userguide/getting-started.html)」を参照してください。

 **AWS Glue Studio のソースコントロールリポジトリのジョブを使用する** 

 AWS Glue Studio 以外にあるソース管理リポジトリからジョブを取得し、そのジョブを AWS Glue Studio で使用するための前提条件は、ジョブのタイプによって異なります。

 **ビジュアルジョブの場合:** 
+  ジョブ名と一致するジョブ定義のフォルダと JSON ファイルが必要です 

   例えば、以下のジョブ定義を参照してください。リポジトリのブランチには、フォルダと JSON ファイルの両方がジョブ名と一致する `my-visual-job/my-visual-job.json` パスが含まれている必要があります。

  ```
  {
    "name" : "my-visual-job",
    "description" : "",
    "role" : "arn:aws:iam::aws_account_id:role/Rolename",
    "command" : {
      "name" : "glueetl",
      "scriptLocation" : "s3://foldername/scripts/my-visual-job.py",
      "pythonVersion" : "3"
    },
    "codeGenConfigurationNodes" : "{\"node-nodeID\":{\"S3CsvSource\":{\"AdditionalOptions\":{\"EnableSamplePath\":false,\"SamplePath\":\"s3://notebook-test-input/netflix_titles.csv\"},\"Escaper\":\"\",\"Exclusions\":[],\"Name\":\"Amazon S3\",\"OptimizePerformance\":false,\"OutputSchemas\":[{\"Columns\":[{\"Name\":\"show_id\",\"Type\":\"string\"},{\"Name\":\"type\",\"Type\":\"string\"},{\"Name\":\"title\",\"Type\":\"choice\"},{\"Name\":\"director\",\"Type\":\"string\"},{\"Name\":\"cast\",\"Type\":\"string\"},{\"Name\":\"country\",\"Type\":\"string\"},{\"Name\":\"date_added\",\"Type\":\"string\"},{\"Name\":\"release_year\",\"Type\":\"bigint\"},{\"Name\":\"rating\",\"Type\":\"string\"},{\"Name\":\"duration\",\"Type\":\"string\"},{\"Name\":\"listed_in\",\"Type\":\"string\"},{\"Name\":\"description\",\"Type\":\"string\"}]}],\"Paths\":[\"s3://dalamgir-notebook-test-input/netflix_titles.csv\"],\"QuoteChar\":\"quote\",\"Recurse\":true,\"Separator\":\"comma\",\"WithHeader\":true}}}"
  }
  ```

 **スクリプトジョブの場合:** 
+  フォルダ、ジョブ定義の JSON ファイル、スクリプトが必要です。
+  フォルダと JSON ファイルはジョブ名と一致している必要があります。スクリプト名は、ファイル拡張子と共にジョブ定義の `scriptLocation` と一致している必要があります 

   例えば、以下のジョブ定義では、リポジトリ内のブランチにパス `my-script-job/my-script-job.json` および `my-script-job/my-script-job.py` が含まれている必要があります。スクリプト名は、スクリプトの拡張子を含む `scriptLocation` の名前と一致している必要があります。

  ```
  {
    "name" : "my-script-job",
    "description" : "",
    "role" : "arn:aws:iam::aws_account_id:role/Rolename",
    "command" : {
      "name" : "glueetl",
      "scriptLocation" : "s3://foldername/scripts/my-script-job.py",
      "pythonVersion" : "3"
    }
  }
  ```

## 制限事項
<a name="edit-job-repository-limitations"></a>
+  現在、AWS Glue は「[GitLab-Groups](https://docs.gitlab.com/ee/user/group)」からのプッシュ・プルをサポートしていません。

## バージョン管理リポジトリと AWS Glue の接続
<a name="edit-job-connecting-repositories"></a>

 バージョン管理リポジトリの詳細を入力して、AWS Glue Studio ジョブエディタの **[Version Control]** (バージョン管理) タブで管理できます。Git のリポジトリと統合するには、AWS Glue Studio にログインするたびにリポジトリに接続する必要があります。

 Git バージョン管理システムに接続するには: 

1.  AWS Glue Studio で、新しいジョブを開始し、**[Version Control]** (バージョン管理) タブを選択します。  
![\[スクリーンショットは、[Version Control] (バージョン管理) タブが選択されたジョブを示しています。\]](http://docs.aws.amazon.com/ja_jp/glue/latest/dg/images/editing-nodes-version-control-tab.png)

1.  **[Version control system]** で、ドロップダウンメニューをクリックし、利用可能なオプションから Git サービスを選択します。
   +  AWS CodeCommit 
   +  GitHub 
   + GitLab
   + Bitbucket

1.  選択した Git バージョン管理システムによって、入力するフィールドは異なります。

   

    **AWS CodeCommit の場合**: 

    ジョブのリポジトリとブランチを選択して、リポジトリの設定を完了します。
   +  **[Repository]** (リポジトリ) - AWS CodeCommit でリポジトリを設定した場合は、ドロップダウンメニューからリポジトリを選択します。リストに自動的にリポジトリが入力されます 
   +  **[Branch]** (ブランチ) - ドロップダウンメニューからブランチを選択します。
   +  **[Folder]** (フォルダ) - オプション - ジョブを保存するフォルダの名前を入力します。空のままにすると、フォルダが自動的に作成されます。フォルダ名はデフォルトでジョブ名になります。

   

    **GitHub の場合**: 

    次のフィールドに入力して GitHub の設定を完了します。
   +  **[Personal access token]** (個人用のアクセストークン) - GitHub リポジトリによって提供されるトークンです。個人用のアクセストークンの詳細については、「[GitHub Docs](https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/creating-a-personal-access-token)」を参照してください。
   +  **[Repository owner]** (リポジトリ所有者) - GitHub リポジトリの所有者です。

    GitHub からリポジトリとブランチを選択して、リポジトリの設定を完了します。
   +  **[Repository]** (リポジトリ) - GitHub でリポジトリを設定している場合は、ドロップダウンメニューからリポジトリを選択します。リストに自動的にリポジトリが入力されます 
   +  **[Branch]** (ブランチ) - ドロップダウンメニューからブランチを選択します。
   +  **[Folder]** (フォルダ) - オプション - ジョブを保存するフォルダの名前を入力します。空のままにすると、フォルダが自動的に作成されます。フォルダ名はデフォルトでジョブ名になります。

   

    **GitLab の場合**: 
**注記**  
 現在、AWS Glue は「[GitLab-Groups](https://docs.gitlab.com/ee/user/group)」からのプッシュ・プルをサポートしていません。
   +  **[個人用アクセストークン]** - これは GitLab リポジトリによって提供されるトークンです。個人用のアクセストークンの詳細については、「[GitLab の個人アクセストークン](https://docs.gitlab.com/ee/user/profile/personal_access_tokens.html)」を参照してください。
   +  **[リポジトリの所有者]** - これは GitLab リポジトリの所有者です。

    GitLab からリポジトリとブランチを選択して、リポジトリの設定を完了します。
   +  **[リポジトリ]** - GitLab でリポジトリを設定している場合は、ドロップダウンメニューからリポジトリを選択します。リストに自動的にリポジトリが入力されます 
   +  **[Branch]** (ブランチ) - ドロップダウンメニューからブランチを選択します。
   +  **[Folder]** (フォルダ) - オプション - ジョブを保存するフォルダの名前を入力します。空のままにすると、フォルダが自動的に作成されます。フォルダ名はデフォルトでジョブ名になります。

    **Bitbucket の場合**: 
   +  **[アプリパスワード]** – Bitbucket はリポジトリアクセストークンではないく、アプリパスワードを使用します。アプリパスワードの詳細については、「[アプリパスワード](https://support.atlassian.com/bitbucket-cloud/docs/app-passwords/)」を参照してください。
   +  **[リポジトリの所有者]** - これは Bitbucket リポジトリの所有者です。Bitbucket では、所有者はリポジトリの作成者です。

    Bitbucket からワークスペース、リポジトリ、ブランチ、フォルダを選択することで、リポジトリの設定を完了します。
   +  **[ワークスペース]** — Bitbucket にワークスペースを設定している場合は、ドロップダウンメニューからワークスペースを選択します。ワークスペースは自動的に入力されます 
   +  **[リポジトリ]** - Bitbucket でリポジトリを設定した場合は、ドロップダウンメニューからリポジトリを選択します。リポジトリは自動的に入力されます 
   +  **[分岐]** - ドロップダウンメニューから分岐を選択します。分岐は自動的に入力されます 
   +  **[Folder]** (フォルダ) - オプション - ジョブを保存するフォルダの名前を入力します。空のままにすると、フォルダがジョブ名で自動的に作成されます。

1.  AWS Glue Studio ジョブの上部で、**[Save]** (保存) を選択します。

## ソースリポジトリに AWS Glue ジョブをプッシュする
<a name="edit-job-push-source-repository"></a>

 バージョン管理システムの詳細を入力したら、AWS Glue Studio でジョブを編集してソースリポジトリにプッシュできます。プッシュやプルなどの Git の概念に慣れていない場合は、「[Git および AWS CodeCommit の開始方法](https://docs.aws.amazon.com/codecommit/latest/userguide/getting-started.html)」で、このチュートリアルを参照してください。

 ジョブをリポジトリにプッシュするには、バージョン管理システムの詳細を入力してジョブを保存する必要があります。

1.  AWS Glue Studio ジョブで、**[Actions]** (アクション) を選択します。これにより、追加のメニューオプションが開きます。  
![\[スクリーンショットは、[Actions] (アクション) メニューを開いたジョブを示しています。[Push to repository] (リポジトリにプッシュ) オプションが表示されます。\]](http://docs.aws.amazon.com/ja_jp/glue/latest/dg/images/editing-nodes-actions-push-to-repository.png)

1.  **[Push to repository]** (リポジトリにプッシュ) を選択します。

    このアクションによってジョブが保存されます。リポジトリにプッシュすると、AWS Glue Studio は最後に保存した変更をプッシュします。リポジトリ内のジョブが自分または別のユーザーによって変更され、AWS Glue Studio のジョブと同期していない場合は、AWS Glue Studio からジョブをプッシュする際にリポジトリ内のジョブが AWS Glue Studio に保存されたジョブで上書きされます。

1.  **[Confirm]** (確認) を選択してアクションを完了します。これにより、リポジトリに新しいコミットが作成されます。AWS CodeCommit を使用している場合、AWS CodeCommit での最新のコミットへのリンクが確認メッセージに表示されます。

## ソースリポジトリからの AWS Glue ジョブのプル
<a name="edit-job-pull-source-repository"></a>

 Git リポジトリの詳細を **[Version control]** (バージョン管理) タブに入力したら、リポジトリからジョブを取得して AWS Glue Studio で編集することもできます。

1.  AWS Glue Studio ジョブで、**[Actions]** (アクション) を選択します。これにより、追加のメニューオプションが開きます。  
![\[スクリーンショットは、[Actions] (アクション) メニューを開いたジョブを示しています。[Push to repository] (リポジトリにプッシュ) オプションが表示されます。\]](http://docs.aws.amazon.com/ja_jp/glue/latest/dg/images/editing-nodes-actions-push-to-repository.png)

1.  **[Pull from repository]** (リポジトリからプル) を選択します。

1.  **[確認]** を選択します。これにより、リポジトリから最新のコミットが取得され、AWS Glue Studio のジョブが更新されます。

1.  AWS Glue Studio でジョブを編集します。変更を加えた場合は、**[Actions]** (アクション) ドロップダウンメニューから **[Push to repository]** (リポジトリにプッシュ) を選択して、ジョブをリポジトリに同期できます。

# AWS Glue Studio ノートブックによるコードの作成
<a name="notebooks-chapter"></a>

 データエンジニアは、AWS Glue Studio のインタラクティブノートブックインターフェイス、または AWS Glue のインタラクティブセッションを使用して、従来よりも迅速かつ簡単に AWS Glue ジョブを作成できます。

## 制限事項
<a name="notebooks-chapter-limitations"></a>
+  AWS Glue Studio ノートブックは Scala をサポートしていません。

**Topics**
+ [制限事項](#notebooks-chapter-limitations)
+ [ノートブックの使用の概要](using-notebooks-overview.md)
+ [AWS Glue Studio の中のノートブックを使用した ETL ジョブの作成](create-notebook-job.md)
+ [ノートブックエディタコンポーネント](notebook-components.md)
+ [ノートブックとジョブスクリプトの保存](save-notebook.md)
+ [ノートブックセッションの管理](manage-notebook-sessions.md)
+ [AWS Glue Studio ノートブックでの Amazon Q Developer の使用](glue-studio-notebooks-amazon-q-developer.md)

# ノートブックの使用の概要
<a name="using-notebooks-overview"></a>

 AWS Glue Studio は、Jupyter Notebooks に基づいて、ノートブックインターフェイス中でジョブをインタラクティブにオーサリングできるようにします。AWS Glue Studio 中のノートブックを通じて、完全なジョブを実行せずにジョブスクリプトを編集して出力を表示できます。また、完全なジョブを実行せずにデータ統合コードを編集して出力を表示できます。また、マークダウンを追加してノートブックを [.ipynb] ファイルとジョブスクリプトとして保存できます。ソフトウェアをローカルにインストールしたり、サーバーを管理したりすることなく、ノートブックを起動できます。コードに満足したら、ボタンをクリックするだけで、AWS Glue Studio はノートブックを Glue ジョブに変換できます。

 ノートブックを使用する利点のいくつかを以下に示します：
+  プロビジョニングまたは管理するクラスターがない 
+  支払うべきアイドルクラスターがない 
+  事前設定は不要 
+  Jupyter Notebook のインストールは不要 
+  AWS Glue の ETL と同じランタイム/プラットフォーム 

 AWS Glue Studio を通してスルーノートブックを起動すると、ほんの数秒後にデータを調査し、ジョブスクリプトの開発を開始できるように、すべての設定手順が実行されます。AWS Glue Studio は、AWS Glue Jupyter カーネルによって Jupyter Notebook を設定します。このノートブックを使用するために VPC、ネットワーク接続、または開発エンドポイントを構成する必要はありません。

 ノートブックインターフェイスを使用してジョブを作成するには、次の手順を実行します: 
+  必要な IAM 許可を設定します。
+  ノートブックセッションを開始してジョブを作成します 
+  ノートブックのセルにコードを記述します。
+  コードを実行してテストし、出力を表示します。
+  ジョブを保存します。

 ノートブックを保存すると、ノートブックは満杯の AWS Glue のジョブ です。スケジュールジョブの実行、の設定、ジョブパラメータの設定、およびノートブックのすぐ横にあるジョブ実行履歴の表示など、ジョブのすべての側面を管理できます。

# AWS Glue Studio の中のノートブックを使用した ETL ジョブの作成
<a name="create-notebook-job"></a>

**AWS Glue Studio のコンソール中でノートブックの使用を開始するには**

1.  AWS Identity and Access Management のポリシーを AWS Glue Studio ユーザーにアタッチし、ETL ジョブとノートブックの IAM ロールを作成します。

1.  [IAM ロールに対するアクセス許可の付与](notebook-getting-started.md#studio-notebook-permissions) の説明に従って、ノートブックに追加の IAM セキュリティを設定します。

1.  [https://console.aws.amazon.com/gluestudio/](https://console.aws.amazon.com/gluestudio/) で AWS Glue Studio コンソールを開きます。
**注記**  
ブラウザがサードパーティの Cookie をブロックしていないことを確認してください。ブラウザのデフォルトまたはユーザーの設定でサードパーティのCookieをブロックしている場合、ノートブックは起動しません。Cookie の管理の詳細については、以下を参照してください。
   + [Chrome](https://support.alertlogic.com/hc/en-us/articles/360018127132-Turn-Off-Block-Third-Party-Cookies-in-Chrome-for-Windows)
   + [Firefox](https://support.mozilla.org/en-US/kb/third-party-cookies-firefox-tracking-protection)
   + [Safari](https://support.apple.com/guide/safari/manage-cookies-sfri11471/mac)

1. ナビゲーションメニューの左側の [**ジョブ**] リンクを選択します。

1.  **[Jupyter notebook]** を選択し、**[Create]** をクリックして、新しいノートブックセッションを開始します。

1.  **[Create job in Jupyter notebook]** (Jupyter Notebook でジョブを作成する) ページで、ジョブ名を指定して、使用する IAM ロールを選択します。**[ジョブの作成]** を選択します。

    短時間経過後に、ノートブックエディタが表示されます。

1.  コードを追加したら、セルを実行してセッションを開始します。セルを実行するには複数の方法があります。
   + 再生ボタンを押します。
   +  キーボードショートカットを使用します。
     +  MacOS では、**Command** \$1 **Enter** キーでセルを実行します。
     +  Windows では、**Shift** \$1 **Enter** キーでセルを実行します。

    Jupyter ノートブックインターフェースを使用したコードの記述については、「* [The Jupyter Notebook User Documentation](https://jupyter-notebook.readthedocs.io/en/stable/notebook.html) *」を参照してください。

1.  スクリプトをテストするには、スクリプト全体、または個々のセルを実行します。コマンド出力は、セルの下の領域に表示されます。

1.  スクリプトの開発が完了したら、ジョブを保存して実行できます。スクリプトは、**[Script]** (スクリプト) タブにあります。ノートブックに追加したマジックはすべて取り除かれ、生成された AWS Glue ジョブのスクリプトの一部として保存されません。AWS Glue Studioは、ノートブックの内容から生成されたスクリプトの最後に `job.commit()` を自動的に追加します。

   ジョブの実行のさらなる詳細については、「[ジョブの実行の開始](managing-jobs-chapter.md#start-jobs)」を参照してください。

   

# ノートブックエディタコンポーネント
<a name="notebook-components"></a>

 ノートブックエディタのインターフェイスには、次の主要なセクションがあります。
+  ノートブックインターフェイス (メインパネル) とツールバー 
+  Job 編集タブ 

## ノートブックエディタ
<a name="notebook-editor"></a>

 AWS Glue Studio のノートブックエディタは Jupyter Notebook Application に基づいています。AWS Glue Studio のノートブックのインターフェースは、Jupyter Notebook が提供するものと似ています。これについては、セクション [[ Notebook user interface ](https://jupyter-notebook.readthedocs.io/en/stable/notebook.html?highlight=toolbar#notebook-user-interface)] で説明されしています。インタラクティブセッションにより使用されるノートブックは Jupyter Notebook です。

 AWS Glue Studio のノートブックは Juptyer Notebooks に似ていますが、いくつかの重要な点で異なります。
+  現在、AWS Glue Studio のノートブックには拡張をインストールできません。
+  複数のタブを使用することはできません。ジョブとノートブックの間には 1:1 の関係があります 
+  AWS Glue Studio のノートブックには、Jupyter Notebooks 中に存在する、同じトップファイルメニューがありません。
+  現在、AWS Glue Studio のノートブックでは、AWS Glue のカーネルを用いてのみ動作します。カーネルは、ご自分では更新できないことに注意してください。

## AWS Glue Studio のジョブ編集タブ
<a name="notebook-job-tabs"></a>

 ETL ジョブを操作するために使用するタブは、ノートブックページの上部にあります。これらは、AWS Glue Studio のビジュアルジョブエディタに表示されるタブに似ていて、同じアクションを実行します。
+  **Notebook** — このタブを使用して、ノートブックインターフェイスを用いてジョブスクリプトを表示します。
+  **Job details** — ジョブ実行の環境とプロパティを設定します。
+  **Runs** — このジョブの以前の実行に関する情報を表示します。
+  **Schedules** — 特定の時間にジョブを実行するためのスケジュールを設定します。

# ノートブックとジョブスクリプトの保存
<a name="save-notebook"></a>

 ノートブックと作成中のジョブスクリプトは、いつでも保存できます。右上隅の [**Save**] ボタンを単に選択し、ビジュアルエディタまたはスクリプトエディタを使用しているかのように同じものを選択してください。

 **[Save]** (保存) を選択した場合、ノートブックファイルはデフォルトの場所に保存されます。
+  デフォルトでは、ジョブスクリプトは、**[Job Details]** (ジョブの詳細) タブの **[Advanced properties]** (詳細プロパティ) における、[Job details] (ジョブの詳細) プロパティの **[Script path]** (スクリプトパス) に示される Amazon S3 ロケーションに保存されます。ジョブスクリプトは、`Scripts` というサブフォルダに保存されます。
+  デフォルトでは、ノートブックファイル (`.ipynb`) は、**[Job Details]** (ジョブの詳細) タブの **[Advanced properties]** (詳細プロパティ) における、[Job details] (ジョブの詳細) の **[Script path]** (スクリプトパス) に示される Amazon S3 ロケーションに保存されます。ノートブックファイルは、`Notebooks` というサブフォルダに保存されます。

**注記**  
 ジョブを保存すると、ジョブスクリプトにはノートブックのコードセルのみが含まれます。Markdown セルとマジックはジョブスクリプトに含まれません。ただし、`.ipynb` ファイルには Markdown とマジックが含まれます。

 ジョブを保存したら、ノートブックで作成したスクリプトを使用してジョブを実行できます。

# ノートブックセッションの管理
<a name="manage-notebook-sessions"></a>

 AWS Glue Studio 中のノートブックは、AWS Glue のインタラクティブセッション機能に基づいています。インタラクティブセッションの使用にはコストがかかります。コストの管理に役立つように、アカウント用に作成されたセッションをモニタリングし、すべてのセッションのデフォルト設定を構成できます。

## すべてのノートブックセッションのデフォルトのタイムアウトを変更します。
<a name="change-default-timeout"></a>

 デフォルトでは、プロビジョニングされた AWS Glue Studio ノートブックの起動の後に実行されたセルがない場合、そのノートブックは 12 時間後にタイムアウトします。これに関連して料金が発生することはありません。また、このタイムアウトは設定できません。

 セルを実行することにより、インタラクティブなセッションが開始されます。このセッションのデフォルトのタイムアウトは 48 時間です。このタイムアウトは、セルを実行する前に `%idle_timeout` マジックを渡すことで設定が可能です。

**AWS Glue Studio の中のノートブックのデフォルトのセッションタイムアウトを変更するには**

1.  ノートブックに、セル内に `%idle_timeout` のマジックを入力し、タイムアウト値を分単位で指定します。

1.  例: `%idle_timeout 15` はデフォルトのタイムアウトを 15 分に変更します。15 分以内にセッションを使用しない場合、セッションは自動的に停止します。

## 追加 Python モジュールのインストール
<a name="specify-default-modules"></a>

 [pip] を使用してセッションに追加のモジュールをインストールする場合は、`%additional_python_modules` を使用してセッションに追加します。

```
%additional_python_modules awswrangler, s3://amzn-s3-demo-bucket/mymodule.whl
```

 [additional\$1python\$1modules] へのすべての引数が `pip3 install -m <>` に渡されます。

 利用可能な Python モジュールのリストについては、「[AWS Glue での Python ライブラリの使用](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-python-libraries.html)」を参照してください。

## AWS Glue の設定の変更
<a name="specify-default-modules"></a>

 マジックを使ってAWS Glue ジョブの設定値を管理できます 。ジョブ設定値を変更する場合は、ノートブックで適切なマジックを使用する必要があります。「[Magics supported by AWS Glue interactive sessions for Jupyter](https://docs.aws.amazon.com/glue/latest/dg/interactive-sessions-magics.html)」を参照してください。

**注記**  
 実行中のセッションのプロパティを上書きできなくなりました。セッションの設定を変更する場合は、セッションを停止し、新しい構成を設定してから、新しいセッションを開始します。

 AWS Glue はさまざまなワーカータイプをサポートしています。ワーカータイプは、`%worker_type` を用いて設定できます。例: `%worker_type G.2X `。使用可能なワーカータイプには、G.1X、G.2X、G.4X、G.8X、G.12X、G.16X、R.1X、R.2X、R.4X、R.8X が含まれます。デフォルトは G.1X です。

 `%number_of_workers` を使用してワーカー数を指定することもできます。例えば、40 人のワーカーを指定するには: `%number_of_workers 40`。

 さらなる詳細については、「[Defining Job Properties](https://docs.aws.amazon.com/glue/latest/dg/add-job.html)」を参照してください。

## ノートブックセッションを停止します。
<a name="stop-notebook-session"></a>

 ノートブックセッションを停止するには、マジックの `%stop_session` を使用します。

 AWS コンソールでノートブックから離れると、セッションの停止を選択できる警告メッセージが表示されます。

# AWS Glue Studio ノートブックでの Amazon Q Developer の使用
<a name="glue-studio-notebooks-amazon-q-developer"></a>

 AWS Glue Studio は、Jupyter Notebooks に基づいて、ノートブックインターフェイス中でジョブをインタラクティブにオーサリングできるようにします。Amazon Q Developer を使用すると、AWS Glue Studio ノートブック内でのオーサリング体験が向上します。

 Amazon Q Developer の拡張機能は推奨コードを生成したり、コードの問題に関連する改善を提案したりすることにより、コードの記述をサポートします。Amazon Q Developer は、Python と Scala の両方をサポートしています。この 2 つの言語は、AWS Glue Studio ノートブックの Spark ジョブの ETL スクリプトをコーディングするために使用されます。

## Amazon Q Developer とは?
<a name="w2aac33c15c36b9"></a>

 Amazon Q Developer は機械学習を活用したサービスであり、デベロッパーの生産性の向上に貢献します。Amazon Q Developer は、自然言語によるデベロッパーのコメントおよび IDE のコードに基づいて推奨コードを生成することによって実現します。このサービスは、JupyterLab、Amazon SageMaker AI Studio、Amazon SageMaker AI ノートブックインスタンス、およびその他の統合開発環境 (IDE) と統合されています。

 詳細については、「[AWS Glue Studio を備えた Amazon Q Developer の使用](https://docs.aws.amazon.com/amazonq/latest/qdeveloper-ug/glue-setup.html)」を参照してください。

# コンソール上の AWS Glue ジョブ実行のステータス
<a name="view-job-runs"></a>

AWS Glue 抽出、変換、ロード (ETL) ジョブのステータスは、実行中または停止後に表示できます。AWS Glue コンソールを使用してステータスを表示できます。

## ジョブモニタリングダッシュボードにアクセスする
<a name="monitoring-accessing-dashboard"></a>

ジョブモニタリングダッシュボードにアクセスするには、**[ETL ジョブ]** の下の AWS Glue ナビゲーションペインで **[ジョブ実行のモニタリング]** を選択します。

## ジョブモニタリングダッシュボードの概要
<a name="monitoring-dashboard-overview"></a>

ジョブモニタリングダッシュボードでは、ジョブの実行に関する全体的な概要と、ステータスが [**Running**] (実行中)、[**Canceled**] (キャンセル済み)、[**Success**] (成功)、または [**Failed**] (失敗) となっているジョブの合計を表示します。追加のタイルには、ジョブの実行の全体的な成功率、ジョブの DPU 使用率、ジョブタイプ、ワーカータイプ、日別のジョブステータスの内訳が表示されます。

タイル内のグラフはインタラクティブです。グラフ内の任意のブロックを選択して、ページの下部にある [**Job runs**] (ジョブの実行) テーブルで、それらのジョブのみを表示するフィルターを実行します。

[**Date range**] (日付範囲) セレクタを使用して、このページに表示される情報の日付範囲を変更できます。日付範囲を変更すると、現在の日付より前の指定した日数の値を表示するよう情報のタイルが調整されます。また、[Date range] (日付範囲) セレクタから [**Custom**] (カスタム) を選択して、特定の日付範囲を使用することもできます。

## ジョブの実行ビュー
<a name="monitoring-job-breakdown"></a>

**注記**  
 ジョブ実行履歴には、ワークフローとジョブ実行のために 90 日間アクセスできます。

[**Job runs**] (ジョブの実行) リソースリストには、指定した日付範囲とフィルターのジョブが表示されます。

ステータス、ワーカータイプ、ジョブタイプ、ジョブ名などの追加の基準でジョブをフィルタリングできます。テーブルの上部にあるフィルターボックスに、フィルターとして使用するテキストを入力できます。テキストを入力すると、一致するテキストを含む行でテーブルの結果が更新されます。

ジョブモニタリングダッシュボードのグラフから要素を選択すると、ジョブのサブセットを表示できます。例えば、[**Job runs summary**] (ジョブの実行のサマリー) タイルで実行中のジョブの数を選択する場合、[**Job runs**] (ジョブの実行) リストには、その時点で `Running` のステータスにあるジョブのみが表示されます。[**Worker type breakdown**] (ワーカータイプの内訳) の棒グラフでいずれかのバーを選択する場合、ワーカータイプとステータスが一致するジョブの実行のみが [**Job runs**] (ジョブの実行) リストに表示されます。

[**Job runs**] (ジョブの実行) リソースリストには、ジョブの実行の詳細が表示されます。列見出しを選択して、テーブル内の行を並べ替えることができます。テーブルには次の情報が含まれます。


| プロパティ | 説明 | 
| --- | --- | 
| ジョブ名 |  ジョブの名前。 | 
| タイプ |  ジョブの環境のタイプ [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/glue/latest/dg/view-job-runs.html)  | 
| 開始時間 |  このジョブ実行が開始された日付と時刻。  | 
| 終了時間 |  このジョブ実行が完了した日付と時刻。  | 
| 実行ステータス |  現在のジョブ実行の状態。値は次のようになります。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/glue/latest/dg/view-job-runs.html)  | 
| 実行時間 | ジョブの実行でリソースを消費した時間。 | 
| Capacity |  このジョブの実行に割り当てられる AWS Glue データ処理ユニット (DPU) の数。容量計画の詳細については、「*AWS Glue デベロッパーガイド*」の「[Monitoring for DPU Capacity Planning](https://docs.aws.amazon.com/glue/latest/dg/monitor-debug-capacity.html)」を参照してください。  | 
| ワーカータイプ |  ジョブの実行時に割り当てられた事前定義済みのワーカーのタイプ。値は `G.1X`、`G.2X`、`G.4X` または `G.8X` になります。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/glue/latest/dg/view-job-runs.html)  | 
| DPU 時間 |  ジョブの実行に使用される DPU の推定数。DPU は、処理能力の相対的な尺度です。DPU は、ジョブの実行のコストを割り出すために使用されます。詳細については、[AWS Glue 料金表ページ](https://aws.amazon.com/glue/pricing/) を参照してください。  | 

リストから任意のジョブの実行を選択し、追加の情報を表示できます。ジョブの実行を選択して、次のいずれかを実行します。
+ [**Actions**] (アクション) メニューから [**View job**] (ジョブの表示) オプションを選択して、ビジュアルエディタでジョブを表示します。
+ [**Actions**] (アクション) メニューから [**Stop run**] (実行の停止) オプションを使用して、現在行われているジョブ実行を停止します。
+ [**View CloudWatch logs**] (CloudWatch ログを表示) ボタンをクリックして、そのジョブのジョブの実行ログを表示します。
+ **[詳細を表示]** を選択して、ジョブの実行の詳細ページを表示します。

## ジョブの実行ログの表示
<a name="monitoring-job-run-logs"></a>

ジョブのログは、さまざまな方法で表示できます。
+ [**Monitoring**] (モニタリング) ページの [**Job runs**] (ジョブの実行) テーブルで、ジョブの実行を選択し、[**View CloudWatch logs**] (CloudWatch ログを表示) を選択します。
+ ビジュアルジョブエディタの、ジョブの [**Runs**] (実行) タブで、ハイパーリンクを選択してログを表示できます。
  + **Logs** (ログ) – ジョブの実行で継続的なログ記録が有効であるときに書き込まれる Apache Spark ジョブのログへのリンクです。このリンクを選択すると、`/aws-glue/jobs/logs-v2` ロググループ 内の Amazon CloudWatch ログに移動します。デフォルトでは、不要な Apache Hadoop YARN ハートビート、Apache Spark ドライバー、エグゼキューターログメッセージはログから除外されています。継続的なログ記録の詳細については、「*AWS Glue デベロッパーガイド*」の「[Continuous Logging for AWS Glue Jobs](https://docs.aws.amazon.com/glue/latest/dg/monitor-continuous-logging.html)」を参照してください。
  + **Error logs** (エラーログ) – このジョブの実行で `stderr` に書き込まれるログへのリンクです。このリンクを選択すると、`/aws-glue/jobs/error` ロググループ 内の Amazon CloudWatch ログに移動します。これらのログを使用して、ジョブの実行中に発生したエラーに関する詳細を表示できます。
  + **Output logs** (出力ログ) – このジョブの実行で `stdout` に書き込まれるログへのリンクです。このリンクを選択すると、`/aws-glue/jobs/output` ロググループ 内の Amazon CloudWatch ログに移動します。これらのログを使用して、AWS Glue Data Catalog で作成されたテーブルに関する詳細と、発生したエラーをすべて確認することができます。

## ジョブの実行の詳細を表示する
<a name="monitoring-job-run-details"></a>

[**Monitoring**] (モニタリング) ページの [**Job runs**] (ジョブの実行) リストでジョブを選択し、[**View run details**] (実行の詳細を表示する) をクリックして、ジョブの実行に関する詳細情報を表示できます。

ジョブの実行の詳細ページには、次の情報が表示されます。


| プロパティ | 説明 | 
| --- | --- | 
| ジョブ名 |  ジョブの名前。 | 
| 実行ステータス |  現在のジョブ実行の状態。値は次のようになります。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/glue/latest/dg/view-job-runs.html)  | 
| Glue バージョン | ジョブ実行に使用される AWS Glue バージョン | 
| 最近の試行 | ジョブ実行時の自動再試行回数 | 
| 開始時間 |  このジョブ実行が開始された日付と時刻。  | 
| 終了時間 |  このジョブ実行が完了した日付と時刻。  | 
| 起動時間 |  ジョブ実行の準備にかかった時間  | 
| 実行時間 |  ジョブスクリプトの実行にかかった時間  | 
| トリガー名 |  ジョブに関連付けられているトリガーの名前  | 
| 最終更新日 |  ジョブが最後に変更された日付  | 
| セキュリティ設定 |  ジョブのセキュリティ設定。これには、Amazon S3 の暗号化、CloudWatch の暗号化、ジョブブックマークの暗号化設定が含まれます。  | 
| タイムアウト | ジョブ実行のタイムアウトのしきい値 | 
| 割り当てられた容量 |  このジョブの実行に割り当てられる AWS Glue データ処理ユニット (DPU) の数。容量計画の詳細については、「*AWS Glue デベロッパーガイド*」の「[Monitoring for DPU Capacity Planning](https://docs.aws.amazon.com/glue/latest/dg/monitor-debug-capacity.html)」を参照してください。  | 
| 最大容量 |  ジョブの実行に使用可能な最大の容量。  | 
| ワーカー数 | ジョブ実行に使用されるワーカーの数  | 
| ワーカータイプ |  ジョブの実行に割り当てられる定義済みのワーカータイプ。値は、`G.1X` または `G.2X` になります。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/glue/latest/dg/view-job-runs.html)  | 
| ログ | 継続的なログ記録のためのジョブログへのリンク (/aws-glue/jobs/logs-v2)。 | 
| 出力ログ | ジョブの出力ログファイルへのリンク (/aws-glue/jobs/output)。 | 
| エラーログ | ジョブのエラーログファイルへのリンク (/aws-glue/jobs/error)。 | 

次の追加項目も表示できます。これらは、最近のジョブ実行の情報を表示する際に表示できます。詳細については、「[最近のジョブの実行の情報を表示する](managing-jobs-chapter.md#view-job-run-details)」を参照してください。
+ **[入力引数]**
+ **連続ログ**
+ **[メトリクス]** – 基本的なメトリクスのビジュアライゼーションを確認できます。含まれるメトリクスの詳細については、「[Spark ジョブ実行の Amazon CloudWatch メトリクスを表示](#monitoring-job-run-metrics)」を参照してください。　
+ **[Spark UI]** – Spark UI でジョブの Spark ログを視覚化できます。Spark Web UI の使用の詳細については、「[Apache Spark ウェブ UI を使用したジョブのモニタリング](monitor-spark-ui.md)」を参照してください。[AWS Glue ジョブ用の Apache Spark ウェブ UI の有効化](monitor-spark-ui-jobs.md) のステップに従って、この機能を有効にします。

## Spark ジョブ実行の Amazon CloudWatch メトリクスを表示
<a name="monitoring-job-run-metrics"></a>

ジョブの実行の詳細ページの **[Run details**] (実行の詳細) セクションでは、ジョブのメトリクスを表示できます。AWS Glue Studio はジョブ実行のたびにジョブメトリクスを Amazon CloudWatch に送信します。

AWS Glue では、30 秒ごとに Amazon CloudWatch にメトリクスが報告されます。AWS Glue メトリクスは、以前に報告された値からデルタ値を表示します。必要に応じて、メトリクスのダッシュボードにより 30 秒の値が集計 (合計) され、直近 1 分間分の値を取得できます。一方、AWS Glue によって Amazon CloudWatch に渡される Apache Spark メトリクスは、一般的に報告された時点での状態を表す絶対値です。

**注記**  
Amazon CloudWatch にアクセスできるようアカウントを設定する必要があります。

メトリクスには、次のようなジョブの実行に関する情報が表示されます。
+ **ETL Data Movement** (ETL データ移動) – Amazon S3 から読み取られたバイト数またはそこに書き込まれたバイト数。
+ **Memory Profile: Heap used** (プロファイル: ヒープ使用) – Java 仮想マシン (JVM) ヒープによって使用されたメモリのバイト数。
+ **Memory Profile: heap usage** (メモリプロファイル: ヒープ使用量) – JVM ヒープによって使用されたメモリの割合 (スケール: 0～1)。百分率で示されます。
+ **CPU Load** (CPU 負荷) – 使用された CPU システムの負荷の割合 (スケール: 0～1)。百分率で示されます。

## Ray ジョブ実行の Amazon CloudWatch メトリクスを表示
<a name="monitoring-job-run-metrics-ray"></a>

ジョブの実行の詳細ページの **[Run details**] (実行の詳細) セクションでは、ジョブのメトリクスを表示できます。AWS Glue Studio はジョブ実行のたびにジョブメトリクスを Amazon CloudWatch に送信します。

AWS Glue では、30 秒ごとに Amazon CloudWatch にメトリクスが報告されます。AWS Glue メトリクスは、以前に報告された値からデルタ値を表示します。必要に応じて、メトリクスのダッシュボードにより 30 秒の値が集計 (合計) され、直近 1 分間分の値を取得できます。一方、AWS Glue によって Amazon CloudWatch に渡される Apache Spark メトリクスは、一般的に報告された時点での状態を表す絶対値です。

**注記**  
次に示されているように、Amazon CloudWatch にアクセスできるようアカウントを設定する必要があります。

Ray ジョブでは、次の集約メトリクスグラフを表示できます。これらを使用すると、クラスターとタスクのプロファイルを作成し、各ノードの詳細情報にアクセスできます。これらのグラフを裏付ける時系列データは、CloudWatch でさらに分析できます。

**タスクプロファイル: タスクの状態**  
システム内の Ray タスクの数を表示します。各タスクのライフサイクルには、独自の時系列が割り当てられます。

**タスクプロファイル: タスク名**  
システム内の Ray タスクの数を表示します。保留中のタスクとアクティブなタスクのみが表示されます。タスクのタイプ (名前別) ごとに独自の時系列が割り当てられます。

**クラスタープロファイル: 使用中の CPU**  
使用中の CPU コアの数を表示します。ノードごとに独自の時系列が割り当てられます。ノードは IP アドレスで識別されます。IP アドレスは一時的なものであり、識別にのみ使用されます。

**クラスタープロファイル: オブジェクトストアのメモリ使用量**  
Ray オブジェクトキャッシュによるメモリ使用量を表示します。各メモリの場所 (物理メモリ、ディスクへのキャッシュ、Amazon S3 への流出) には、独自の時系列が割り当てられます。オブジェクトストアは、クラスター内に存在するすべてのノードのデータストレージを管理します。詳細については、Ray ドキュメントの「[Objects](https://docs.ray.io/en/latest/ray-core/objects.html)」を参照してください。

**クラスタープロファイル: ノード数**  
クラスターにプロビジョニングされたノード数を表示します。

**ノードの詳細: CPU 使用量**  
各ノードの CPU 使用率をパーセンテージで表示します。各シリーズは、ノード上に存在する全コアの CPU 使用率の合計パーセンテージを表示します。

**ノードの詳細: メモリ使用量**  
各ノードのメモリ使用量を GB 単位で表示します。各シリーズは、Ray タスクと Plasma ストアプロセスを含む、ノード上のすべてのプロセス間で集約されたメモリを表示します。これには、ディスクに保存されたオブジェクトや Amazon S3 に流出したオブジェクトは反映されません。

**ノードの詳細: ディスク使用量**  
各ノードのディスク使用量を GB 単位で表示します。

**ノードの詳細: ディスク I/O 速度**  
各ノードのディスク I/O を KB/秒単位で表示します。

**ノードの詳細: ネットワーク I/O スループット**  
各ノードのネットワーク I/O を KB/秒単位で表示します。

**ノードの詳細: Ray コンポーネントによる CPU 使用量**  
CPU 使用量をコアの分数で表示します。各ノードの Ray コンポーネントごとに独自の時系列が割り当てられます。

**ノードの詳細: Ray コンポーネントによるメモリ使用量**  
メモリ使用量を GiB 単位で表示します。各ノードの Ray コンポーネントごとに独自の時系列が割り当てられます。

# 機密データを検出して処理する
<a name="detect-PII"></a>

 Detect PII transform は、データソース内の個人識別情報 (PII) を識別します。エンティティを選択し、データのスキャン方法、Detect PII transform によって識別されてきた PII エンティティで何を行うかを識別します。

 Detect PII transform は、定義したエンティティ、または AWS によって事前定義されたエンティティを検出、マスク、削除する機能を提供します。これにより、コンプライアンスを高め、責任を軽減できます。例えば、個人を特定でき読み取りが可能な情報がデータ内に存在しないことを確認した上で、固定文字列の社会保障番号 (例: xxx-xx-xxxx)、電話番号、または住所をマスクすることが考えられます。

 AWS Glue Studio の外部で機密データを使用するには、「[AWS Glue Studio 外での機密データ検出の使用](aws-glue-api-sensitive-data-example.md)」を参照してください。

**Topics**
+ [データのスキャン方法の選択](#choose-datascan-pii)
+ [検出する PII エンティティの選択](#choose-pii-entities)
+ [検出感度のレベルの指定](#sensitive-data-sensitivity)
+ [特定された PII データによる対処方法の選択](#choose-action-pii)
+ [詳細なアクションオーバーライドの追加](#sensitive-data-fine-grained-actions-override)

## データのスキャン方法の選択
<a name="choose-datascan-pii"></a>

 データセットをスキャンして個人を特定できる情報 (PII) などの機密データを探す際に、各行で PII を検出するか、または PII データを含む列を検出するかを選択できます。

![\[\]](http://docs.aws.amazon.com/ja_jp/glue/latest/dg/images/detect-fields-PII.png)


 **Detect PII in each cell** を選択する場合、データソース内のすべての行をスキャンすることを選択しています。これは、PII エンティティを識別するための包括的なスキャンです。

 **Detect fields containing PII** を選択する場合、PII エンティティの行のサンプルをスキャンすることを選択しています。これは、PII エンティティが見つかったフィールドを特定しながら、コストとリソースを低く抑える方法です。

 PII を含むフィールドを検出することを選択した場合、行の一部をサンプリングすることで、コストを削減し、パフォーマンスを向上させることができます。このオプションを選択すると、追加のオプションを指定できます。
+  **Sample portion:** これにより、サンプリングする行の割合を指定できます。例えば、50 と入力すると、PII エンティティのためにスキャンされた行の 50% を指定したいことになります。
+  **Detection threshold: ** これにより、列全体が PII エンティティを持つものとして識別されるように、PII エンティティを含む行の割合を指定できます。例えば、10 と入力した場合、フィールドに PII エンティティである米国電話機があると識別されるためには、スキャンされる行の PII エンティティの US Phone の数が 10% 以上になるように指定します。PII エンティティを含む行の割合が 10% 未満の場合、そのフィールドに PII エンティティ (US Phone) が含まれているというラベル付けできません。

## 検出する PII エンティティの選択
<a name="choose-pii-entities"></a>

 **[Detect PII in each cell]** (各セルの PII を検出する) を選択した場合は、次の 3 つのオプションのいずれかを選択できます。
+ 利用可能なすべての PII パターン - これには AWS エンティティが含まれます。
+ カテゴリを選択する - カテゴリを選択すると、PII パターンには、選択したカテゴリのパターンが自動的に含まれます。
+ 特定のパターンを選択する - 選択したパターンのみが検出されます。

 マネージド機密データタイプの全リストについては、「[Managed data types](https://docs.aws.amazon.com/glue/latest/dg/sensitive-data-managed-data-types.html)」を参照してください。

### 利用可能なすべての PII パターンから選択する
<a name="w2aac33c23c21c11"></a>

 **[All available PII patterns]** (使用可能なすべての PII パターン) を選択する場合は、AWS で事前定義されたエンティティを選択します。エンティティは、1 つでも、複数でも、すべてでも選択できます。

![\[\]](http://docs.aws.amazon.com/ja_jp/glue/latest/dg/images/pii-select-entities-to-detect.png)


### カテゴリを選択する
<a name="w2aac33c23c21c15"></a>

 PII パターンとして **[Select categories]** (カテゴリを選択する) を選択して検出する場合は、ドロップダウンメニューのオプションから選択します。一部のエンティティは複数のカテゴリに属する場合があることに注意してください。例えば、*[Person's name]* (人名) は、*[Universal]* (ユニバーサル) および *[HIPAA]* カテゴリに属するエンティティです。
+  [Universal] (ユニバーサル) (例: [Email] (E メール)、[Credit Card] (クレジットカード)) 
+  [HIPAA] (例: [US driving license] (米国の運転免許証)、[Healthcare Common Procedure Coding System (HCPCS) code] (Healthcare Common Procedure Coding System (HCPCS) コード)) 
+  [Networking] (ネットワーキング) (例: [IP Address] (IP アドレス)、[MAC Address] (MAC アドレス)) 
+ アルゼンチン
+ オーストラリア
+ オーストリア
+ ベルギー
+ ボスニア
+ ブルガリア
+ カナダ
+ チリ
+ コロンビア
+ クロアチア
+ キプロス
+ チェコ共和国
+ デンマーク
+ エストニア
+ フィンランド
+ フランス
+ ドイツ
+ ギリシャ
+ ハンガリー
+ アイルランド
+ 韓国
+ 日本
+ メキシコ
+ オランダ
+ ニュージーランド
+ ノルウェー
+ ポルトガル
+ ルーマニア
+ シンガポール
+ スロバキア
+ スロベニア
+ スペイン
+ スウェーデン
+ スイス
+ トルコ
+ ウクライナ
+ アメリカ
+ 英国
+ ベネズエラ

### 特定のパターンを選択する
<a name="w2aac33c23c21c19"></a>

 検出する PII パターンとして **[Select specific patterns]** (特定のパターンを選択する) を選択すると、作成済みのパターンのリストから検索や参照したり、新しい検出エンティティパターンを作成したりできます。

 次のステップでは、機密データを検出する新しいカスタムパターンを作成する方法について説明します。カスタムパターンの名前を入力して、カスタムパターンを作成し、正規表現を追加して、オプションでコンテキスト単語を定義します。

 

 

1.  新しいパターンを作成するには、**[Create new]** (新規作成) ボタンをクリックします。  
![\[\]](http://docs.aws.amazon.com/ja_jp/glue/latest/dg/images/detectpii-create-new.png)

1.  [Create detection entity] (検出エンティティの作成) ページで、エンティティ名と正規表現を入力します。正規表現 (Regex) は、AWS Glue がエンティティを照合するために使用するものです。

1.  **[Validate]** (検証) をクリックします。検証が成功すると、文字列が有効な正規表現であることを示す確認メッセージが表示されます。検証に失敗した場合は、文字列が適切なフォーマット、および許容される文字リテラル、演算子、構文のいずれかに準拠していないことを示すメッセージが表示されます。

1.  正規表現にコンテキスト単語を追加することもできます。コンテキスト単語によって一致する可能性が高くなることがあります。コンテキスト単語は、フィールド名がエンティティを説明していない場合に有効です。例えば、社会保障番号には「SSN」または「SS」という名前が付けられます。これらのコンテキスト単語を追加すると、エンティティの照合に役立ちます。

1.  **[Create]** (作成) をクリックして、検出エンティティを作成します。作成されたエンティティは、AWS Glue Studio コンソールに表示されます。左側のナビゲーションメニューの **[Detection entities]** (検出エンティティ) をクリックします。

    **[Detection entities]** (検出エンティティ) ページから、検出エンティティの編集、削除、作成ができます。検索フィールドを使用してパターンを検索することもできます。

## 検出感度のレベルの指定
<a name="sensitive-data-sensitivity"></a>

 機密データの検出を使用する場合の感度レベルを設定できます。
+  **[高]** – (デフォルト) より高いレベルの感度が必要なユースケースのために、より多くのエンティティを検出します。2023 年 11 月よりも後に作成されたすべての AWS Glue ジョブは、この設定を自動的にオプトインします。
+  **[低]** - 検出するエンティティの数を減らし、誤検知を減らします。

![\[\]](http://docs.aws.amazon.com/ja_jp/glue/latest/dg/images/detect-sensitve-data-sensitvity-new.png)


## 特定された PII データによる対処方法の選択
<a name="choose-action-pii"></a>

 データソース全体で PII を検出することを選択した場合は、適用するグローバルアクションを選択できます。
+  **Enrich data with detection results:** 各セルで Detect PII を選択した場合、検出されたエンティティを新しい列に保存できます。
+  **Redact detected text:** 検出された PII 値を、オプションの置換テキスト入力フィールド中に指定した文字列に置き換えることができます。文字列を指定しない場合、検出された PII エンティティは '\$1\$1\$1\$1\$1\$1\$1' に指定されます。
+  **[検出されたテキストを部分的にマスキング]:** 検出された PII の値の一部を、選択した文字列に置き換えることができます。可能なオプションは 2 つあります。すなわち、端をマスキングしないままにするか、または明示的な正規表現パターンを指定してマスキングするかのいずれかです。AWS Glue 2.0 では、この機能は使用できません。
+  **Apply cryptographic hash:** 検出された PII 値を SHA-256 暗号化ハッシュ関数に渡し、その値を関数からの出力に置き換えることができます。

![\[\]](http://docs.aws.amazon.com/ja_jp/glue/latest/dg/images/detect-sensitive-data-global-action.png)


### AWS Glue バージョン 2.0 と 3.0 以降の相違点
<a name="sensitive-data-detection-glue-versions"></a>

 AWS Glue 2.0 ジョブは、補足列の各列について検出された PII 情報を含む新しい DataFrame を返します。マスキングまたはハッシュ作業は、ビジュアルタブの AWS Glue スクリプト内に表示されます。

 AWS Glue 3.0 および 4.0 ジョブは、これと同じ補足列を持つ新しい DataFrame を返します。「actionUsed」の新しいキーが存在し、`DETECT`、`REDACT`、`PARTIAL_REDACT`、または `SHA256_HASH` のいずれかになります。マスキングアクションが選択されている場合、DataFrame は機密データをマスキングした状態でデータを返します。

## 詳細なアクションオーバーライドの追加
<a name="sensitive-data-fine-grained-actions-override"></a>

 追加の検出およびアクションの設定を、詳細なアクションオーバーライドテーブルに追加できます。これにより、次のことが可能になります。
+  **[検出から特定の列を包含または除外]** – データソース上の推論されたスキーマによって、使用可能な列がテーブルに入力されます。
+  **[グローバルアクションを使用するよりも詳細な特定の設定を指定]** – 例えば、エンティティタイプごとに異なるマスキングテキストの設定を指定できます。
+  **[グローバルアクションとは異なるアクションを指定]** – 異なる機密データタイプに異なるアクションを適用する場合は、ここで実行できます。2 つの異なるその場編集アクション (マスキングとハッシュ) は同じ列では使用できませんが、検出はいつでも使用できることに留意してください。

![\[\]](http://docs.aws.amazon.com/ja_jp/glue/latest/dg/images/detect-sensitive-data-fga-overrides.png)


# AWS Glue Studio による ETL ジョブの管理
<a name="managing-jobs-chapter"></a>

AWS Glue Studio ではシンプルでグラフィカルなインタフェースを使用して、ETL ジョブを管理できます。ナビゲーションメニューで、[**Jobs**] (ジョブ) を選択し、[**Jobs**] (ジョブ) ページを表示します。このページには、AWS Glue Studio または AWS Glue コンソールで作成したすべてのジョブが表示されます。このページでは、ジョブを表示、管理、および実行できます。

**Topics**
+ [ジョブの実行の開始](#start-jobs)
+ [ジョブの実行のスケジュール](#schedule-jobs)
+ [ジョブスケジュールの管理](#manage-schedules)
+ [ジョブの実行の停止](#stop-jobs)
+ [ジョブの表示](#view-jobs)
+ [最近のジョブの実行の情報を表示する](#view-job-run-details)
+ [ジョブスクリプトの表示](#view-job-script)
+ [ジョブのプロパティを変更する](#edit-jobs-properties)
+ [ジョブの保存](#save-job)
+ [ジョブのクローンを作成する](#clone-jobs)
+ [ジョブの削除](#delete-jobs)

## ジョブの実行の開始
<a name="start-jobs"></a>

AWS Glue Studio ではオンデマンドでジョブを実行できます。ジョブは複数回実行でき、ジョブを実行するたびに、AWS Glue によりジョブのアクティビティとパフォーマンスに関する情報が収集されます。この情報は [*job run*] (ジョブの実行) として参照され、ジョブの実行 ID によって識別されます。

AWS Glue Studio では次の方法でジョブの実行を開始できます。
+ [**Jobs**] (ジョブ) ページで、開始するジョブを選択してから、[**Run job**] (ジョブの実行) ボタンをクリックします。
+ ビジュアルエディタでジョブを表示していて、そのジョブが保存されている場合は、[**Run**] (実行) ボタンをクリックして、ジョブの実行を開始します。

ジョブの実行についての詳細は、*AWS Glue デベロッパーガイド*の「[Working with Jobs on the AWS Glue Console](https://docs.aws.amazon.com/glue/latest/dg/console-jobs.html)」を参照してください。

## ジョブの実行のスケジュール
<a name="schedule-jobs"></a>

AWS Glue Studio ではスケジュールを作成し、特定の時間にジョブを実行できます。ジョブが実行される回数、曜日、時間などの制約を指定できます。これらの制約は `cron` に基づいており、`cron` と同じ制限があります。例えば、毎月 31 日にジョブを実行することを選択した場合、31 日がない月があることに注意してください。`cron` の詳細については、*AWS Glue デベロッパーガイド*の「[cron 式](https://docs.aws.amazon.com/glue/latest/dg/monitor-data-warehouse-schedule.html#CronExpressions)」を参照してください。

**スケジュールに従ってジョブを実行するには**

1. 次のいずれかの方法を使用して、ジョブのスケジュールを作成します。
   + [**Jobs**] (ジョブ) ページで、スケジュールを作成するジョブを選択し、[**Actions**] (アクション) を選択してから、[**Schedule job**] (ジョブのスケジュール) を設定します。
   + ビジュアルエディタでジョブを表示していて、そのジョブが保存されている場合は、[**Schedules**] (スケジュール) タブを選択します。次に [**Create Schedule**] (スケジュールの作成) を選択します。

1. [**Schedule job run**] (ジョブの実行のスケジュール) ページで、次の情報を入力します。
   + **Name** (名前): ジョブのスケジュールの名前を入力します。
   + **Frequency** (頻度): ジョブのスケジュールの頻度を入力します。以下のオプションを選択できます。
     + **Hourly** (毎時): ジョブは 1 時間ごとに実行され、特定の時間に始まります。ジョブを実行する時間の**分**を指定できます。デフォルトでは、[hourly] (毎時) を選択すると、ジョブは時間の初め (0 分) に実行されます。
     + **Daily** (毎日): ジョブは毎日実行され、一度に開始します。ジョブを実行する時間の**分**とジョブの**開始時間**を指定できます。時間は 23 時間制で指定され、午後の時間には 13 から 23 の数字を使用します。分と時間のデフォルトの値は 0 です。つまり、[**Daily**] (毎日) を選択している場合、ジョブはデフォルトで午前 0 時に実行されます。
     + **Weekly** (毎週): ジョブは毎週 1 日以上実行されます。前述の [Daily] (毎日) と同じ設定に加えて、ジョブを実行する曜日を選択できます。1 日以上選択できます。
     + **Monthly** (毎月): ジョブは毎月、特定の日に実行されます。前述の [Daily] (毎日) と同じ設定に加えて、その月のジョブを実行する日を選択できます。その日を 1 から 31 の数値で指定します。2 月 30 日などの、1 か月で存在しない日を選択した場合、その月にジョブは実行されません。
     + **Custom** (カスタム): `cron` 構文を使用して、ジョブのスケジュールの式を入力します。cron 式を使用すると、その月の特定の日ではなく最終日、または 3 か月ごとに 7 日と 21 日などのより複雑なスケジュールを作成できます。

       *AWS Glue デベロッパーガイド*の「[cron 式](https://docs.aws.amazon.com/glue/latest/dg/monitor-data-warehouse-schedule.html#CronExpressions)」を参照してください。
   + **Description** (説明): オプションで、ジョブのスケジュールについての説明を入力できます。複数のジョブに同じスケジュールを使用する場合、説明があることでジョブのスケジュールがどうなっているのかを簡単に確認できます。

1. [**Create schedule**] (スケジュールの作成) をクリックして、ジョブのスケジュールを保存します。

1. スケジュールを作成すると、コンソールページの上部に成功のメッセージが表示されます。このバナーの [**Job details**] (ジョブの詳細) をクリックして、ジョブの詳細を表示できます。これにより、[**Schedules**] (スケジュール) タブが選択されているビジュアルジョブエディタのページが開きます。

## ジョブスケジュールの管理
<a name="manage-schedules"></a>

ジョブのスケジュールを作成したら、ビジュアルエディタでジョブを開き、[**Schedules**] (スケジュール) タブをクリックして、スケジュールを管理できます。

[**Schedules**] (スケジュール) タブでは、次のタスクを実行できます。
+ 新しいスケジュールの作成。

  [**Create Schedule**] (スケジュールの作成) を選択し、[ジョブの実行のスケジュール](#schedule-jobs) に示されているようにスケジュールの情報を入力します。
+ 既存のスケジュールの編集。

  編集するスケジュールを選択して、[**Action**] (アクション)、[**Edit schedule**] (スケジュールの編集) を選択します。既存のスケジュールの編集を選択すると、**[Frequency]** (頻度) は [**Custom**] (カスタム)、スケジュールは `cron` 式と表示されます。`cron` 式を変更するか、**[Frequency]** (頻度) ボタンを使用して新しいスケジュールを指定できます。変更が完了したら、[**Update schedule**] (スケジュールの更新) を選択します。
+ アクティブなスケジュールの一時停止。

  アクティブなスケジュールを選択して、[**Action**] (アクション)、[**Pause schedule**] (スケジュールの一時停止) を選択します。スケジュールは、すぐに非アクティブ化されます。更新されたジョブスケジュールのステータスを表示するには、[refresh (reload)] (更新 (再ロード)) ボタンをクリックします。
+ 一時停止したスケジュールの再開。

  非アクティブ化したスケジュールを選択して、[**Action**] (アクション)、[**Resume schedule**] (スケジュールの再開) を選択します。スケジュールはすぐにアクティブになります。更新されたジョブスケジュールのステータスを表示するには、[refresh (reload)] (更新 (再ロード)) ボタンをクリックします。
+ スケジュールの削除。

  削除するスケジュールを選択して、[**Action**] (アクション)、[**Delete schedule**] (スケジュールの削除) を選択します。スケジュールはすぐに削除されます。更新したジョブスケジュールのリストを表示するには、[refresh (reload)] (更新 (再ロード)) ボタンを選択します。スケジュールには、完全に削除されるまで [**Deleting**] (削除中) のステータスが表示されます。

## ジョブの実行の停止
<a name="stop-jobs"></a>

ジョブの実行が完了する前に、ジョブを停止できます。ジョブが正しく設定されていないことがわかっている場合、またはジョブの完了に時間がかかりすぎる場合は、このオプションを選択できます。

[**Monitoring**] (モニタリング) ページの [**Job runs**] (ジョブの実行) リストで停止するジョブを選択し、[**Action**] (アクション) を選択してから、[**Stop run**] (実行の停止) をクリックします。

## ジョブの表示
<a name="view-jobs"></a>

すべてのジョブは、[**Jobs**] (ジョブ) ページで確認できます。このページにアクセスするには、ナビゲーションペインで [**Jobs**] (ジョブ) を選択します。

[**Jobs**] (ジョブ) ページでは、アカウントで作成されたすべてのジョブを確認できます。[**Your jobs**] (ジョブ) リストには、ジョブ名、タイプ、ジョブの前回の実行のステータス、およびジョブが作成されて最後に変更された日付が表示されます。ジョブの名前を選択して、そのジョブの詳細情報を表示できます。

また、モニタリングダッシュボードを使用して、すべてのジョブを表示することもできます。ダッシュボードにアクセスするには、ナビゲーションペインで、[**Monitoring**] (モニタリング) を選択します。

### ジョブの表示のカスタマイズ
<a name="view-jobs-customize"></a>

[**Jobs**] (ジョブ) ページの [**Your jobs**] (ジョブ) セクションで、ジョブの表示方法をカスタマイズできます。また、検索テキストフィールドにテキストを入力して、そのテキストを含む名前のジョブのみを表示することもできます。

[**Your jobs**] (ジョブ) セクションの設定アイコン (![\[\]](http://docs.aws.amazon.com/ja_jp/glue/latest/dg/images/manage-console-icon-settings.png)) を選択すると、AWS Glue Studio でテーブルに情報を表示する方法をカスタママイズできます。表示内のテキストの行を折り返したり、ページに表示されるジョブの数を変更したり、表示する列を指定できます。

## 最近のジョブの実行の情報を表示する
<a name="view-job-run-details"></a>

新しいデータをソースの場所に追加する際、ジョブは複数回実行されます。ジョブを実行するたびに、一意の ID が割り当てられ、それに関する情報が収集されます。この情報は、次の方法で表示できます。
+ [**Runs**] (実行) タブをクリックして、現在表示されているジョブの実行の情報を表示します。

  [**Recent job runs**] (最近のジョブの実行) ページの [**Runs**] (実行) タブ には、ジョブの実行ごとにカードがあります。[**Runs**] (実行) タブで表示される情報には、次の情報が含まれます。
  + ジョブの実行 ID
  + このジョブの実行の試行回数
  + ジョブの実行のステータス
  + ジョブの実行開始および終了時刻
  + ジョブの実行のランタイム
  + ジョブのログファイルへのリンク
  + ジョブのエラーログファイルへのリンク
  + 失敗したジョブに返されたエラー
+ ジョブ実行を選択すると、以下のようにジョブに関する追加情報を表示できます。
  + **[入力引数]**
  + **連続ログ**
  + **[メトリクス]** – 基本的なメトリクスのビジュアライゼーションを確認できます。含まれるメトリクスの詳細については、「[Spark ジョブ実行の Amazon CloudWatch メトリクスを表示](view-job-runs.md#monitoring-job-run-metrics)」を参照してください。　
  + **[Spark UI]** – Spark UI でジョブの Spark ログを視覚化できます。Spark Web UI の使用の詳細については、「[Apache Spark ウェブ UI を使用したジョブのモニタリング](monitor-spark-ui.md)」を参照してください。[AWS Glue ジョブ用の Apache Spark ウェブ UI の有効化](monitor-spark-ui-jobs.md) のステップに従って、この機能を有効にします。

**[詳細を表示]** を選択すると、ジョブ実行の詳細ページに同じような情報が表示されます。あるいは、**[モニタリング]** ページからジョブ実行の詳細ページに移動することもできます。ナビゲーションペインで、[**モニタリング**] を選択します。[**Job runs**] (ジョブの実行) リストまで下にスクロールします。ジョブを選択し、[**View run details**] (実行の詳細を表示する) を選択します。内容は、[ジョブの実行の詳細を表示する](view-job-runs.md#monitoring-job-run-details) に記述されます。

このジョブのログについての詳細は、「[ジョブの実行ログの表示](view-job-runs.md#monitoring-job-run-logs)」を参照してください。

## ジョブスクリプトの表示
<a name="view-job-script"></a>

ジョブ内のすべてのノードの情報を入力した後、AWS Glue Studio により、スクリプトが生成されます。このスクリプトは、ジョブによるソースからのデータの読み取り、変換、ターゲットの場所への書き込みに使用されます。ジョブを保存すると、このスクリプトをいつでも表示できます。

**ジョブ用に生成されたスクリプトを表示するには**

1. ナビゲーションペインで [**Jobs**] (ジョブ) を選択します。

1. [**Jobs**] (ジョブ) ページの [**Your Jobs**] (ジョブ) リストで、レビューするジョブの名前を選択します。または、リストからジョブを選択し、[**Actions**] (アクション) メニューを選択して、[**Edit job**] (ジョブの編集) を選択することもできます。

1. ビジュアルエディタで、ページ上部の [**Script**] (スクリプト) タブを選択して、ジョブスクリプトを表示します。

   ジョブスクリプトを編集する場合は、「[AWS Glue プログラミングガイド](edit-script.md)」を参照してください。

## ジョブのプロパティを変更する
<a name="edit-jobs-properties"></a>

ジョブで実行されるアクションは、ジョブ図のノードにより定義されますが、お客様がジョブに設定できるプロパティもいくつかあります。これらのプロパティでは、ジョブが実行される環境、使用するリソース、しきい値の設定、セキュリティ設定などを決定できます。

**ジョブの実行環境をカスタマイズするには**

1. ナビゲーションペインで [**Jobs**] (ジョブ) を選択します。

1. [**Jobs**] (ジョブ) ページの [**Your Jobs**] (ジョブ) リストで、レビューするジョブの名前を選択します。

1. ビジュアルエディタのページで、ジョブ編集ペインの上部にある [**Job details**] (ジョブの詳細) タブを選択します。

1. 必要に応じて、ジョブのプロパティを変更します。

   ジョブのプロパティの詳細については、*AWS Glue デベロッパーガイド*の「[Defining Job Properties](https://docs.aws.amazon.com/glue/latest/dg/add-job.html#create-job)」を参照してください。

1. 次のようなジョブのプロパティを指定する必要がある場合、[**Advanced properties**] (詳細プロパティ) セクションを展開します。
   + **Script filename ** (スクリプトファイル名) – Amazon S3 でジョブスクリプトを保存するファイルの名前です。
   + **Script path **(スクリプトパス) – ジョブスクリプトが保存される Amazon S3 の場所です。
   + **Job metrics** (ジョブのメトリクス) – (Python シェルジョブでは使用不可) ジョブの実行時に Amazon CloudWatch メトリクスの作成をオンにします。
   + **Continuous logging** (継続的なログ記録) – (Python シェルジョブでは使用不可) CloudWatch への連続的なログ記録をオンにし、ジョブが完了する前にログを表示できるようにします。
   + **Spark UI** および **Spark UI logs path** (Spark UI ログパス) – (Python シェルジョブでは使用不可) このジョブをモニタリングするための Spark UI の使用をオンにし、Spark UI ログの場所を指定します。
   + **Maximum concurrency** (同時実行の最大数) – このジョブで許可される同時実行の最大数を設定します。
   + **Temporary path** (一時的なパス) – AWS Glue でジョブスクリプトが実行されるときに一時的な中間結果が書き込まれる Amazon S3 の作業ディレクトリの場所です。
   + **Delay notification threshold (minutes)** (遅延通知のしきい値 (分)) – ジョブの遅延のしきい値を指定します。ジョブがしきい値で指定された時間よりも長い時間実行された場合、AWS Glue によりジョブの遅延通知が CloudWatch に送信されます。
   + **Security configuration** (セキュリティ設定) および **Server-side encryption** (サーバー側の暗号化) – これらのフィールドを使用して、ジョブの暗号化オプションを選択します。
   + **Use Glue Data Catalog as the Hive metastore** (Glue Data Catalog を Hive メタストアとして使用する) – Apache Hive Metastore の代わりに AWS Glue Data Catalog を使用する場合、このオプションを選択します。
   + **Additional network connection** (追加のネットワーク接続) – VPC 内のデータソース向けに、タイプ `Network` の接続を指定して、ジョブが VPC 経由でデータにアクセスできるようにします。
   + **Python library path** (Python ライブラリパス)、**Dependent jars path** (依存 JARS パス) (Python シェルジョブでは使用不可)、**Referenced files path** (参照されるファイルパス) – これらのフィールドを使用して、スクリプトの実行時にジョブが使用する追加のファイルの場所を指定できます。
   + **Job Parameters** (ジョブパラメータ) – スクリプトに名前付きパラメータとして渡される一連のキーと値のペアを追加できます。AWS Glue API の Python 呼び出しでは、明示的に名前でパラメータを渡すことが最善です。ジョブスクリプトでのパラメータの使用の詳細については、*AWS Glue デベロッパーガイド*の「[Passing and Accessing Python Parameters in AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-python-calling.html#aws-glue-programming-python-calling-parameters)」を参照してください。
   + **Tags** (タグ) – ジョブにタグを追加することで、ジョブの整理および識別が容易になります。

1. ジョブのプロパティを変更した後、ジョブを保存します。

### Spark のシャッフルファイルを Amazon S3 に保存する
<a name="configure-shuffle"></a>

一部の ETL ジョブでは、複数のパーティションから情報を読み込んで結合する必要があります。例えば、結合変換を使用する場合などです。この操作は*シャッフリング*と呼ばれます。シャッフル中、データはディスクに書き込まれ、ネットワーク経由で転送されます。AWS Glue バージョン 3.0 では、これらのファイルの保存場所として Amazon S3 を設定できます。AWS Glue では、Amazon S3 との間でシャッフルファイルの書き込みおよび読み込みを行うシャッフルマネージャーを利用できます。Amazon S3 からのシャッフルファイルの書き込みおよび読み込みは、ローカルディスク (または Amazon EC2 用に最適化された Amazon EBS) に比べて 5% ～ 20% 遅くなります。ただし、Amazon S3 には無制限のストレージ容量があるため、ジョブを実行する際に「`No space left on device`」エラーについて心配する必要はありません。

**ファイルのシャッフルに Amazon S3 を使用するようにジョブを設定するには**

1. [**Jobs**] (ジョブ) ページの [**Your Jobs**] (ジョブ) リストで、変更するジョブの名前を選択します。

1. ビジュアルエディタのページで、ジョブ編集ペインの上部にある [**Job details**] (ジョブの詳細) タブを選択します。

   [**Job parameters**] (ジョブパラメータ) セクションまで下にスクロールします。

1. 次のキーと値のペアを指定します。
   + `--write-shuffle-files-to-s3` — `true`

     これは、AWS Glue でシャッフルマネージャーを構成する主要なパラメータです。シャッフルデータの書き込みおよび読み取りには Amazon S3 バケットを使用します。デフォルトでは、このパラメータの値は `false` です。
   + (オプション) `--write-shuffle-spills-to-s3` — `true`

     このパラメータを使用すると、流出ファイルを Amazon S3 バケットにオフロードできます。これにより、AWS Glue での Spark ジョブの耐障害性が強化されます。これは、大量のデータをディスクに退避させる大規模なワークロードにのみ必要です。デフォルトでは、このパラメータの値は `false` です。
   + (オプション) `--conf spark.shuffle.glue.s3ShuffleBucket` — `S3://<shuffle-bucket>`

     このパラメータを使用すると、シャッフルファイルを書き込む際に使用する Amazon S3 バケットを指定できます。このパラメータを設定しない場合、その場所は**一時パス** (`--TempDir`) 用に指定された場所にある `shuffle-data` フォルダになります。
**注記**  
シャッフルバケットの場所がジョブが実行されるのと同じ AWS リージョン にあることを確認します。  
また、ジョブの実行の終了後、ファイルはシャッフルサービスによりクリーンアップされないため、シャッフルバケットの場所で Amazon S3 ストレージライフサイクルポリシーを設定する必要があります。詳細については、*Amazon S3 ユーザーガイド*の「[ストレージのライフサイクルの管理](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lifecycle-mgmt.html)」をご参照ください。

## ジョブの保存
<a name="save-job"></a>

ジョブが保存されるまで、[**Save**] (保存) ボタンの左側に、赤い [**Job has not been saved**] (ジョブは保存されていません) という吹き出しが表示されます。

![\[[Save] (保存) ボタンの左側の、「ジョブは保存されていません」というラベルが付いた赤い楕円形です。\]](http://docs.aws.amazon.com/ja_jp/glue/latest/dg/images/edit-graph-callout-not-saved_GA.png)


**ジョブを保存するには**

1. [**Visual**] (ビジュアル) および [**Job details**] (ジョブの詳細) タブで、必要なすべての情報を入力します。

1. **[保存]** ボタンを選択します。

   ジョブを保存すると、「保存されていません」という吹き出しが、ジョブが最後に保存された日時の表示に変わります。

ジョブを保存する前に AWS Glue Studio を終了した場合、次回の AWS Glue Studio の起動時に通知が表示されます。通知では、未保存のジョブがあり、それを復元するかどうかを尋ねられます。ジョブの復元を選択すると、そのジョブの編集を続行できます。

### ジョブ保存時のエラーのトラブルシューティング
<a name="save-job-troubleshooting"></a>

[**Save**] (保存) ボタンをクリックすると、ジョブに必要な情報が欠落している場合は、情報が欠落しているタブに赤い吹き出しが表示されます。吹き出しの数字は、欠落している検出されたフィールドの数を示します。

![\[「無題のジョブ」という名前のジョブの、ビジュアルエディタペインのタブのスクリーンショット。[Visual] (ビジュアル) タブには 2 とラベル付けされた吹き出し、[Job details] (ジョブの詳細) タブには 1 とラベル付けされた吹き出しが表示されています。\]](http://docs.aws.amazon.com/ja_jp/glue/latest/dg/images/screenshot-save-job-error-in-graph-GA2.png)

+ ビジュアルエディタのノードが正しく設定されていない場合、[**Visual**] (ビジュアル) タブに赤い吹き出しが表示され、エラーのあるノードに警告記号 ![\[A red triangle with an exclamation point in the center\]](http://docs.aws.amazon.com/ja_jp/glue/latest/dg/images/edit-graph-warning_icon.png) が表示されます。

  1. ノードを選択します。ノードの詳細パネルで、不足または誤った情報があるタブに赤い吹き出しが表示されます。

  1. ノードの詳細パネルで赤い吹き出しが表示されるタブを選択し、ハイライトされている問題のフィールドを見つけます。フィールドの下のエラーメッセージには、問題に関する追加情報が表示されます。  
![\[ジョブエディタの [Visual] (ビジュアル) タブのスクリーンショット。2 とラベル付けされた吹き出しが付いています。警告ラベルが付いたデータソースノードが選択されています。ノードの詳細パネルでは、[Data source properties] (データソースのプロパティ) タブに 2 というラベルの吹き出しがあり、これが選択されています。[Database] (データベース) と [Table] (テーブル) の 2 つのフィールドは赤で示され、その下に値が必須であることを示すメッセージが表示されます。\]](http://docs.aws.amazon.com/ja_jp/glue/latest/dg/images/screenshot-save-job-error-in-graph2.png)
+ ジョブのプロパティに問題がある場合、[**Job details**] (ジョブの詳細) タブには、赤い吹き出しが表示されます。そのタブを選択し、ハイライトされている問題のフィールドを見つけます。フィールドの下のエラーメッセージにより、問題に関する追加情報が表示されます。  
![\[ジョブエディタの [Job details] (ジョブの詳細) タブのスクリーンショット。このタブには、1 とラベル付けされた吹き出しが付いています。「IAM ロール」フィールドは赤で示され、その下に値が必要であることを示すメッセージが表示されます。\]](http://docs.aws.amazon.com/ja_jp/glue/latest/dg/images/screenshot-save-job-error-in-job-details.png)

## ジョブのクローンを作成する
<a name="clone-jobs"></a>

[**Clone job**] (ジョブのクローン) アクションを使用して、既存のジョブを新しいジョブにコピーします。

**既存のジョブをコピーして新しいジョブを作成するには**

1. [**Jobs**] (ジョブ) ページの [**Your Jobs**] (ジョブ) リストで、複製するジョブを選択します。

1. [**Actions**] (アクション) メニューから、[**Clone job**] (ジョブのクローン) を選択します。

1. 新しいジョブの名前を入力します。その後、ジョブを保存または編集できます。

## ジョブの削除
<a name="delete-jobs"></a>

不要になったジョブを削除できます。1 回の操作で 1 つ以上のジョブを削除できます。

**AWS Glue Studio からジョブを削除する方法**

1. [**Jobs**] (ジョブ) ページの [**Your Jobs**] (ジョブ) リストで、削除するジョブを選択します。

1. [**Actions**] (アクション) メニューから、[**Delete job**] (ジョブの削除) を選択します。

1. 「**delete**」を入力して、ジョブを削除することを確認します。

ビジュアルエディタで、そのジョブの [**Job details**] (ジョブの詳細) タブを表示して、保存したジョブを削除することもできます。