Změna typu sloupce bez ztráty dat
Platí pro: ✅Microsoft Fabric✅Azure Data Explorer
Příkaz .alter column změní typ sloupce , aby původní data byla nedostupná. Pokud chcete zachovat existující data při změně typu sloupce, vytvořte novou správně zařaovanou tabulku.
U každé tabulky OriginalTable
, ve které chcete změnit typ sloupce, proveďte následující kroky:
Vytvořte tabulku
NewTable
se správným schématem (správné typy sloupců a stejné pořadí sloupců).Ingestování dat z
NewTable
OriginalTable
, použití požadovaných transformací dat. V následujícím příkladu se sloupec Col1 převádí na datový typ řetězce..set-or-append NewTable <| OriginalTable | extend Col1=tostring(Col1)
K prohození názvů tabulek použijte příkaz .rename tables.
.rename tables NewTable=OriginalTable, OriginalTable=NewTable
Po dokončení příkazu se nová data z existujících kanálů příjmu dat do
OriginalTable
toho zadává správně.Přetáhněte tabulku
NewTable
.NewTable
obsahuje pouze kopii historických dat před změnou schématu. Po potvrzení správné aktualizace schématu a dat jeOriginalTable
možné ho bezpečně vyhodit..drop table NewTable
Příklad
Následující příklad aktualizuje schéma OriginalTable
při zachování dat.
Vytvořte tabulku OriginalTable
se sloupcem "Col1" (Sloupec1) s identifikátorem GUID typu.
.create table OriginalTable (Col1:guid, Id:int)
Pak ingestujte data do 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
Vytvořte tabulku NewTable
typu string.
.create table NewTable (Col1:string, Id:int)
Připojte data z OriginalTable
NewTable
a pomocí tostring()
funkce převeďte sloupec "Col1" z identifikátoru GUID typu na řetězec typu.
.set-or-append NewTable <| OriginalTable | extend Col1=tostring(Col1)
Prohození názvů tabulek
.rename tables NewTable = OriginalTable, OriginalTable = NewTable
Odstraňte tabulku se NewTable
starým schématem a daty.
.drop table NewTable