查询 Iceberg 表数据 - Amazon Athena

查询 Iceberg 表数据

若要查询 Iceberg 数据集,请使用标准 SELECT 语句,如下所示。查询遵循 Apache Iceberg 格式 v2 规范,并对位置和平等删除执行读取时合并。

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 或更高版本,以便在 AWS Glue Data Catalog 中填充 Iceberg 表列信息。如果 Iceberg 表不包含 AWS Glue 中的列信息,则可以使用 Athena ALTER TABLE SET TBLPROPERTIES 语句或最新的 Iceberg SDK 修复表并更新 AWS Glue 中的列信息。