Compartir a través de


Cambio del tipo de columna sin pérdida de datos

Se aplica a: ✅Microsoft FabricAzure 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:

  1. Cree una tabla NewTable con el esquema correcto (los tipos de columna correctos y el mismo orden de columna).

  2. Ingerir los datos en NewTable desde OriginalTable, 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)
    
  3. 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.

  4. 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 de OriginalTable 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