

 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.

# Notes d’utilisation
<a name="r_CREATE_EXTERNAL_TABLE_usage"></a>

Cette rubrique contient des notes d’utilisation pour [CREATE EXTERNAL TABLE](r_CREATE_EXTERNAL_TABLE.md). Vous ne pouvez pas afficher les détails des tables Amazon Redshift Spectrum en utilisant les mêmes ressources que pour les tables Amazon Redshift standard, telles que [PG\_TABLE\_DEF](r_PG_TABLE_DEF.md), [STV\_TBL\_PERM](r_STV_TBL_PERM.md), PG\_CLASS ou information\_schema. Si votre outil de Business Intelligence ou d’analyse ne reconnaît pas les tables externes Redshift Spectrum, configurez votre application de façon à interroger [SVV\_EXTERNAL\_TABLES](r_SVV_EXTERNAL_TABLES.md) et [SVV\_EXTERNAL\_COLUMNS](r_SVV_EXTERNAL_COLUMNS.md).

## CREATE EXTERNAL TABLE AS
<a name="r_CETAS"></a>

Dans certains cas, vous pouvez exécuter la commande CREATE EXTERNAL TABLE AS sur un catalogue de AWS Glue données, un catalogue AWS Lake Formation externe ou un métastore Apache Hive. Dans ce cas, vous utilisez un rôle Gestion des identités et des accès AWS (IAM) pour créer le schéma externe. Ce rôle IAM doit disposer d’autorisations de lecture et d’écriture sur Amazon S3. 

Si vous utilisez un catalogue Lake Formation, le rôle IAM doit être autorisé à créer une table dans le catalogue. Dans ce cas, il doit également disposer de l’autorisation d’emplacement du lac de données sur le chemin Amazon S3 cible. Ce rôle IAM devient le propriétaire de la nouvelle table AWS Lake Formation .

Pour vous assurer que les noms de fichiers sont uniques, Amazon Redshift utilise le format suivant pour le nom de chaque fichier téléchargé dans Amazon S3 par défaut.

`{{<date>}}_{{<time>}}_{{<microseconds>}}_{{<query_id>}}_{{<slice-number>}}_part_{{<part-number>}}.{{<format>}}`.

 Par exemple : `20200303_004509_810669_1007_0001_part_00.parquet`.

Tenez compte des éléments suivants lors de l’exécution de la commande CREATE EXTERNAL TABLE AS :
+ L’emplacement Amazon S3 doit être vide.
+ Amazon Redshift prend uniquement en charge les formats PARQUET et TEXTFILE lors de l’utilisation de la clause STORED AS.
+ Vous n’avez pas besoin de définir une liste de définitions de colonne. Les noms de colonnes et les types de données de colonne de la nouvelle table externe sont dérivés directement de la requête SELECT.
+ Vous n’avez pas besoin de définir le type de données de la colonne de partition dans la clause PARTITIONED BY. Si vous spécifiez une clé de partition, le nom de cette colonne doit exister dans le résultat de la requête SELECT. Lorsque vous avez plusieurs colonnes de partition, leur ordre dans la requête SELECT n’a pas d’importance. Amazon Redshift utilise l’ordre défini dans la clause PARTITIONED BY pour créer la table externe.
+ Amazon Redshift partitionne automatiquement les fichiers de sortie dans des dossiers de partition en fonction des valeurs de clé de partition. Par défaut, Amazon Redshift supprime les colonnes de partition des fichiers de sortie.
+ La clause ’delimiter’ LINES TERMINATED BY n’est pas prise en charge.
+ La clause ’serde\_name’ ROW FORMAT SERDE n’est pas prise en charge.
+ L’utilisation de fichiers manifestes n’est pas prise en charge. Ainsi, vous ne pouvez pas définir la clause LOCATION sur un fichier manifeste dans Amazon S3.
+ Amazon Redshift met automatiquement à jour la propriété de table ’numRows’ à la fin de la commande.
+ La propriété de table ’compression\_type’ accepte uniquement ’none’ ou ’snappy’ pour le format de fichier PARQUET.
+ Amazon Redshift n’autorise pas la clause LIMIT dans la requête SELECT externe. Au lieu de cela, vous pouvez utiliser une clause LIMIT imbriquée.
+ Vous pouvez utiliser STL\_UNLOAD\_LOG pour suivre les fichiers écrits dans Amazon S3 par chaque opération CREATE EXTERNAL TABLE AS.

