

# 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] (オーバーフロー) (![A rectangle with an ellipsis (...) in the center](http://docs.aws.amazon.com/ja_jp/glue/latest/dg/images/edit-schema-actions-button.png)) ボタンを選択して、[**Add root key**] (ルートキーの追加) をクリックします。新しい列がスキーマの先頭に追加されます。
   + スキーマから列を削除するには、キー名の右端にある削除アイコン (![An outline of a trash can](http://docs.aws.amazon.com/ja_jp/glue/latest/dg/images/delete-icon-black.png)) をクリックします。

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

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