查询 Amazon Glue Data Catalog - Amazon Athena
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

查询 Amazon Glue Data Catalog

由于Amazon Glue Data Catalog被许多人使用Amazon服务作为其中央元数据存储库,您可能需要查询数据目录元数据。为此,您可以在 Athena 中使用 SQL 查询。您可以使用 Athena 查询Amazon Glue目录元数据,如数据库、表、分区和列等。

注意

您可以使用单独的配置单元DDL 命令从 Athena 中提取特定数据库、表、视图、分区和列的元数据信息,但输出采用非表格式。

获取权限Amazon Glue目录元数据,请查询information_schema数据库在 Athena 后端。本主题中的示例查询显示如何使用 Athena 查询Amazon Glue常用案例的目录元数据。

重要

不能使用 CREATE VIEWinformation_schema 数据库上创建视图。

列出数据库并搜索指定的数据库

本节中的示例演示如何按模式名称列出元数据中的数据库。

例 — 列出数据库

以下示例查询列出 information_schema.schemata 表中的数据库。

SELECT schema_name FROM information_schema.schemata LIMIT 10;

下表显示了示例结果。

6 alb-databas1
7 alb_original_cust
8 alblogsdatabase
9 athena_db_test
10 athena_ddl_db

例 — 搜索指定的数据库

在以下示例查询中,rdspostgresql 是示例数据库。

SELECT schema_name FROM information_schema.schemata WHERE schema_name = 'rdspostgresql'

下表显示了示例结果。

schema_name
1 rdspostgresql

列出指定数据库中的表并按名称搜索表

要列出表的元数据,您可以按表架构或表名进行查询。

例 — 按架构列出表

以下查询列出了使用 rdspostgresql 表架构的表。

SELECT table_schema, table_name, table_type FROM information_schema.tables WHERE table_schema = 'rdspostgresql'

下图显示了一个示例结果。

table_schema table_name table_type
1 rdspostgresql rdspostgresqldb1_public_account BASE TABLE

例 — 按名称搜索表

以下查询获取表 athena1 的元数据信息。

SELECT table_schema, table_name, table_type FROM information_schema.tables WHERE table_name = 'athena1'

下图显示了一个示例结果。

table_schema table_name table_type
1 default athena1 BASE TABLE

列出特定表的分区

您可以使用SHOW PARTITIONS table_name列出指定表的分区,如以下示例所示。

SHOW PARTITIONS cloudtrail_logs_test2

您还可以使用元数据查询列出特定表的分区号和分区值。您可以使用的语法取决于 Athena 引擎版本。

例 — 查询分区以搜索 Athena 引擎版本 2 中的表

以下示例查询列出了表的分区cloudtrail_logs_test2使用 Athena 引擎版本 2.

SELECT * FROM default."cloudtrail_logs_test2$partitions" ORDER BY partition_number

下表显示了示例结果。

table_catalog table_schema table_name 个月 day
1 awsdatacatalog default 云跟踪日志 _ 测试 2 2020 08 10
2 awsdatacatalog default 云跟踪日志 _ 测试 2 2020 08 11
3 awsdatacatalog default 云跟踪日志 _ 测试 2 2020 08 12

例 — 查询分区以搜索 Athena 引擎版本 1 中的表

以下示例查询列出了表的分区cloudtrail_logs_test2使用 Athena 引擎版本 1.

SELECT * FROM information_schema.__internal_partitions__ WHERE table_schema = 'default' AND table_name = 'cloudtrail_logs_test2' ORDER BY partition_number

下表显示了示例结果。

table_catalog table_schema table_name partition_number partition_key partition_value
1 awsdatacatalog default 云跟踪日志 _ 测试 2 1 2018
2 awsdatacatalog default 云跟踪日志 _ 测试 2 1 个月 09
3 awsdatacatalog default 云跟踪日志 _ 测试 2 1 day 30

列出或搜索指定表或视图的列

您可以列出表的所有列、视图的所有列,或者在指定的数据库和表中按名称搜索列。

要列出列,请使用SELECT *查询。在FROM子句,指定information_schema.columns。在WHERE子句,请使用table_schema='database_name'以指定数据库,table_name = 'table_name'指定包含要列出的列的表或视图。

例 — 列出指定表的所有列

以下示例查询列出了 rdspostgresqldb1_public_account 表的所有列。

SELECT * FROM information_schema.columns WHERE table_schema = 'rdspostgresql' AND table_name = 'rdspostgresqldb1_public_account'

下表显示了示例结果。

table_catalog table_schema table_name column_name ordinal_position column_default is_nullable data_type comment extra_info
1 awsdatacatalog rdspostgresql rdspostgresqldb1_public_account 密码 1 varchar
2 awsdatacatalog rdspostgresql rdspostgresqldb1_public_account user_id 2 integer
3 awsdatacatalog rdspostgresql rdspostgresqldb1_public_account created_on 3 timestamp
4 awsdatacatalog rdspostgresql rdspostgresqldb1_public_account last_login 4 timestamp
5 awsdatacatalog rdspostgresql rdspostgresqldb1_public_account email 5 varchar
6 awsdatacatalog rdspostgresql rdspostgresqldb1_public_account username 6 varchar

例 — 列出指定视图的列

以下示例查询列出了 default 数据库中用于 arrayview 视图的所有列。

SELECT * FROM information_schema.columns WHERE table_schema = 'default' AND table_name = 'arrayview'

下表显示了示例结果。

table_catalog table_schema table_name column_name ordinal_position column_default is_nullable data_type comment extra_info
1 awsdatacatalog default arrayview searchdate 1 varchar
2 awsdatacatalog default arrayview sid 2 varchar
3 awsdatacatalog default arrayview btid 3 varchar
4 awsdatacatalog default arrayview p 4 varchar
5 awsdatacatalog default arrayview infantprice 5 varchar
6 awsdatacatalog default arrayview sump 6 varchar
7 awsdatacatalog default arrayview journeymaparray 7 array(varchar)

例 — 在指定的数据库和表中按名称搜索列

以下示例查询在 default 数据库的 arrayview 视图中搜索 sid 列的元数据。

SELECT * FROM information_schema.columns WHERE table_schema = 'default' AND table_name = 'arrayview' AND column_name='sid'

下图显示了一个示例结果。

table_catalog table_schema table_name column_name ordinal_position column_default is_nullable data_type comment extra_info
1 awsdatacatalog default arrayview sid 2 varchar