Iceberg テーブルデータをクエリする - Amazon Athena

Iceberg テーブルデータをクエリする

Iceberg データセットをクエリするには、次のような標準の SELECT ステートメントを使用します。クエリは Apache Iceberg format v2 spec に従い、位置と等価削除の両方の merge-on-read を実行します。

SELECT * FROM [db_name.]table_name [WHERE predicate]

クエリ時間を最適化するために、すべての述語がデータが存在する場所にプッシュダウンされます。

タイムトラベルとバージョントラベルのクエリについては、「タイムトラベルとバージョントラベルのクエリを実行する」を参照してください。

Iceberg テーブルでビューを作成およびクエリする

Iceberg テーブルで Athena ビューを作成してクエリするには、ビューを使用する で説明されている CREATE VIEW ビューを使用します。

例:

CREATE VIEW view1 AS SELECT * FROM iceberg_table
SELECT * FROM view1

Iceberg ビュー仕様を使用してビューを作成することに興味がある場合は、athena-feedback@amazon.com までご連絡ください。

Iceberg テーブルデータをクエリする

SELECT クエリでは、table_name の後に次のプロパティを使用して Iceberg テーブルメタデータをクエリできます。

  • $files — テーブルの現在のデータファイルを表示します。

  • $manifests — テーブルの現在のファイルマニフェストを表示します。

  • $history — テーブルの履歴を表示します。

  • $partitions — テーブルの現在のパーティションを表示します。

  • $snapshots — テーブルのスナップショットを表示します。

  • $refs — テーブルのリファレンスを表示します。

次のステートメントは、Iceberg テーブルのファイルを一覧表示します。

SELECT * FROM "dbname"."tablename$files"

次のステートメントは、Iceberg テーブルのマニフェストを一覧表示します。

SELECT * FROM "dbname"."tablename$manifests"

次のステートメントは、Iceberg テーブルの履歴を一覧表示します。

SELECT * FROM "dbname"."tablename$history"

以下は、Iceberg テーブルのパーティションを表示する例です。

SELECT * FROM "dbname"."tablename$partitions"

以下は、Iceberg テーブルのスナップショットをリストする例です。

SELECT * FROM "dbname"."tablename$snapshots"

以下は、Iceberg テーブルのリファレンスを表示する例です。

SELECT * FROM "dbname"."tablename$refs"

Lake Formation のきめ細かなアクセスコントロールを使用する

Athena エンジンのバージョン 3 は、列レベルと行レベルのセキュリティアクセス制御を含む、Iceberg テーブルによる Lake Formation のきめ細かいアクセス制御をサポートしています。このアクセス制御は、タイムトラベルクエリやスキーマの進化を行ったテーブルを使用して機能します。詳細については、「Lake Formation のきめ細かなアクセス制御と Athena ワークグループ」を参照してください。

Athena 以外で Iceberg テーブルを作成した場合は、Apache Iceberg SDK バージョン 0.13.0 以降を使用して、Iceberg テーブルの列情報が AWS Glue Data Catalog に入力されるようにします。AWS Glue のIceberg テーブルに列情報が含まれていない場合は、Athena ALTER TABLE SET PROPERTIES ステートメントまたは最新の Iceberg SDK を使用してテーブルを修正し、AWS Glue の列情報を更新できます。