

 O Amazon Redshift não permitirá mais a criação de UDFs do Python a partir do Patch 198. As UDFs do Python existentes continuarão a funcionar normalmente até 30 de junho de 2026. Para ter mais informações, consulte a [publicação de blog ](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/). 

# Consultar as visualizações e tabelas do sistema
<a name="t_querying_redshift_system_tables"></a>

Além das tabelas que você criou, o data warehouse contém uma série de tabelas e visualizações do sistema. Essas visualizações e tabelas contêm informações sobre a instalação e sobre várias consultas e processos que são executados no sistema. É possível consultar essas visualizações e tabelas do sistema para coletar informações sobre o banco de dados. Para ter mais informações, consulte [Referência de visualizações e tabelas do sistema](https://docs.aws.amazon.com/redshift/latest/dg/cm_chap_system-tables.html) no *Guia do desenvolvedor de banco de dados do Amazon Redshift*. A descrição de cada tabela ou visualização indica se uma tabela é visível para todos os usuários ou apenas para superusuários. Efetue login como superusuário para consultar tabelas que são visíveis apenas para superusuários. 

## Visualização de uma lista de nomes de tabelas
<a name="t_querying_redshift_system_tables-view-a-list-of-table-names"></a>

Para ver uma lista de todas as tabelas em um esquema, você pode consultar a tabela de catálogo do sistema PG\$1TABLE\$1DEF. Você pode primeiro examinar a configuração para `search_path`.

```
SHOW search_path;
```

O resultado deve ser semelhante ao seguinte:

```
  search_path
---------------
 $user, public
```

O exemplo a seguir inclui o esquema `SALES` para o caminho de pesquisa e mostra todas as tabelas do esquema `SALES`.

```
set search_path to '$user', 'public', 'sales';
                
SHOW search_path;

      search_path       
------------------------
 "$user", public, sales


select * from pg_table_def where schemaname = 'sales';

 schemaname | tablename |  column  |          type          | encoding | distkey | sortkey | notnull 
------------+-----------+----------+------------------------+----------+---------+---------+---------
 sales      | demo      | personid | integer                | az64     | f       |       0 | f
 sales      | demo      | city     | character varying(255) | lzo      | f       |       0 | f
```

O exemplo a seguir mostra uma lista de todas as tabelas chamadas `DEMO` em todos os esquemas do banco de dados atual.

```
set search_path to '$user', 'public', 'sales';
select * from pg_table_def where tablename = 'demo';

 schemaname | tablename |  column  |          type          | encoding | distkey | sortkey | notnull 
------------+-----------+----------+------------------------+----------+---------+---------+---------
 public     | demo      | personid | integer                | az64     | f       |       0 | f
 public     | demo      | city     | character varying(255) | lzo      | f       |       0 | f
 sales      | demo      | personid | integer                | az64     | f       |       0 | f
 sales      | demo      | city     | character varying(255) | lzo      | f       |       0 | f
```

Para obter mais informações, consulte [PG\$1TABLE\$1DEF](https://docs.aws.amazon.com/redshift/latest/dg/r_PG_TABLE_DEF.html).

Também é possível usar o Editor de Consultas do Amazon Redshift v2 para exibir todas as tabelas em um esquema especificado escolhendo primeiro um banco de dados ao qual você deseja se conectar.

## Visualização dos usuários
<a name="t_querying_redshift_system_tables-view-database-users"></a>

Você pode consultar o catálogo PG\$1USER para ver uma lista de todos os usuários, junto com o ID do usuário (USESYSID) e os privilégios do usuário. 

```
SELECT * FROM pg_user;

  usename   | usesysid | usecreatedb | usesuper | usecatupd |  passwd  | valuntil | useconfig
------------+----------+-------------+----------+-----------+----------+----------+-----------
 rdsdb      |        1 | true        | true     | true      | ******** | infinity |
 awsuser    |      100 | true        | true     | false     | ******** |          |
 guest      |      104 | true        | false    | false     | ******** |          |
```

O nome de usuário `rdsdb` é usado internamente pelo Amazon Redshift para realizar tarefas administrativas e de manutenção de rotina. Você pode filtrar sua consulta para mostrar apenas nomes de usuário definidos pelo usuário, adicionando `where usesysid > 1` à sua instrução SELECT.

```
SELECT * FROM pg_user WHERE usesysid > 1;

  usename   | usesysid | usecreatedb | usesuper | usecatupd |  passwd  | valuntil | useconfig
------------+----------+-------------+----------+-----------+----------+----------+-----------
 awsuser    |      100 | true        | true     | false     | ******** |          |
 guest      |      104 | true        | false    | false     | ******** |          |
```

## Visualização de consultas recentes
<a name="t_querying_redshift_system_tables-view-recent-queries"></a>

No exemplo anterior, o ID do usuário (user\$1id) para `adminuser` é 100. Para listar as quatro consultas mais recentes executadas por `adminuser`, consulte a visualização SYS\$1QUERY\$1HISTORY. 

É possível usar essa visualização para localizar o ID da consulta (QUERY) ou o ID do processo (session\$1id) para uma consulta executada recentemente. Você também pode usar esta visualização para verificar quanto tempo levou para uma consulta ser concluída. SYS\$1QUERY\$1HISTORY inclui os primeiros quatro mil caracteres da string de consulta (query\$1text) para ajudar você a localizar uma consulta específica. Use a cláusula LIMIT com a declaração SELECT para limitar os resultados. 

```
SELECT query_id, session_id, elapsed_time, query_text 
FROM sys_query_history
WHERE user_id = 100
ORDER BY start_time desc
LIMIT 4;
```

O resultado será semelhante ao seguinte: 

```
 query_id |  session_id  |  elapsed_time |   query_text
----------+--------------+---------------+----------------------------------------------------------------
 892      |    21046     |       55868   | SELECT query, pid, elapsed, substring from ...
 620      |    17635     |     1296265   | SELECT query, pid, elapsed, substring from ...
 610      |    17607     |       82555   | SELECT * from DEMO; 
 596      |    16762     |      226372   | INSERT INTO DEMO VALUES (100);
```

## Determinar o ID da sessão de uma consulta em execução
<a name="determine_pid"></a>

Para recuperar informações da tabela do sistema sobre uma consulta, pode ser necessário especificar o ID da sessão (ID do processo) associado a essa consulta. Ou pode ser necessário encontrar o ID da sessão de uma consulta que ainda esteja em execução. Por exemplo, você precisará do ID da sessão se houver necessidade de cancelar uma consulta que está demorando muito para ser executada em um cluster provisionado. É possível consultar a tabela do sistema STV\$1RECENTS para ter uma lista de IDs de sessão das consultas em execução, além da string da consulta correspondente. Se a consulta exibir várias sessões, examine o texto da consulta para determinar qual ID de sessão é necessário.

Para determinar o ID da sessão de uma consulta em execução, execute a declaração SELECT a seguir.

```
SELECT session_id, user_id, start_time, query_text
FROM sys_query_history
WHERE status='running';
```