

# 查询 Amazon Glue Data Catalog 实体化视图


Athena 可以查询 Amazon Glue Data Catalog 实体化视图。Glue Data Catalog 实体化视图将预先计算的 SQL 查询结果存储为 Apache Iceberg 表。

使用 Amazon EMR 或 Amazon Glue Glue 中的 Apache Spark 创建实体化视图时，视图定义和元数据存储在 Amazon Glue Data Catalog 中。预先计算的结果以 Apache Iceberg 表的形式存储在 Amazon S3 中。您可以使用标准 SQL `SELECT` 语句从 Athena 查询这些实体化视图，就像查询常规 Iceberg 表一样。

## 先决条件


在 Athena 中查询实体化视图之前，请确保满足以下条件：
+ 实体化视图位于 Amazon Glue Data Catalog 中，是使用 Apache Spark 创建的（Amazon EMR 版本 7.12.0 或更高版本，或 Amazon Glue 版本 5.1 或更高版本）
+ 要在 Athena 中查询实体化视图，您需要以下 Amazon Lake Formation 权限：
  + 对实体化视图的 `SELECT` 权限
  + 对实体化视图的 `DESCRIBE` 权限
  + 存储实体化视图数据的底层 Amazon S3 位置的访问权限
+ 实体化视图的底层数据存储在 Amazon S3 表类数据存储服务存储桶或 Amazon S3 通用存储桶中
+ 您可以访问包含实体化视图的 Amazon Glue Data Catalog 数据库
+ 对于存储在 Amazon S3 表类数据存储服务存储桶中的实体化视图，请确保您的 IAM 角色具有访问 S3 表类数据存储服务目录所需的权限。

## 注意事项和限制

+ Athena 不支持对实体化视图的以下操作：`ALTER`、`CREATE MATERIALIZED VIEW`、`REFRESH MATERIALIZED VIEW`、`DROP`、`INSERT`、`UPDATE`、`MERGE`、`DELETE`、`OPTIMIZE`、`VACUUM`。要创建实体化视图，请在 Amazon EMR 或 Amazon Glue 中使用 Apache Spark。刷新操作必须通过 Amazon Glue Data Catalog API 或 Apache Spark 执行。使用 Apache Spark 修改实体化视图。

## 查询实体化视图


Athena 将实体化视图视为用于读取操作的标准 Iceberg 表，允许您访问预先计算的数据，而无需进行特殊语法或配置更改。

要在 Athena 中查询实体化视图，请使用标准 `SELECT` 语句：

```
SELECT * FROM my_database.sales_summary_mv;
```

您可以像使用常规表一样应用筛选器、聚合和联接：

```
SELECT
  region,
  SUM(total_sales) as sales_total
FROM my_database.sales_summary_mv
WHERE year = 2025
GROUP BY region
ORDER BY sales_total DESC;
```

## 支持的操作


Athena 支持对实体化视图的以下操作：
+ `SELECT` 查询：使用标准 SQL `SELECT` 语句从实体化视图中读取数据
+ `DESCRIBE`：查看实体化视图的架构和元数据
+ `SHOW TABLES`：列出实体化视图以及数据库中的其他表
+ `JOIN` 操作：将实体化视图与其他表或视图联接
+ 筛选和聚合：应用 `WHERE` 子句、`GROUP BY` 和聚合函数