Athena のパーティション射影(Partition Projection)を理解するためにイメージ図を書いた

Athena のパーティション射影(Partition Projection)を理解するためにイメージ図を書いた

Athena のパーティション射影(Partition Projection)を理解するためにイメージ図を書いてみました。
Clock Icon2024.10.20

コーヒーが好きな emi です。

S3 に格納したデータを Athena のパーティション射影(Partition Projection)で必要な部分のみ抽出する操作が必要なシーンは多くあると思います。私も最近よく使っているのですが、うまく説明するのが難しいなと思ったのでイメージ図を書いてみました。

パーティション(Partition)とは

「パーティション」とは、データを分割して管理する方法のことです。
データが増えてくると、すべてを一つの場所にまとめて管理するのが難しくなり、処理が遅くなってしまいます。そのため、データを日付やユーザー ID などの条件に基づいて複数の小さな「パーティション」に分割します。
こうすると、特定の条件に合ったデータだけをすばやく検索することができ、処理が効率的になります。

例えば S3 のパスでファイルをパーティションとして分割し、特定のパーティションだけをクエリに使うことで効率的にデータを取得できます。
以下のように日付でパーティション分割し、特定の日付(以下図では 2023~2024年)に絞って処理クエリを実行することで、S3 全体をフルスキャンすることなく必要な処理だけを実行できます。

emiki_partition_projection_range_jst_2

射影(Projection)とは

データベースの世界では、特定の列のデータのみを抽出することを「射影」と言います。
表全体を扱うのではなく、特定の列や特定の部分だけを取り出します。

emiki_partition_projection_range_jst_4

パーティション射影(Partition Projection)とは

Athena では、日付やユーザー ID など特定のパーティションキーを使ってクエリを効率的に絞り込むことが可能で、これを「パーティション射影」と呼びます。

パーティションを自動的に生成・管理し、クエリ時に効率よくデータを絞り込むことで、S3 上の大量のデータから必要な部分だけを動的に取り出すことができ、クエリのパフォーマンスが向上します。また、従来は手動で管理していたパーティションの定義を自動化できるため、運用の手間が軽減されます。

例えば以下のように S3 バケットに日付でプレフィックス(フォルダとも)が分かれているとします。
年月日以下のプレフィックスは日に日に自動で増えていくので、これらの構造定義を毎回 Athena に設定するのは大変です。
emiki_partition_projection_range_jst_3

そこでパーティション射影(Partition Projection)を使うと、Athena 側で年月日以下の構造を自動で認識し、パーティションキーで特定の日付のデータにのみクエリを実行することが可能になります。

詳しいクエリ内容の説明は省きますが、上記図では partition_date というパーティションキーを設定してパーティション射影(Partition Projection)を有効化しています。

内部的には、Athena は Glue Data Catalog のテーブルプロパティを使用してパーティション値と場所を計算しています。

https://docs.aws.amazon.com/ja_jp/athena/latest/ug/partition-projection.html

実際の使い方イメージ

実際のパーティション射影(Partition Projection)の使い方は以下ブログが参考になりますので参照ください。
https://dev.classmethod.jp/articles/tried-to-check-how-to-set-amazon-athena-partition-projection/

おわりに

Athena のパーティション射影(Partition Projection)についてイメージ図を書いてみました。
どなたかのお役に立てば幸いです。

参考

https://docs.aws.amazon.com/ja_jp/athena/latest/ug/partition-projection-supported-types.html

https://dev.classmethod.jp/articles/partition-projection-shikujiri-s3-cost-increase/

この記事をシェアする

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.