Cambio del tipo de columna sin pérdida de datos
Se aplica a: ✅Microsoft Fabric✅Azure Data Explorer
El comando .alter column cambia el tipo de columna, lo que hace que los datos originales sean irrecuperables. Para conservar los datos preexistentes al cambiar el tipo de columna, cree una tabla con tipo correcto.
Para cada tabla OriginalTable
en la que desea cambiar un tipo de columna, ejecute los pasos siguientes:
Cree una tabla
NewTable
con el esquema correcto (los tipos de columna correctos y el mismo orden de columna).Ingerir los datos en
NewTable
desdeOriginalTable
, aplicando las transformaciones de datos necesarias. En el ejemplo siguiente, Col1 se convierte en el tipo de datos de cadena..set-or-append NewTable <| OriginalTable | extend Col1=tostring(Col1)
Use el comando .rename tables para intercambiar nombres de tabla.
.rename tables NewTable=OriginalTable, OriginalTable=NewTable
Cuando se completa el comando, los nuevos datos de las canalizaciones de ingesta existentes fluyen a
OriginalTable
que ahora se escriben correctamente.Quite la tabla
NewTable
.NewTable
incluye solo una copia de los datos históricos de antes del cambio de esquema. Se puede quitar de forma segura después de confirmar que el esquema y los datos deOriginalTable
se actualizaron correctamente..drop table NewTable
Ejemplo
En el ejemplo siguiente se actualiza el esquema de al tiempo que OriginalTable
se conservan sus datos.
Cree la tabla , OriginalTable
, con una columna , "Col1", de tipo GUID.
.create table OriginalTable (Col1:guid, Id:int)
Después, ingiera datos en 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
Cree la tabla de NewTable
tipo cadena.
.create table NewTable (Col1:string, Id:int)
Anexe datos de OriginalTable
a NewTable
y use la tostring()
función para convertir la columna "Col1" del guid de tipo a la cadena de tipo.
.set-or-append NewTable <| OriginalTable | extend Col1=tostring(Col1)
Cambie los nombres de la tabla.
.rename tables NewTable = OriginalTable, OriginalTable = NewTable
Coloque la tabla, NewTable
con el esquema y los datos antiguos.
.drop table NewTable