

# Consultar o AWS Glue Data Catalog
<a name="querying-glue-catalog"></a>

Como o AWS Glue Data Catalog é usado por muitos Serviços da AWS como repositório central de metadados, você pode consultar metadados do catálogo de dados. Para fazer isso, use as consultas SQL no Athena. Você pode usar o Athena para consultar os metadados do catálogo do AWS Glue, como bancos de dados, tabelas, partições e colunas.

Para acessar os metadados do catálogo do AWS Glue, consulte o banco de dados `information_schema` no backend do Athena. As consultas de exemplo neste tópico mostram como usar o Athena para consultar os metadados do catálogo do AWS Glue em casos de uso comuns.

## Considerações e limitações
<a name="querying-glue-catalog-considerations-limitations"></a>
+ Em vez de consultar o banco de dados `information_schema`, é possível usar [comandos DDL](ddl-reference.md) individuais do Apache Hive para extrair informações de metadados para bancos de dados, tabelas, exibições, partições e colunas específicos do Athena. No entanto, a saída está em um formato não tabular.
+ As consultas de `information_schema` apresentam melhor performance se você tiver uma quantidade pequena a moderada de metadados do AWS Glue. Pode haver erros se você tiver uma grande quantidade de metadados.
+ Não é possível usar `CREATE VIEW` para criar uma exibição no banco de dados `information_schema`. 