## Autorisations pour créer et interroger des table externes
<a name="r_CREATE_EXTERNAL_TABLE_usage-permissions"></a>

Pour créer des tables externes, vérifiez que vous êtes le propriétaire du schéma externe ou un superutilisateur. Pour transférer la propriété d’un schéma externe, utilisez [ALTER SCHEMA](r_ALTER_SCHEMA.md). L’exemple suivant remplace le propriétaire du schéma `spectrum_schema` par `newowner`.

```
alter schema spectrum_schema owner to newowner;
```

Pour exécuter une requête Redshift Spectrum, vous devez avoir les autorisations suivantes :
+ Autorisations d’utilisation du schéma 
+ Autorisation de créer des tables temporaires dans la base de données actuelle 

L’exemple suivant accorde l’autorisation d’utiliser le schéma `spectrum_schema` au groupe d’utilisateurs `spectrumusers`.

```
grant usage on schema spectrum_schema to group spectrumusers;
```

L’exemple suivant accorde une autorisation temporaire concernant la base de données `spectrumdb` au groupe d’utilisateurs `spectrumusers`. 

```
grant temp on database spectrumdb to group spectrumusers;
```

## Pseudocolonnes
<a name="r_CREATE_EXTERNAL_TABLE_usage-pseudocolumns"></a>

Par défaut, Amazon Redshift crée les tables externes avec les pseudo-colonnes *$path* et *$size*. Sélectionnez ces colonnes pour afficher le chemin d’accès aux fichiers de données sur Amazon S3 et la taille des fichiers de données de chaque ligne retournée par une requête. Les noms de colonne *$path* et *$size* doivent être délimités par des guillemets doubles. Une clause *SELECT \** ne renvoie pas de pseudo-colonnes. Vous devez inclure explicitement les noms de colonne *$path* et *$size* dans votre requête, comme l’illustre l’exemple suivant.

```
select "$path", "$size"
from spectrum.sales_part
where saledate = '2008-12-01';
```

Vous pouvez désactiver la création de pseudo-colonnes d’une séance en définissant le paramètre de configuration *spectrum\_enable\_pseudo\_columns* avec la valeur *false*. 

**Important**  
La sélection de *$size* ou *$path* entraîne des frais, car Redshift Spectrum analyse les fichiers de données dans Amazon S3 pour déterminer la taille du jeu de résultats. Pour plus d’informations, consultez la section [Tarification Amazon Redshift](https://aws.amazon.com/redshift/pricing/).

## Définition des options de gestion des données
<a name="r_CREATE_EXTERNAL_TABLE_usage-data-handling"></a>

Vous pouvez définir des paramètres de table pour spécifier la gestion des entrées pour les données interrogées dans les tables externes, notamment : 
+ Caractères excédentaires dans les colonnes contenant des données VARCHAR, CHAR et chaîne. Pour plus d’informations, consultez la propriété de table externe `surplus_char_handling`.
+ Caractères non valides dans les colonnes contenant des données VARCHAR, CHAR et chaîne. Pour plus d’informations, consultez la propriété de table externe `invalid_char_handling`.
+ Caractère de remplacement à utiliser lorsque vous spécifiez REPLACE pour la propriété de table externe `invalid_char_handling`.
+ Gestion des débordements de distribution dans les colonnes contenant des données entières et décimales. Pour plus d’informations, consultez la propriété de table externe `numeric_overflow_handling`.
+ Surplus\_bytes\_handling pour spécifier la gestion des entrées pour les octets excédentaires dans les colonnes contenant des données VARBYTE. Pour plus d’informations, consultez la propriété de table externe `surplus_bytes_handling`.