Exemples de CTAS - Amazon Redshift

Amazon Redshift ne prendra plus en charge la création de nouvelles fonctions Python définies par l’utilisateur à compter du 1er novembre 2025. Si vous souhaitez utiliser des fonctions Python définies par l’utilisateur, créez-les avant cette date. Les fonctions Python définies par l’utilisateur existantes continueront de fonctionner normalement. Pour plus d’informations, consultez le billet de blog .

Exemples de CTAS

L’exemple suivant crée une table appelée EVENT_BACKUP pour la table EVENT :

create table event_backup as select * from event;

La table résultante hérite les clés de distribution et les clés de tri de la table EVENT.

select "column", type, encoding, distkey, sortkey from pg_table_def where tablename = 'event_backup'; column | type | encoding | distkey | sortkey ----------+-----------------------------+----------+---------+-------- catid | smallint | none | false | 0 dateid | smallint | none | false | 1 eventid | integer | none | true | 0 eventname | character varying(200) | none | false | 0 starttime | timestamp without time zone | none | false | 0 venueid | smallint | none | false | 0

La commande suivante crée une table appelée EVENTDISTSORT en sélectionnant quatre colonnes de la table EVENT. La nouvelle table est distribuée sur EVENTID et triée sur EVENTID et DATEID :

create table eventdistsort distkey (1) sortkey (1,3) as select eventid, venueid, dateid, eventname from event;

Le résultat est le suivant :

select "column", type, encoding, distkey, sortkey from pg_table_def where tablename = 'eventdistsort'; column | type | encoding | distkey | sortkey ---------+------------------------+----------+---------+------- eventid | integer | none | t | 1 venueid | smallint | none | f | 0 dateid | smallint | none | f | 2 eventname | character varying(200)| none | f | 0

Vous pouvez créer exactement la même table à l’aide des noms de colonne pour les clés de tri et de distribution. Par exemple :

create table eventdistsort1 distkey (eventid) sortkey (eventid, dateid) as select eventid, venueid, dateid, eventname from event;

L’instruction suivante applique une distribution uniforme à la table, mais ne définit pas une clé de tri explicite :

create table eventdisteven diststyle even as select eventid, venueid, dateid, eventname from event;

La table n’hérite pas de la clé de tri de la table EVENT (EVENTID), car la distribution EVEN a été spécifiée pour la nouvelle table. La nouvelle table n’a ni clé de tri, ni clé de distribution.

select "column", type, encoding, distkey, sortkey from pg_table_def where tablename = 'eventdisteven'; column | type | encoding | distkey | sortkey ----------+------------------------+----------+---------+--------- eventid | integer | none | f | 0 venueid | smallint | none | f | 0 dateid | smallint | none | f | 0 eventname | character varying(200) | none | f | 0

L’instruction suivante applique une distribution uniforme et définit une clé de tri :

create table eventdistevensort diststyle even sortkey (venueid) as select eventid, venueid, dateid, eventname from event;

La table en résultant dispose d’une clé de tri, mais pas de clé de distribution.

select "column", type, encoding, distkey, sortkey from pg_table_def where tablename = 'eventdistevensort'; column | type | encoding | distkey | sortkey ----------+------------------------+----------+---------+------- eventid | integer | none | f | 0 venueid | smallint | none | f | 1 dateid | smallint | none | f | 0 eventname | character varying(200) | none | f | 0

L’instruction suivante répartit la table EVENT sur une autre colonne de clé à partir des données entrantes, qui sont triées sur la colonne EVENTID, et ne définit aucune colonne SORTKEY ; par conséquent, la table n’est pas triée.

create table venuedistevent distkey(venueid) as select * from event;

Le résultat est le suivant :

select "column", type, encoding, distkey, sortkey from pg_table_def where tablename = 'venuedistevent'; column | type | encoding | distkey | sortkey ----------+-----------------------------+----------+---------+------- eventid | integer | none | f | 0 venueid | smallint | none | t | 0 catid | smallint | none | f | 0 dateid | smallint | none | f | 0 eventname | character varying(200) | none | f | 0 starttime | timestamp without time zone | none | f | 0