CTAS の例 - Amazon Redshift

CTAS の例

次の例では、EVENT テーブルに対して EVENT_BACKUP というテーブルを作成します。

create table event_backup as select * from event;

結果のテーブルは、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

次のコマンドでは、EVENT テーブルから 4 つの列を選択して、EVENTDISTSORT という新しいテーブルを作成します。新しいテーブルは EVENTID によって分散され、EVENTID と DATEID によってソートされます。

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

結果は次のようになります。

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

分散キーとソートキーの列名を使用することで、まったく同じテーブルを作成できます。次に例を示します。

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

次のステートメントは、テーブルに均等に分配適用されますが、明示的なソートキーを定義しません。

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

EVEN 分散は新しいテーブルで指定されるため、このテーブルは EVENT テーブル (EVENTID) からソートキーを継承しません。新しいテーブルにはソートキーと分散キーがありません。

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

次のステートメントでは、均等分散を適用し、ソートキーを定義します。

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

結果のテーブルにはソートキーがありますが、分散キーはありません。

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

次のステートメントでは、受信データに基づいて別のキー列で EVENT テーブルを再分散します。データは EVENTID 列に基づいてソートされており、SORTKEY 列は定義されません。そのため、テーブルはソートされません。

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

結果は次のようになります。

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