

 从补丁 198 开始，Amazon Redshift 将不再支持创建新的 Python UDF。现有的 Python UDF 将继续正常运行至 2026 年 6 月 30 日。有关更多信息，请参阅[博客文章](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/)。

# 查询 AWS Glue Data Catalog
<a name="query-editor-v2-glue"></a>

可以使用查询编辑器 v2 查询在 AWS Glue Data Catalog 中编目的数据，方法是使用特定 SQL 命令并授予本节中概述的权限。默认情况下，AWS Glue Data Catalog 列为名为 `awsdatacatalog` 的查询编辑器 v2 数据库。查询 AWS Glue Data Catalog 并非在所有 Amazon Redshift AWS 区域中都可用。使用 SHOW 命令确定此功能是否可用。有关 AWS Glue 的更多信息，请参阅《AWS Glue 开发人员指南》中的[什么是 AWS Glue？](https://docs.aws.amazon.com/glue/latest/dg/what-is-glue.html)。

**注意**  
查询 AWS Glue Data Catalog 仅在 Amazon Redshift RA3 节点类型集群和 Amazon Redshift Serverless 中受到支持。

您可以使用以下 SQL 命令配置您的数据仓库并查看编目的 AWS Glue 数据库对象：
+ SHOW – 显示是否为当前连接的数据仓库安装了 `awsdatacatalog`。例如，要显示 `data_catalog_auto_mount` 参数值，请运行：

  ```
  SHOW data_catalog_auto_mount;
  ```

  有关更多信息，请参阅《Amazon Redshift 数据库开发人员指南》**中的 [SHOW](https://docs.aws.amazon.com/redshift/latest/dg/r_SHOW.html)。
+ ALTER SYSTEM – 更改 `data_catalog_auto_mount` 的系统级配置。例如，要将 `data_catalog_auto_mount` 参数值更改为 `on`，请运行：

  ```
  ALTER SYSTEM SET data_catalog_auto_mount = on;
  ```

  当重新引导预置集群或自动暂停并恢复无服务器工作组时，更改将生效。有关更多信息，请参阅《Amazon Redshift 数据库开发人员指南》**中的 [ALTER SYSTEM](https://docs.aws.amazon.com/redshift/latest/dg/r_ALTER_SYSTEM.html)。
+ SHOW SCHEMAS – 显示架构列表。数据库中名为 `awsdatacatalog` 的架构代表 AWS Glue Data Catalog 中编目的 AWS Glue 数据库。例如，要显示这些架构，请运行：

  ```
  SHOW SCHEMAS FROM DATABASE awsdatacatalog;
  ```

  有关更多信息，请参阅《Amazon Redshift 数据库开发人员指南》**中的 [SHOW SCHEMAS](https://docs.aws.amazon.com/redshift/latest/dg/r_SHOW_SCHEMAS.html)。
+ SHOW TABLES – 显示架构中表的列表。例如，要显示名为 `awsdatacatalog` 的 AWS Glue Data Catalog 数据库中的表（这些表位于架构 `myglue` 中），请运行：

  ```
  SHOW TABLES FROM SCHEMA awsdatacatalog.myschema;
  ```

  有关更多信息，请参阅《Amazon Redshift 数据库开发人员指南》**中的 [SHOW TABLES](https://docs.aws.amazon.com/redshift/latest/dg/r_SHOW_TABLES.html)。
+ SHOW COLUMNS – 显示表中列的列表。例如，要显示名为 `awsdatacatalog` 的 AWS Glue Data Catalog 数据库中的列（这些列位于架构 `myglue` 和表 `mytable` 中），请运行：

  ```
  SHOW COLUMNS FROM TABLE awsdatacatalog.myglue.mytable;
  ```

  有关更多信息，请参阅《Amazon Redshift 数据库开发人员指南》**中的 [SHOW COLUMNS](https://docs.aws.amazon.com/redshift/latest/dg/r_SHOW_COLUMNS.html)。

**向 IAM 用户或角色授予查询 AWS Glue Data Catalog 的权限**

1. 在树视图窗格中，使用**数据库用户名和密码**身份验证方法，连接到预置集群或无服务器工作组中的初始数据库。例如，使用您在创建集群或工作组时使用的管理员用户和密码连接到 `dev` 数据库。

1. 在编辑器选项卡中，运行以下 SQL 语句以授予 IAM 用户对 AWS Glue Data Catalog 的访问权限。

   ```
   GRANT USAGE ON DATABASE awsdatacatalog to "IAM:myIAMUser"
   ```

   其中，*IAM:myIAMUser* 是您想要向其授予对 AWS Glue Data Catalog 的使用权限的 IAM 用户。或者，您可以向 IAM 角色的 *IAMR:myIAMRole* 授予使用权限。

1. 在树视图窗格中，编辑或删除与您之前创建的集群或工作组的连接。通过以下方式之一连接到您的集群或工作组：
   + 要从集群访问 `awsdatacatalog` 数据库，您必须使用身份验证方法**使用您的 IAM 身份的临时凭证**。有关此身份验证方法的更多信息，请参阅[连接到 Amazon Redshift 数据库](query-editor-v2-connecting.md)。您的查询编辑器 v2 管理员可能需要配置账户的**账户设置**，才能在连接窗口中显示此身份验证方法。
   + 要从工作组访问 `awsdatacatalog` 数据库，必须使用身份验证方法**联合用户**。有关此身份验证方法的更多信息，请参阅[连接到 Amazon Redshift 数据库](query-editor-v2-connecting.md)。

1. 通过授予的权限，您可以使用 IAM 身份对您的 AWS Glue Data Catalog 运行 SQL。

连接后，您可以使用查询编辑器 v2 查询在 AWS Glue Data Catalog 中编目的数据。在查询编辑器 v2 树视图窗格上，选择集群或工作组和 `awsdatacatalog` 数据库。在编辑器或笔记本窗格中，确认选择了正确的集群或工作组。选择的数据库应该是初始 Amazon Redshift 数据库，例如 `dev`。有关编写查询的信息，请参阅[使用 Amazon Redshift 编写查询](query-editor-v2-query-run.md)和[Amazon Redshift 中的笔记本笔记本](query-editor-v2-notebooks.md)。预留名为 `awsdatacatalog` 的数据库，用于引用您账户中的外部数据目录数据库。对 `awsdatacatalog` 数据库的查询只能是只读的。使用由三部分组成的表示法来引用 SELECT 语句中的表。其中第一部分是数据库名称，第二部分是 AWS Glue 数据库名称，第三部分是 AWS Glue 表名称。

```
SELECT * FROM awsdatacatalog.<aws-glue-db-name>.<aws-glue-table-name>;
```

您可以执行各种场景来读取 AWS Glue Data Catalog 数据并填充 Amazon Redshift 表。

以下示例 SQL 联接了在 AWS Glue 中定义的两个表。

```
SELECT pn.emp_id, alias, role, project_name 
FROM "awsdatacatalog"."empl_db"."project_name_table" pn, 
"awsdatacatalog"."empl_db"."project_alias_table" pa
WHERE pn.emp_id = pa.emp_id;
```

以下示例 SQL 创建了一个 Amazon Redshift 表，并使用来自两个 AWS Glue 表联接的数据填充该表。

```
CREATE TABLE dev.public.glue AS
SELECT pn.emp_id, alias, role, project_name 
FROM "awsdatacatalog"."empl_db"."project_name_table" pn, 
"awsdatacatalog"."empl_db"."project_alias_table" pa
WHERE pn.emp_id = pa.emp_id;
```

## 查询 Amazon S3 表（预览版）
<a name="query-editor-v2-glue-s3-tables"></a>

可以使用查询编辑器 V2 查询挂载到 AWS Glue Data Catalog 的 Amazon S3 表目录中保存的数据。Amazon S3 表目录在创建时挂载到 AWS Glue Data Catalog，并自动以外部数据库的形式出现在相同 AWS 区域中同一个账户下的所有预置集群和无服务器工作组上。有关使用 Amazon Redshift 访问 Amazon S3 表的更多信息，请参阅《Amazon Simple Storage Service 用户指南》中的 [Accessing Amazon S3 tables with Amazon Redshift](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-tables-integrating-redshift.html)。