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

다음 문은 EVENTID 열에 정렬되어 있는 수신 데이터에서 다른 키 열에 EVENT 테이블을 다시 배포하고 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