Изменение типа столбца без потери данных
Область применения: ✅Microsoft Fabric✅Azure Data Explorer
Команда alter column изменяет тип столбца , что делает исходные данные неустранимыми. Чтобы сохранить существующие данные при изменении типа столбца, создайте новую, правильно типизированные таблицы.
Для каждой таблицы OriginalTable
, в которую вы хотите изменить тип столбца, выполните следующие действия:
Создайте таблицу
NewTable
с правильной схемой (правильные типы столбцов и тот же порядок столбцов).Прием данных
NewTable
изOriginalTable
, применение необходимых преобразований данных. В следующем примере Col1 преобразуется в тип данных строки..set-or-append NewTable <| OriginalTable | extend Col1=tostring(Col1)
Используйте команду "Переименовать таблицы" для замены имен таблиц.
.rename tables NewTable=OriginalTable, OriginalTable=NewTable
После завершения команды новые данные из существующих конвейеров
OriginalTable
приема передаются правильно.Удалите таблицу
NewTable
.NewTable
включает только копию исторических данных до изменения схемы. Его можно безопасно удалить после подтверждения схемы и данных вOriginalTable
правильном обновлении..drop table NewTable
Пример
В следующем примере схема обновляется OriginalTable
при сохранении данных.
Создайте таблицу OriginalTable
с столбцом "Col1" guid типа.
.create table OriginalTable (Col1:guid, Id:int)
Затем прием данных в 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
Создайте таблицу со NewTable
строкой типа.
.create table NewTable (Col1:string, Id:int)
Добавьте данные из OriginalTable
NewTable
и используйте tostring()
функцию для преобразования столбца Col1 из guid типа в строку типа.
.set-or-append NewTable <| OriginalTable | extend Col1=tostring(Col1)
Замените имена таблиц.
.rename tables NewTable = OriginalTable, OriginalTable = NewTable
Удалите таблицу со NewTable
старой схемой и данными.
.drop table NewTable