CREATE TABLE AS - Amazon Redshift

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.

CREATE TABLE AS

Crée une table basée sur une requête. Le propriétaire de cette table est l’utilisateur qui émet la commande.

La nouvelle table est chargée avec les données définies par la requête dans la commande. Les colonnes ont des noms et des types de données associés aux colonnes de sortie de la requête. La commande CREATE TABLE AS (CTAS) crée une table et évalue la requête pour charger la nouvelle table.

Syntaxe

CREATE [ [ LOCAL ] { TEMPORARY | TEMP } ] TABLE table_name [ ( column_name [, ... ] ) ] [ BACKUP { YES | NO } ] [ table_attributes ] AS query where table_attributes are: [ DISTSTYLE { AUTO | EVEN | ALL | KEY } ] [ DISTKEY( distkey_identifier ) ] [ [ COMPOUND | INTERLEAVED ] SORTKEY( column_name [, ...] ) ]

Paramètres

LOCAL

Même si ce mot-clé facultatif est accepté dans l’instruction, il n’a aucun effet dans Amazon Redshift.

TEMPORARY | TEMP

Crée une table temporaire. Une table temporaire est automatiquement supprimée à la fin de la séance dans laquelle elle a été créée.

table_name

Nom de la table à créer.

Important

Si vous spécifiez un nom de table qui commence par « # », la table est créée comme table temporaire. Par exemple :

create table #newtable (id) as select * from oldtable;

La longueur maximale d’un nom de table est de 127 octets ; les noms plus longs sont tronqués à 127 octets. Amazon Redshift applique un quota correspondant au nombre de tables par cluster et par type de nœud. Le nom de la table peut être qualifié avec le nom de la base de données et le nom du schéma, comme illustré dans le tableau ci-dessous.

create table tickit.public.test (c1) as select * from oldtable;

Dans cet exemple, tickit est le nom de la base de données et public le nom du schéma. Si la base de données ou le schéma n’existe pas, l’instruction renvoie une erreur.

Si un nom de schéma est donné, la nouvelle table est créée dans ce schéma (en supposant que le créateur ait accès au schéma). Le nom de la table doit être un nom unique pour ce schéma. Si aucun schéma n’est spécifié, la table est créée à l’aide du schéma de base de données actuel. Si vous créez une table temporaire, vous ne pouvez pas spécifier un nom de schéma, car les tables temporaires existent dans un schéma spécial.

Plusieurs tables temporaires avec le même nom sont autorisées à exister en même temps dans la base de données même si elles sont créées dans des séances distinctes. Ces tables sont affectées à des schémas différents.

column_name

Nom d’une colonne de la nouvelle table. Si aucun nom de la colonne n’est fourni, les noms de colonnes sont extraits des noms de colonnes de sortie de la requête. Les noms de colonne par défaut sont utilisés pour les expressions. Pour plus d’informations sur les noms valides, consultez Noms et identificateurs.

BACKUP { YES | NO }

Clause qui spécifie si la table doit être incluse dans les instantanés de cluster automatiques et manuels. Pour les tables, telles que les tables intermédiaires, qui ne contiennent pas de données critiques, spécifiez BACKUP NO pour économiser du temps de traitement lorsque la création d’instantanés et la restauration à partir d’instantanés, et pour réduire l’espace de stockage sur Amazon Simple Storage Service. Comme le paramètre BACKUP NO n’a aucun effet sur la réplication automatique des données sur d’autres nœuds au sein du cluster, les tables pour lesquelles BACKUP NO est spécifié sont restaurées en cas de défaillance de nœud. La valeur par défaut est BACKUP YES.

DISTSTYLE { AUTO | EVEN | KEY | ALL }

Définit le style de distribution des données pour l’ensemble de la table. Amazon Redshift répartit les lignes d’une table sur les nœuds de calcul selon le style de distribution spécifié pour la table. La valeur par défaut est DISTSTYLE AUTO.

