Příkaz .alter column

Změní datový typ existujícího sloupce tabulky.

Upozornění

Při změně datového typu sloupce vrátí všechna dříve existující data v daném sloupci v budoucích dotazech hodnotu null . Po použití .alter columnnelze tato data obnovit, a to ani pomocí jiného příkazu, který změní typ sloupce zpět na předchozí hodnotu. Pokud potřebujete zachovat už existující data, projděte si doporučený postup pro změnu typu sloupce bez ztráty dat.

Oprávnění

Ke spuštění tohoto příkazu musíte mít alespoň Správa oprávnění.

Syntax

.altercolumn [DatabaseName.] Tablename.Columnnametype=Typ ColumnNewType

Přečtěte si další informace o konvencích syntaxe.

Parametry

Název Typ Vyžadováno Popis
Databasename string Název databáze, která obsahuje tabulku.
TableName string ✔️ Název tabulky, která obsahuje sloupec, který chcete změnit.
Columnname string ✔️ Název sloupce, který chcete změnit.
Typ ColumnNewType string ✔️ Nový datový typ sloupce.

Příklad

.alter column ['Table'].['ColumnX'] type=string

Změna typu sloupce bez ztráty dat

Pokud chcete změnit typ sloupce při zachování historických dat, vytvořte novou tabulku se správným typem.

Pro každou tabulku T1 , ve které chcete změnit typ sloupce, proveďte následující kroky:

  1. Vytvořte tabulku T1_prime se správným schématem (typy pravých sloupců a stejné pořadí sloupců).

  2. Ingestujte data do T1_prime z T1a použijte požadované transformace dat. V následujícím příkladu se sloupec Col1 převádí na datový typ řetězec.

    .set-or-append T1_prime <| T1 | extend Col1=tostring(Col1)
    
  3. Prohození tabulek pomocí příkazu .rename tables , který umožňuje prohození názvů tabulek.

    .rename tables T_prime=T1, T1=T_prime
    

    Po dokončení příkazu se nová data z existujících kanálů příjmu dat přeteče do T1 , která jsou nyní zadána správně.

  4. Přetažení tabulky T1_prime

    T1_prime bude obsahovat pouze kopii historických dat (před změnou schématu) a po potvrzení správné aktualizace schématu a dat v T1 souboru lze bezpečně odstranit.

    .drop table T1_prime
    

Příklad:

Změňte datový typ sloupce Col1 v tabulce T1 z guid na řetězec.

// Create table T1
.create table T1 (Col1:guid, Id:int)

// Ingest sample data into T1
.ingest inline into table T1 <|
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

// Create table T1_prime with the correct schema and same column order
.create table T1_prime (Col1:string, Id:int)

// Append data to the new table
.set-or-append T1_prime <| T1 | extend Col1=tostring(Col1)

// Rename tables
.rename tables T1_prime = T1, T1 = T1_prime

// Drop table T1_prime, which now has the old schema and data
.drop table T1_prime