

# Iceberg テーブルデータをクエリする
<a name="querying-iceberg-table-data"></a>

Iceberg データセットをクエリするには、次のような標準の `SELECT` ステートメントを使用します。クエリは Apache Iceberg [format v2 spec](https://iceberg.apache.org/spec/#format-versioning) に従い、位置と等価削除の両方の merge-on-read を実行します。

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

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

タイムトラベルとバージョントラベルのクエリについては、「[タイムトラベルとバージョントラベルのクエリを実行する](querying-iceberg-time-travel-and-version-travel-queries.md)」を参照してください。

## Iceberg テーブルでビューを作成およびクエリする
<a name="querying-iceberg-views"></a>

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

例:

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

```
SELECT * FROM view1 
```

[Iceberg ビュー仕様](https://github.com/apache/iceberg/blob/master/format/view-spec.md)を使用してビューを作成することに興味がある場合は、[athena-feedback@amazon.com](mailto:athena-feedback@amazon.com) までご連絡ください。

## Iceberg テーブルデータをクエリする
<a name="querying-iceberg-table-metadata"></a>

`SELECT` クエリでは、*table\$1name* の後に次のプロパティを使用して Iceberg テーブルメタデータをクエリできます。
+ **\$1files** — テーブルの現在のデータファイルを表示します。
+ **\$1manifests** — テーブルの現在のファイルマニフェストを表示します。
+ **\$1history** — テーブルの履歴を表示します。
+ **\$1partitions** — テーブルの現在のパーティションを表示します。
+ **\$1snapshots** — テーブルのスナップショットを表示します。
+ **\$1refs** — テーブルのリファレンスを表示します。

### 例
<a name="querying-iceberg-table-metadata-syntax"></a>

次のステートメントは、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 のきめ細かなアクセスコントロールを使用する
<a name="querying-iceberg-working-with-lf-fgac"></a>

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

Athena 以外で Iceberg テーブルを作成した場合は、[Apache Iceberg SDK](https://iceberg.apache.org/releases/) バージョン 0.13.0 以降を使用して、Iceberg テーブルの列情報が AWS Glue Data Catalog に入力されるようにします。AWS Glue のIceberg テーブルに列情報が含まれていない場合は、Athena [ALTER TABLE SET TBLPROPERTIES](querying-iceberg-alter-table-set-properties.md) ステートメントまたは最新の Iceberg SDK を使用してテーブルを修正し、AWS Glue の列情報を更新できます。