ETL ジョブのテーブルを作成する - Amazon Athena

ETL ジョブのテーブルを作成する

Athena を使用して、AWS Glue が ETL ジョブに使用できるテーブルを作成できます。AWS Glue ジョブは ETL オペレーションを実行します。AWS Glue ジョブは、ソースからデータを抽出し、そのデータを変換してターゲット内にロードするためのスクリプトを実行します。詳細については、AWS デベロッパーガイドの「AWS Glue Glue でのジョブの作成」を参照してください。

AWS Glue ETL ジョブ用の Athena テーブルの作成

Athena 内で作成するテーブルには、データの形式を識別する classification と呼ばれるテーブルプロパティが追加されている必要があります。これにより、AWS Glue はテーブルを ETL ジョブに使用できます。分類値は avrocsvjsonorcparquet または xml です。Athena での CREATE TABLE ステートメントの例は、以下のとおりです。

CREATE EXTERNAL TABLE sampleTable ( column1 INT, column2 INT ) STORED AS PARQUET TBLPROPERTIES ( 'classification'='parquet')

classification テーブルプロパティは、テーブルの作成時に追加しなかった場合、AWS Glue コンソールを使用して追加できます。

AWS Glue コンソールを使用して分類テーブルプロパティを追加するには
  1. AWS Management Console にサインインし、AWS Glue コンソール (https://console.aws.amazon.com/glue/) を開きます。

  2. コンソールのナビゲーションペインで、[Tables] (テーブル) を選択します。

  3. 編集するテーブルのリンクを選択した後、[Action] (アクション)、[Edit table] (テーブルの編集) の順に選択します。

  4. [Table properties] (テーブルプロパティ) セクションまで、下にスクロールします。

  5. [追加] を選択します。

  6. [Key] (キー) に「classification」と入力します。

  7. [Value] (値) に、データタイプを入力します(例:json)。

  8. [Save] を選択します。

    [Table details] (テーブルの詳細) セクションで、入力したデータタイプがテーブルの [Classification] (分類) フィールドに表示されます。

詳細については、「AWS Glue デベロッパーガイド」の「テーブルの使用」を参照してください。

ETL ジョブを使用してクエリパフォーマンスを最適化する

AWS Glue ジョブは、Athena でのクエリパフォーマンスが最適化されるような形式にデータを変換するのに役立ちます。データの形式は、Athena でのクエリパフォーマンスとクエリコストに大きな影響を及ぼします。

AWS Glue は、Parquet および ORC データ形式への書き込みをサポートしています。この機能を使用して、Athena で利用するためにデータを変換できます。Parquet と ORC の使用、および Athena でパフォーマンスを改善する他の方法の詳細については、「Amazon Athena のパフォーマンスチューニング Tips トップ 10」を参照してください。

注記

Athena が AWS Glue ETL ジョブによって生成された SMALLINT および TINYINT データ型を読み取れなくなる可能性を低くするには、データを ORC に変換する ETL ジョブを作成する際に SMALLINTTINYINTINT に変換します。

ETL のために AWS Glue ジョブを自動化する

AWS Glue ETL ジョブは、トリガーに基づいて自動的に実行するように設定できます。この機能は、AWS 外からのデータが、Athena でのクエリのために最適とは言えない形式で Amazon S3 バケットにプッシュされている場合に適しています。詳細については、「AWS Glue デベロッパーガイド」の「AWS Glue ジョブのトリガー」を参照してください。