Le style de distribution que vous sélectionnez pour les tables affecte les performances globales de votre base de données. Pour plus d'informations, consultez Utilisation des styles de distribution de données.

  • AUTO : Amazon Redshift attribue un style de distribution optimal basé sur les données de table. Pour consulter le style de distribution appliqué à une table, interrogez la table catalogue système PG_CLASS. Pour plus d'informations, consultez Affichage des styles de distribution.

  • EVEN : les données de la table sont réparties également entre les nœuds d’un cluster dans une distribution en tourniquet (round robin). Les ID de ligne sont utilisés pour déterminer la distribution et, approximativement, le même nombre de lignes est réparti sur chaque nœud. Il s’agit de la méthode de distribution par défaut.

  • KEY : les données sont réparties selon les valeurs de la colonne DISTKEY. Lorsque vous définissez les colonnes de jointure des tables de jointure comme clés de distribution, les lignes de jointure des deux tables sont colocalisées sur les nœuds de calcul. Lorsque les données sont colocalisées, l’optimiseur peut effectuer les jointures plus efficacement. Si vous spécifiez DISTSTYLE KEY, vous devez nommer une colonne DISTKEY.

  • ALL : une copie de la table complète est distribuée sur chaque nœud. Ce style de distribution garantit que toutes les lignes obligatoires pour une jointure sont disponibles sur chaque nœud, mais il multiplie les besoins de stockage et augmente les temps de charge et de maintenance de la table. Une distribution ALL peut améliorer le temps d’exécution lorsqu’elle est utilisée avec certaines tables de dimension où la distribution KEY ne convient pas, mais les améliorations des performances doivent être pondérées par rapport aux coûts de maintenance.

DISTKEY (colonne)

Spécifie un nom de la colonne ou un numéro positionnel pour la clé de distribution. Utilisez le nom spécifié dans la liste facultative de colonnes de la table ou de la liste de sélection de la requête. Sinon, utilisez un numéro positionnel, où la première colonne sélectionnée est 1, la deuxième 2 et ainsi de suite. Une seule colonne d’une table peut être la clé de distribution.

  • Si vous déclarez une colonne comme colonne DISTKEY, DISTSTYLE doit être défini sur KEY ou ne pas être défini.

  • Si vous ne déclarez pas une colonne DISTKEY, vous pouvez définir DISTSTYLE sur EVEN.

  • Si vous ne spécifiez pas DISTKEY ou DISTSTYLE, CTAS détermine le style de distribution de la nouvelle table basée sur le plan de requête de la clause SELECT. Pour plus d'informations, consultez Héritage des attributs de colonne et de table.

Vous pouvez définir la même colonne comme clé de distribution et clé de tri ; cette approche a tendance à accélérer les jointures lorsque la colonne en question est une colonne de jointure de la requête.

[ COMPOUND | INTERLEAVED ] SORTKEY ( nom_colonne [, ... ] )

Spécifie une ou plusieurs clés de tri pour la table. Lorsque les données sont chargées dans la table, les données sont triées sur les colonnes désignées comme clés de tri.

Vous pouvez spécifier le cas échéant le style de tri COMPOUND ou INTERLEAVED. La valeur par défaut est COMPOUND. Pour plus d'informations, consultez Utilisation des clés de tri.

Vous pouvez définir un maximum de 400 colonnes COMPOUND SORTKEY ou de 8 colonnes INTERLEAVED SORTKEY par table.

Si vous ne spécifiez pas SORTKEY, CTAS détermine les clés de tri de la nouvelle table basées sur le plan de requête de la clause SELECT. Pour plus d'informations, consultez Héritage des attributs de colonne et de table.

COMPOUND

Spécifie que les données sont triées à l’aide d’une clé composée, constituée de toutes les colonnes affichées, dans leur ordre d’apparition. Une clé de tri composée est surtout utile lorsqu’une requête analyse les lignes selon l’ordre des colonnes de tri. Les avantages en termes de performances d’un tri avec une clé composée diminuent lorsque les requêtes reposent sur des colonnes de tri secondaires. Vous pouvez définir un maximum de 400 colonnes COMPOUND SORTKEY par table.

INTERLEAVED

Spécifie que les données sont triées à l’aide d’une clé de tri entrelacée. Un maximum de huit colonnes peut être spécifié pour une clé de tri entrelacée.

Comme un tri entrelacé confère un poids égal à chaque colonne, ou sous-ensemble de colonnes, de la clé de tri, les requêtes ne dépendent pas de l’ordre des colonnes de la clé de tri. Quand une requête utilise une ou plusieurs colonnes de tri secondaires, le tri entrelacé améliore les performances des requêtes de façon significative. Le tri entrelacé entraîne un léger coût de traitement pour les opérations de chargement de données et les opérations VACUUM.

AS requête

N’importe quelle requête (instruction SELECT) qu’Amazon Redshift prend en charge.