Sdílet prostřednictvím


Změna typu sloupce bez ztráty dat

Platí pro: ✅Microsoft FabricAzure 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:

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

  2. 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)
    
  3. 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ě.

  4. 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 je OriginalTable 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 OriginalTablese 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