ALTER TABLE REPLACE COLUMNS - Amazon Athena

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 dados date. Para contornar esse problema, use o tipo de dados timestamp na tabela.

  • Observe que, mesmo que se você for substituir apenas uma coluna, a sintaxe deverá ser ALTER TABLE table-name REPLACE COLUMNS, 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 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.