**Topics**
+ [Considerações e limitações](#querying-glue-catalog-considerations-limitations)
+ [Listar bancos de dados e pesquisar em um banco de dados especificado](querying-glue-catalog-querying-available-databases-including-rdbms.md)
+ [Listar tabelas em um banco de dados especificado e pesquisar uma tabela por nome](querying-glue-catalog-listing-tables.md)
+ [Listar partições de uma tabela específica](querying-glue-catalog-listing-partitions.md)
+ [Listar ou pesquisar colunas de uma tabela ou visualização especificada](querying-glue-catalog-listing-columns.md)
+ [Listar colunas que tabelas específicas têm em comum](querying-glue-catalog-listing-columns-in-common.md)
+ [Listar todas as colunas de todas as tabelas](querying-glue-catalog-listing-all-columns-for-all-tables.md)

# Listar bancos de dados e pesquisar em um banco de dados especificado
<a name="querying-glue-catalog-querying-available-databases-including-rdbms"></a>

Os exemplos nesta seção mostram como listar os bancos de dados em metadados por nome de esquema.

**Example – Listar bancos de dados**  
A consulta de exemplo a seguir lista os bancos de dados da tabela `information_schema.schemata`.  

```
SELECT schema_name
FROM   information_schema.schemata
LIMIT  10;
```
A tabela a seguir exibe os resultados do exemplo.  


****  

|  |  | 
| --- |--- |
| 6 | alb-databas1 | 
| 7 | alb\$1original\$1cust | 
| 8 | alblogsdatabase | 
| 9 | athena\$1db\$1test | 
| 10 | athena\$1ddl\$1db | 

**Example – Pesquisar em um banco de dados especificado**  
Na consulta de exemplo a seguir, `rdspostgresql` é um banco de dados de exemplo.  

```
SELECT schema_name
FROM   information_schema.schemata
WHERE  schema_name = 'rdspostgresql'
```
A tabela a seguir exibe os resultados do exemplo.  


****  

|  | schema\$1name | 
| --- | --- | 
| 1 | rdspostgresql | 

# Listar tabelas em um banco de dados especificado e pesquisar uma tabela por nome
<a name="querying-glue-catalog-listing-tables"></a>

Para listar os metadados de tabelas, você pode consultar um esquema ou nome de tabela.

**Example – Listar tabelas por esquema**  
A consulta a seguir lista tabelas que usam o esquema de tabela `rdspostgresql`.  

```
SELECT table_schema,
       table_name,
       table_type
FROM   information_schema.tables
WHERE  table_schema = 'rdspostgresql'
```
A tabela a seguir mostra um exemplo de resultado.  


****  

|  | table\$1schema | table\$1name | table\$1type | 
| --- | --- | --- | --- | 
| 1 | rdspostgresql | rdspostgresqldb1\$1public\$1account | BASE TABLE | 

**Example – Pesquisar uma tabela por nome**  
A consulta a seguir obtém informações de metadados para a tabela `athena1`.  

```
SELECT table_schema,
       table_name,
       table_type
FROM   information_schema.tables
WHERE  table_name = 'athena1'
```
A tabela a seguir mostra um exemplo de resultado.  


****  

|  | table\$1schema | table\$1name | table\$1type | 
| --- | --- | --- | --- | 
| 1 | padrão | athena1 | BASE TABLE | 

# Listar partições de uma tabela específica
<a name="querying-glue-catalog-listing-partitions"></a>

Você pode usar `SHOW PARTITIONS table_name` para listar as partições de uma tabela especificada, como no exemplo a seguir.

```
SHOW PARTITIONS cloudtrail_logs_test2
```

Você também pode usar uma consulta de metadados `$partitions` para listar os números e os valores de partição de uma tabela específica.

**Example — Consultar as partições de uma tabela usando a sintaxe \$1partitions**  
A consulta de exemplo a seguir lista as partições da tabela `cloudtrail_logs_test2` usando a sintaxe `$partitions`.  

```
SELECT * FROM default."cloudtrail_logs_test2$partitions" ORDER BY partition_number
```
A tabela a seguir exibe os resultados do exemplo.  


****  

|  | table\$1catalog | table\$1schema | table\$1name | Ano | Mês | Dia | 
| --- | --- | --- | --- | --- | --- | --- | 
| 1 | awsdatacatalog | padrão | cloudtrail\$1logs\$1test2 | 2020 | 08 | 10 | 
| 2 | awsdatacatalog | padrão | cloudtrail\$1logs\$1test2 | 2020 | 08 | 11 | 
| 3 | awsdatacatalog | padrão | cloudtrail\$1logs\$1test2 | 2020 | 08 | 12 | 

# Listar ou pesquisar colunas de uma tabela ou visualização especificada
<a name="querying-glue-catalog-listing-columns"></a>

Você pode listar todas as colunas de uma tabela, todas as colunas de uma exibição ou pesquisar uma coluna por nome em um banco de dados e tabela especificados.

Para listar as colunas, use uma consulta `SELECT *`. Na cláusula `FROM`, especifique `information_schema.columns`. Na cláusula `WHERE`, use `table_schema='database_name'` para especificar o banco de dados e `table_name = 'table_name'` para especificar a tabela ou a visualização que tem as colunas que você deseja listar.

**Example – Listar todas as colunas de uma tabela especificada**  
A consulta de exemplo a seguir lista todas as colunas da tabela `rdspostgresqldb1_public_account`.  

```
SELECT *
FROM   information_schema.columns
WHERE  table_schema = 'rdspostgresql'
       AND table_name = 'rdspostgresqldb1_public_account'
```
A tabela a seguir exibe os resultados do exemplo.  


****  

|  | table\$1catalog | table\$1schema | table\$1name | column\$1name | ordinal\$1position | column\$1default | is\$1nullable | data\$1type | comment | extra\$1info | 
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | 
| 1 | awsdatacatalog | rdspostgresql | rdspostgresqldb1\$1public\$1account | password | 1 |  | SIM | varchar |  |  | 
| 2 | awsdatacatalog | rdspostgresql | rdspostgresqldb1\$1public\$1account | user\$1id | 2 |  | SIM | integer |  |  | 
| 3 | awsdatacatalog | rdspostgresql | rdspostgresqldb1\$1public\$1account | created\$1on | 3 |  | SIM | timestamp |  |  | 
| 4 | awsdatacatalog | rdspostgresql | rdspostgresqldb1\$1public\$1account | last\$1login | 4 |  | SIM | timestamp |  |  | 
| 5 | awsdatacatalog | rdspostgresql | rdspostgresqldb1\$1public\$1account | email | 5 |  | SIM | varchar |  |  | 
| 6 | awsdatacatalog | rdspostgresql | rdspostgresqldb1\$1public\$1account | username | 6 |  | SIM | varchar |  |  | 

**Example – Listar as colunas de uma visualização especificada**  
A consulta de exemplo a seguir lista todas as colunas no banco de dados `default` para a exibição `arrayview`.  

```
SELECT *
FROM   information_schema.columns
WHERE  table_schema = 'default'
       AND table_name = 'arrayview'
```
A tabela a seguir exibe os resultados do exemplo.  


****  

|  | table\$1catalog | table\$1schema | table\$1name | column\$1name | ordinal\$1position | column\$1default | is\$1nullable | data\$1type | comment | extra\$1info | 
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | 
| 1 | awsdatacatalog | padrão | arrayview | searchdate | 1 |  | SIM | varchar |  |  | 
| 2 | awsdatacatalog | padrão | arrayview | sid | 2 |  | SIM | varchar |  |  | 
| 3 | awsdatacatalog | padrão | arrayview | btid | 3 |  | SIM | varchar |  |  | 
| 4 | awsdatacatalog | padrão | arrayview | p | 4 |  | SIM | varchar |  |  | 
| 5 | awsdatacatalog | padrão | arrayview | infantprice | 5 |  | SIM | varchar |  |  | 
| 6 | awsdatacatalog | padrão | arrayview | sump | 6 |  | SIM | varchar |  |  | 
| 7 | awsdatacatalog | padrão | arrayview | journeymaparray | 7 |  | SIM | array(varchar) |  |  | 

**Example – Pesquisar uma coluna por nome em uma tabela e um banco de dados especificados**  
A consulta de exemplo a seguir procura metadados para a coluna `sid` na exibição `arrayview` do banco de dados `default`.  

```
SELECT *
FROM   information_schema.columns
WHERE  table_schema = 'default'
       AND table_name = 'arrayview' 
       AND column_name='sid'
```
A tabela a seguir mostra um exemplo de resultado.  


****  

|  | table\$1catalog | table\$1schema | table\$1name | column\$1name | ordinal\$1position | column\$1default | is\$1nullable | data\$1type | comment | extra\$1info | 
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | 
| 1 | awsdatacatalog | padrão | arrayview | sid | 2 |  | SIM | varchar |  |  | 

# Listar colunas que tabelas específicas têm em comum
<a name="querying-glue-catalog-listing-columns-in-common"></a>

É possível listar as colunas que tabelas específicas têm em comum em um banco de dados.
+ Use a sintaxe `SELECT column_name FROM information_schema.columns`.
+ Para a cláusula `WHERE`, use a sintaxe `WHERE table_name IN ('table1', 'table2')`.

**Example : listagem de colunas comuns para duas tabelas no mesmo banco de dados**  
O exemplo de consulta a seguir lista as colunas que as tabelas `table1` e `table2` têm em comum.  

```
SELECT column_name
FROM information_schema.columns
WHERE table_name IN ('table1', 'table2')
GROUP BY column_name
HAVING COUNT(*) > 1;
```

# Listar todas as colunas de todas as tabelas
<a name="querying-glue-catalog-listing-all-columns-for-all-tables"></a>

É possível listar todas as colunas de todas as tabelas no `AwsDataCatalog` ou para todas as tabelas em um banco de dados específico no `AwsDataCatalog`.
+ Para listar todas as colunas de todos os bancos de dados no `AwsDataCatalog`, use a consulta `SELECT * FROM information_schema.columns`.
+ Para restringir os resultados a um banco de dados específico, use `table_schema='database_name'` na cláusula `WHERE`.

**Example — Listagem de todas as colunas de todas as tabelas em um banco de dados específico**  
A consulta de exemplo a seguir lista todas as colunas de todas as tabelas no banco de dados `webdata`.  

```
SELECT * FROM information_schema.columns WHERE table_schema = 'webdata'            
```