Esquema de tabela Iceberg em evolução
As atualizações de esquema do Iceberg são alterações somente de metadados. Nenhum arquivo de dados é alterado quando você executa uma atualização de esquema.
O formato Iceberg suporta as seguintes alterações na evolução do esquema:
-
Adicionar: adiciona uma nova coluna a uma tabela ou a uma
struct
aninhada. -
Descartar: remove uma coluna existente de uma tabela ou
struct
aninhada. -
Renomear: renomeia uma coluna ou campo existente em uma
struct
aninhada. -
Reordenar: altera a ordem das colunas.
-
Promoção de tipo: amplia o tipo de uma coluna, um campo
struct
, uma chavemap
, um valormap
ou um elementolist
. Atualmente, há suporte para os seguintes casos nas tabelas Iceberg:-
inteiro para grande inteiro
-
float para double
-
aumento da precisão de um tipo decimal
-
ALTER TABLE ADD COLUMNS
Adiciona uma ou mais colunas a uma tabela Iceberg existente.
Resumo
ALTER TABLE [
db_name
.]table_name
ADD COLUMNS (col_name
data_type
[,...])
Exemplos
O exemplo a seguir adiciona uma coluna comment
do tipo string
em uma tabela Iceberg.
ALTER TABLE iceberg_table ADD COLUMNS (comment string)
O exemplo a seguir adiciona uma coluna point
do tipo struct
em uma tabela Iceberg.
ALTER TABLE iceberg_table ADD COLUMNS (point struct<x: double, y: double>)
O exemplo a seguir adiciona uma coluna points
, que é uma matriz de structs , em uma tabela Iceberg.
ALTER TABLE iceberg_table ADD COLUMNS (points array<struct<x: double, y: double>>)
ALTER TABLE DROP COLUMN
Descarta uma coluna de uma tabela Iceberg existente.
Resumo
ALTER TABLE [
db_name
.]table_name
DROP COLUMNcol_name
Exemplo
ALTER TABLE iceberg_table DROP COLUMN userid
ALTER TABLE CHANGE COLUMN
Altera o nome, o tipo, a ordem ou o comentário de uma coluna.
nota
Não há suporte ao ALTER TABLE REPLACE COLUMNS
. Como REPLACE COLUMNS
remove todas as colunas e, em seguida, adiciona colunas novas, ele não é compatível no Iceberg. CHANGE COLUMN
é a sintaxe preferida para a evolução do esquema.
Resumo
ALTER TABLE [
db_name
.]table_name
CHANGE [COLUMN]col_old_name
col_new_name
column_type
[COMMENTcol_comment
] [FIRST|AFTERcolumn_name
]
Exemplo
ALTER TABLE iceberg_table CHANGE comment blog_comment string AFTER id
SHOW COLUMNS
Mostra as colunas em uma tabela.
Resumo
SHOW COLUMNS (FROM|IN) [
db_name
.]table_name
Exemplo
SHOW COLUMNS FROM iceberg_table