AWS Glue パーティションのインデックス作成とフィルタリングでクエリを最適化する
Athena は、パーティション分割されたテーブルに対しクエリを実行する際、クエリに関連するサブセットに使用可能なテーブルパーティションの取得とフィルタリングを行います。新しいデータとパーティションが追加されると、パーティションの処理に時間がかかり、クエリの実行時間が長くなる可能性があります。時間の経過とともに多数のテーブルが増加するパーティションの場合は、AWS Glue パーティションのインデックス作成とフィルタリングを使用することを検討してください。パーティションのインデックス作成により、Athena によるパーティション処理が最適化され、高度にパーティション化されたテーブルでのクエリパフォーマンスを向上させることができます。テーブルのプロパティでのパーティションフィルタリングの設定は、以下 2 つのステップで行います。
-
AWS Glue でのパーティションインデックスの作成。
-
テーブルのパーティションフィルタリングの有効化。
パーティションインデックスの作成
AWS Glue でのパーティションインデックス作成のステップについては、「AWS Glue デベロッパーガイド」の「パーティションインデックスの使用」を参照してください。AWS Glue でのパーティションインデックスの制限については、同じページの「パーティションインデックスについて」セクションを参照してください。
パーティションフィルタリングの有効化
テーブルのパーティションフィルタリングを有効にするには、AWS Glue で新しくテーブルのプロパティを設定する必要があります。AWS Glue でテーブルプロパティを設定する方法については、「パーティション射影のセットアップ」ページを参照してください。AWS Glue でテーブルの詳細設定を編集する際、[Table properties] (テーブルのプロパティ) セクションに、以下のキーと値のペアを追加します。
-
[Key] (キー) に
partition_filtering.enabled
を追加します。 -
[Value] (値) に
true
を追加します。
値 partition_filtering.enabled
に false
を設定することで、このテーブルのパーティションフィルタリングをいつでも無効にすることができます。
上記の各ステップを完了したら、Athena コンソールに戻ってデータをクエリできます。
パーティションのインデックス作成のフィルタリングの使用の詳細については、AWS Big Data Blog の「Improve Amazon Athena query performance using AWS Glue Data Catalog partition indexes