ALTER TABLE REPLACE COLUMNS
Remove todas as colunas existentes de uma tabela criada com LazySimpleSerDe e as substitui pelo conjunto de colunas especificado. Quando a sintaxe opcional de PARTITION
é usada, os metadados da partição são atualizados. Você também pode usar ALTER TABLE REPLACE
COLUMNS
para descartar as colunas especificando apenas as colunas que deseja manter.
Resumo
ALTER TABLE table_name
[PARTITION
(partition_col1_name = partition_col1_value
[,partition_col2_name = partition_col2_value][,...])]
REPLACE COLUMNS (col_name data_type [, col_name data_type, ...])
Parâmetros
- PARTITION (partition_col_name = partition_col_value [,...])
-
Especifica uma partição com as combinações de nome/valor de coluna que você especificar. Coloque
partition_col_value
entre aspas somente se o tipo de dados da coluna for uma string. - REPLACE COLUMNS (col_name data_type [,col_name data_type,...])
-
Substitui as colunas existentes pelos nomes e tipos de dados de coluna especificados.
Observações
-
Para ver a alteração nas colunas de tabela no painel de navegação do editor de consultas do Athena após executar
ALTER TABLE REPLACE COLUMNS
, pode ser necessário atualizar manualmente a tabela no editor e depois expandir a tabela outra vez. -
ALTER TABLE REPLACE COLUMNS
não funciona em colunas com o tipo de dadosdate
. Para contornar esse problema, use o tipo de dadostimestamp
na tabela. -
Observe que, mesmo que se você for substituir apenas uma coluna, a sintaxe deverá ser
ALTER TABLE
, com columns no plural. Você deve especificar não apenas a coluna que deseja substituir, mas as colunas que deseja manter, do contrário, as colunas que não especificadas serão descartadas. Essa sintaxe e esse comportamento derivam da DDL do Apache Hive. Para referência, consulte Add/Replace Columnstable-name
REPLACE COLUMNS(Adicionar/substituir colunas) na documentação do Apache.
Exemplo
No exemplo a seguir, a tabela names_cities
, que foi criada usando o LazySimpleSerDe, tem três colunas chamadas col1
, col2
e col3
. Todas as colunas são do tipo string
. Para mostrar as colunas na tabela, o comando a seguir usa a instrução SHOW COLUMNS.
SHOW COLUMNS IN names_cities
Resultado da consulta:
col1 col2 col3
O comando ALTER TABLE REPLACE COLUMNS
a seguir substitui os nomes das colunas por first_name
,last_name
e city
. Os dados de origem subjacentes não são afetados.
ALTER TABLE names_cities REPLACE COLUMNS (first_name string, last_name string, city string)
Para testar o resultado, SHOW COLUMNS
é executado novamente.
SHOW COLUMNS IN names_cities
Resultado da consulta:
first_name last_name city
Outra maneira de mostrar os novos nomes de coluna é exibir a previsualização da tabela no editor de consultas do Athena ou executar o sua própria consulta SELECT
.