Alterar o tipo de coluna sem perda de dados
Aplica-se a: ✅Microsoft Fabric✅Azure Data Explorer
O comando .alter column altera o tipo de coluna, tornando os dados originais irrecuperáveis. Para preservar os dados preexistentes ao alterar o tipo de coluna, crie uma nova tabela digitada corretamente.
Para cada tabela OriginalTable
em que você deseja alterar um tipo de coluna, execute as seguintes etapas:
Crie uma tabela
NewTable
com o esquema correto (os tipos de coluna corretos e a mesma ordem de coluna).Assimile os dados em
NewTable
fromOriginalTable
, aplicando as transformações de dados necessárias. No exemplo a seguir, Col1 está sendo convertido no tipo de dados string..set-or-append NewTable <| OriginalTable | extend Col1=tostring(Col1)
Use o comando .rename tables para trocar nomes de tabelas.
.rename tables NewTable=OriginalTable, OriginalTable=NewTable
Quando o comando é concluído, os novos dados dos pipelines de ingestão existentes fluem para
OriginalTable
que agora sejam digitados corretamente.Solte a tabela
NewTable
.NewTable
Inclui apenas uma cópia dos dados históricos anteriores à alteração do esquema. Ele pode ser descartado com segurança após confirmar que o esquema e os dados foramOriginalTable
atualizados corretamente..drop table NewTable
Exemplo
O exemplo a seguir atualiza o esquema de OriginalTable
enquanto preserva seus dados.
Crie a tabela, OriginalTable
, com uma coluna, "Col1", do tipo guid.
.create table OriginalTable (Col1:guid, Id:int)
Em seguida, assimile dados em OriginalTable
.
.ingest inline into table OriginalTable <|
b642dec0-1040-4eac-84df-a75cfeba7aa4,1
c224488c-ad42-4e6c-bc55-ae10858af58d,2
99784a64-91ad-4897-ae0e-9d44bed8eda0,3
d8857a93-2728-4bcb-be1d-1a2cd35386a7,4
b1ddcfcc-388c-46a2-91d4-5e70aead098c,5
Crie a tabela, NewTable
do tipo string.
.create table NewTable (Col1:string, Id:int)
Acrescente dados de OriginalTable
para NewTable
e use a tostring()
função para converter a coluna "Col1" do tipo guid para o tipo string.
.set-or-append NewTable <| OriginalTable | extend Col1=tostring(Col1)
Troque os nomes das tabelas.
.rename tables NewTable = OriginalTable, OriginalTable = NewTable
Drop table, NewTable
com o esquema e os dados antigos.
.drop table NewTable