

# 查询 Iceberg 表数据
<a name="querying-iceberg-table-data"></a>

若要查询 Iceberg 数据集，请使用标准 `SELECT` 语句，如下所示。查询遵循 Apache Iceberg [格式 v2 规范](https://iceberg.apache.org/spec/#format-versioning)，并对位置和平等删除执行读取时合并。

```
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\_name}} 之后使用以下属性来查询 Iceberg 表元数据：
+ **$files** – 显示表的当前数据文件。
+ **$manifests** – 显示表的当前文件清单。
+ **$history** – 显示表的历史记录。
+ **$partitions** – 显示表的当前分区。
+ **$snapshots** – 显示表的快照。
+ **$refs** – 显示表的引用。

### 示例
<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 或更高版本，以便在 AWS Glue Data Catalog 中填充 Iceberg 表列信息。如果 Iceberg 表不包含 AWS Glue 中的列信息，则可以使用 Athena [ALTER TABLE SET TBLPROPERTIES](querying-iceberg-alter-table-set-properties.md) 语句或最新的 Iceberg SDK 修复表并更新 AWS Glue 中的列信息。