

 Amazon Redshift ne prendra plus en charge la création de nouveaux Python à UDFs partir du patch 198. UDFs Le Python existant continuera de fonctionner jusqu'au 30 juin 2026. Pour plus d’informations, consultez le [ billet de blog ](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/). 

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Interroger les tables et les vues système
<a name="t_querying_redshift_system_tables"></a>

Outre les tables que vous créez, votre entrepôt de données contient un certain nombre de tables et de vues système. Ces tables et vues système contiennent des informations sur votre installation et sur les différents processus et requêtes qui s’exécutent sur le système. Vous pouvez interroger les tables et les vues système pour recueillir les informations sur votre base de données. Pour plus d’informations, consultez [Informations de référence sur les tables et les vues système](https://docs.aws.amazon.com/redshift/latest/dg/cm_chap_system-tables.html) dans le *Guide du développeur de base de données Amazon Redshift*. La description de chaque table ou vue indique si une table est visible par tous les utilisateurs ou par les super-utilisateurs uniquement. Connectez-vous en tant que super-utilisateur pour interroger les tables visibles uniquement des super-utilisateurs. 

## Afficher la liste des noms de table
<a name="t_querying_redshift_system_tables-view-a-list-of-table-names"></a>

Pour afficher la liste de toutes les tables d’un schéma, vous pouvez interroger la table catalogue système PG\$1TABLE\$1DEF. Vous pouvez d’abord examiner le paramétrage de `search_path`.

```
SHOW search_path;
```

Le résultat devrait être similaire à ce qui suit :

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

L’exemple suivant ajoute le schéma `SALES` au chemin de recherche et affiche toutes les tables du schéma `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
```

L’exemple suivant illustre une liste de toutes les tables appelées `DEMO` dans tous les schémas de la base de données actuelle.

```
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
```

Pour plus d’informations, consultez [PG\$1TABLE\$1DEF](https://docs.aws.amazon.com/redshift/latest/dg/r_PG_TABLE_DEF.html).

Vous pouvez également utiliser Amazon Redshift Query Editor V2 pour afficher toutes les tables d’un schéma spécifié en choisissant d’abord une base de données à laquelle vous souhaitez vous connecter.

## Afficher les utilisateurs
<a name="t_querying_redshift_system_tables-view-database-users"></a>

Vous pouvez interroger la table catalogue PG\$1USER pour afficher la liste de tous les utilisateurs, ainsi que l’ID utilisateur (USESYSID) et les privilèges utilisateur. 

```
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     | ******** |          |
```

Le nom d’utilisateur `rdsdb` est utilisé en interne par Amazon Redshift pour effectuer les tâches habituelles d’administration et de maintenance. Vous pouvez filtrer votre requête pour afficher uniquement les noms d’utilisateur définis par l’utilisateur en ajoutant `where usesysid > 1` à votre instruction 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     | ******** |          |
```

## Afficher les requêtes récentes
<a name="t_querying_redshift_system_tables-view-recent-queries"></a>

Dans l’exemple précédent, l’ID utilisateur (user\$1id) pour `adminuser` est 100. Pour afficher les quatre requêtes les plus récentes exécutées par `adminuser`, vous pouvez interroger la vue SYS\$1QUERY\$1HISTORY. 

Vous pouvez utiliser cette vue pour trouver l’ID de requête (query\$1id) ou l’ID de processus (session\$1id) d’une requête récemment exécutée. Vous pouvez également l’utiliser pour connaître le temps mis par une requête pour s’exécuter. SYS\$1QUERY\$1HISTORY inclut les 4 000 premiers caractères de la chaîne de requête (query\$1text) pour vous aider à localiser une requête spécifique. Utilisez la clause LIMIT avec votre instruction SELECT pour limiter les résultats. 

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

Le résultat ressemble à ce qui suit. 

```
 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);
```

## Déterminer l’ID de session d’une requête en cours d’exécution
<a name="determine_pid"></a>

Vous devrez peut-être spécifier l’ID de session (ID de processus) associé à une requête pour récupérer les informations de la table système sur cette requête. Il se peut que vous ayez besoin de trouver l’ID de session d’une requête qui est toujours en cours d’exécution. Par exemple, vous avez besoin de l’ID de session si vous devez annuler une requête qui prend trop de temps pour s’exécuter sur un cluster alloué. Vous pouvez interroger la table système STV\$1RECENTS pour obtenir une liste des sessions IDs pour exécuter des requêtes, ainsi que la chaîne de requête correspondante. Si votre requête retourne plusieurs sessions, vous pouvez examiner le texte de la requête pour déterminer l’ID de session dont vous avez besoin.

Pour déterminer l’ID de session d’une requête en cours d’exécution, exécutez l’instruction SELECT suivante.

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