CREATE TABLE AS
Cria uma nova tabela com base em uma consulta. O proprietário desta tabela é o usuário que emite o comando.
A nova tabela é carregada com dados definidos pela consulta no comando. As colunas da tabela têm nomes e tipos de dados associados às colunas de saída da consulta. O comando CREATE TABLE AS (CTAS) cria uma nova tabela e avalia a consulta para carregar a nova tabela.
Sintaxe
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 [, ...] ) ]
Parâmetros
- LOCAL
-
Embora a instrução aceite esta palavra-chave, ela não tem efeito no Amazon Redshift.
- TEMPORARY | TEMP
-
Cria uma tabela temporária. Uma tabela temporária é automaticamente descartada no final da sessão na qual ela foi criada.
- table_name
-
Nome da tabela a ser criada.
Importante
Se você especificar um nome de tabela que comece com “#”, a tabela será criada como temporária. Por exemplo:
create table #newtable (id) as select * from oldtable;
O tamanho máximo do nome da tabela é 127 bytes; nomes mais longos são truncados para ter no máximo 127 bytes. O Amazon Redshift impõe uma cota do número de tabelas por cluster por tipo de nó. É possível qualificar o nome da tabela com o nome do banco de dados e do esquema, conforme mostra a tabela a seguir.
create table tickit.public.test (c1) as select * from oldtable;
Neste exemplo,
tickit
é o nome do banco de dados epublic
é o nome do esquema. Se o banco de dados ou o esquema não existir, a instrução retornará um erro.Se um nome de esquema for fornecido, a nova tabela será criada naquele esquema (presumindo que o criador tenha acesso ao esquema). O nome da tabela deve ser exclusivo para aquele esquema. Se nenhum esquema for especificado, a tabela será criada usando o esquema atual do banco de dados. Se estiver criando uma tabela temporária, você não poderá especificar um nome de esquema, uma vez que as tabelas temporárias existem em um esquema especial.
Podem existir várias tabelas temporárias com o mesmo nome ao mesmo tempo no mesmo banco de dados, se elas forem criadas em sessões separadas. Essas tabelas são atribuídas a esquemas diferentes.
- column_name
-
Nome de uma coluna na nova tabela. Se nenhum nome de coluna for fornecido, os nomes de colunas podem ser obtidos com base nos nomes de coluna de saída da consulta. Os nomes de coluna padrão são usados para expressões. Para obter mais informações sobre nomes válidos, consulte Nomes e identificadores.
- BACKUP { YES | NO }
-
Cláusula que especifica se uma tabela deve ser incluída em snapshots de cluster manuais ou automatizadas.
Para tabelas como as de preparação, que não contêm dados críticos, especifique BACKUP NO para economizar tempo de processamento ao criar snapshost, restaurar de snapshots e reduzir o uso de espaço de armazenamento no Amazon Simple Storage Service. A configuração BACKUP NO não tem efeito em replicação automática de dados para outros nós no cluster. Portanto, tabelas com BACKUP NO especificado são restauradas em caso de erro de nó. O padrão é BACKUP YES.
- DISTSTYLE { AUTO | EVEN | KEY | ALL }
-
Palavra-chave que define o estilo de distribuição de dados para toda a tabela. O Amazon Redshift distribui as linhas de uma tabela para cada um dos nós de computação de acordo com o estilo de distribuição especificado para a tabela. O padrão é DISTSTYLE AUTO.
O estilo de distribuição selecionado para as tabelas afeta a performance geral do seu banco de dados. Para obter mais informações, consulte Distribuição de dados para otimização de consultas.
-
AUTO: o Amazon Redshift atribui um estilo de distribuição ideal com base nos dados da tabela. Para visualizar o estilo de distribuição aplicado a uma tabela, consulte a tabela de catálogo de sistema PG_CLASS. Para obter mais informações, consulte Visualização dos estilos de distribuição.
-
EVEN: Os dados na tabela são espalhados de maneira uniforme pelos nós em um cluster, em uma distribuição de ida e volta. Os IDs de linha são usados para determinar a distribuição e aproximadamente o mesmo número de linhas é distribuído para cada nó. Este método de distribuição é o padrão.
-
KEY: Os dados são distribuídos pelos valores na coluna DISTKEY. Quando você define as colunas de junção das tabelas de junção como chaves de distribuição, as linhas de junção de ambas as tabelas são dispostas nos nós de computação. Quando os dados são dispostos, o otimizador pode realizar junções de maneira mais eficiente. Se você especificar a DISTSTYLE KEY, é preciso nomear uma coluna DISTKEY.
-
ALL: Uma cópia de toda a tabela é distribuída para cada nó. Este estilo de distribuição garante que todas as linhas necessárias para qualquer junção estejam disponíveis em cada nó, mas multiplica os requisitos de armazenamento e aumenta a carga e os tempos de manutenção da tabela. A distribuição ALL pode melhorar o tempo de execução quando usada com determinadas tabelas de dimensão nas quais a distribuição KEY não é apropriada, mas as melhorias de performance devem ser comparadas aos custos de manutenção.
-
- DISTKEY (coluna)
-
Especifica um nome de coluna ou um número de posição para a chave de distribuição. Use o nome especificado na lista opcional de coluna para a tabela ou na lista selecionada da consulta. Como opção, você pode usar um número de posição, onde a primeira coluna selecionada é 1, a segunda é 2 e assim por diante. Somente uma coluna da tabela pode ser a chave de distribuição:
-
Se você declarar uma coluna como DISTKEY, DISTSTYLE deve ser definida como KEY ou não deve ser definida.
-
Se você não declarar uma coluna DISTKEY, é possível definir DISTSTYLE como EVEN.
-
Se você não especificar DISTKEY ou DISTSTYLE, o CTAS determina o estilo de distribuição para a nova tabela com base no plano de consulta para a cláusula SELECT. Para obter mais informações, consulte Herança de atributos de coluna e tabela.
Você pode definir a mesma coluna como chave de distribuição e chave de classificação. Esta abordagem tende a acelerar a junção quando a coluna em questão é uma coluna de junção na consulta.
-
- [ COMPOUND | INTERLEAVED ] SORTKEY ( column_name [, ... ] )
-
Especifica uma ou mais chaves de classificação da tabela. Quando carregados na tabela, os dados são classificados pelas colunas designadas como chaves de classificação.
Como opção, você pode especificar um estilo de classificação COMPOUND ou INTERLEAVED. O padrão é COMPOUND. Para obter mais informações, consulte Chaves de classificação.
Você pode definir um máximo de 400 colunas COMPOUND SORTKEY ou 8 colunas INTERLEAVED SORTKEY por tabela.
Se você não especificar SORTKEY, o CTAS determina as chaves de classificação para a nova tabela com base no plano de consulta para a cláusula SELECT. Para obter mais informações, consulte Herança de atributos de coluna e tabela.
- COMPOUND
-
Especifica que os dados sejam classificados usando uma chave composta por todas as colunas listadas, na ordem em que estão listadas. Uma chave de classificação composta é mais útil quando uma consulta faz a varredura de linhas de acordo com a ordem das colunas classificadas. Os benefícios de performance da classificação com uma chave composta diminuem quando as consultas se baseiam em colunas de classificação secundárias. Você pode definir um máximo de 400 colunas COMPOUND SORTKEY por tabela.
- INTERLEAVED
-
Especifica que os dados sejam classificados usando uma chave de classificação intercalada. Um máximo de oito colunas pode ser especificado para uma chave de classificação intercalada.
Uma classificação intercalada concede peso igual a todas as colunas, ou subconjuntos de colunas, na chave de classificação para que as consultas não dependam da ordem das colunas na chave de classificação. Quando uma consulta usa uma ou mais colunas de classificação secundárias, a classificação intercalada apresenta uma melhoria significativa de performance de consulta. A classificação intercalada carrega um pequeno custo de sobrecarga para operações de carregamento de dados e limpeza de operações.
- AS query
-
Qualquer consulta (instrução SELECT) compatível com o Amazon Redshift.