Usare le colonne IDENTITY in Fabric Data Warehouse

si applica a:✅ Magazzino di dati in Microsoft Fabric

Questo tutorial spiega come utilizzare le colonne IDENTITY in Fabric Data Warehouse per creare e gestire chiavi surrogate. Si apprende come creare tabelle con colonne IDENTITY, inserire dati, inserire valori espliciti con IDENTITY_INSERT e reimpostare l'intervallo IDENTITY con DBCC CHECKIDENT.

Prerequisiti

  • Accesso a un elemento di Warehouse in uno spazio di lavoro con autorizzazioni di tipo "Contributor" o di livello superiore.
  • Uno strumento di interrogazione. Questo tutorial utilizza l'editor di query SQL nel portale Microsoft Fabric, ma puoi usare qualsiasi strumento di query T-SQL.
  • Una comprensione di base del T-SQL.

Che cos'è una colonna IDENTITY?

Una IDENTITY colonna è una colonna numerica che genera automaticamente valori univoci per le nuove righe. Questo comportamento lo rende ideale per implementare chiavi surrogate perché ogni riga riceve un identificatore unico senza input manuale.

Creare una colonna IDENTITY

Per definire una IDENTITY colonna, specifica la IDENTITY parola chiave nella definizione della CREATE TABLE sintassi di T-SQL:

CREATE TABLE { warehouse_name.schema_name.table_name | schema_name.table_name | table_name } (
    [column_name] BIGINT IDENTITY,
    [ ,... n ],
    -- Other columns here
);

Creare una tabella con una colonna IDENTITY

In questo tutorial, crei una versione più semplice della Trip tabella dal dataset aperto di NY Taxi e aggiungi una TripIDIDENTITY colonna. Ogni nuova riga riceve un TripID valore unico nella tabella.

  1. Definire una tabella con una IDENTITY colonna:

     CREATE TABLE dbo.Trip
     (
         TripID               bigint IDENTITY,
         tpepPickupDateTime   datetime2(6),
         tpepDropoffDateTime  datetime2(6),
         passengerCount       int,
         tripDistance         float,
         fareAmount           float,
         totalAmount          float
     );
    
  2. Usalo COPY INTO per ingerire dati nella tabella. Quando usi COPY INTO con una IDENTITY colonna, fornisci la lista delle colonne e mappala alle colonne nei dati sorgente.

     COPY INTO dbo.Trip (tpepPickupDateTime, tpepDropoffDateTime, passengerCount, tripDistance, fareAmount, totalAmount)
     FROM 'https://azureopendatastorage.blob.core.windows.net/nyctlc/yellow/puYear=2013/puMonth=1/*.parquet'
     WITH( FILE_TYPE = 'PARQUET');
    
  3. Anteprima i dati e i valori assegnati alla IDENTITY colonna:

    SELECT TOP 10 *
    FROM Trip;
    

    L'output include il valore TripID generato automaticamente per ogni riga.

    Screenshot dei risultati della query che mostra una tabella con le prime 10 righe di un set di dati relativo alle corse dei taxi.

    Importante

    I tuoi valori potrebbero differire da quelli di questo articolo. IDENTITY Le colonne producono valori che sono garantiti unici, ma i valori non sono necessariamente sequenziali o ordinati, e possono verificarsi lacune.

  4. Utilizzo INSERT INTO per ingerire nuove righe:

     INSERT INTO dbo.Trip
     VALUES ('2026-01-01T00:00:00', '2013-01-01T00:12:00', 1, 2.4, 10.5, 13.0);
    
  5. Una lista di colonne è opzionale con INSERT INTO. Quando ne fornisci una, specifica i nomi di tutte le colonne per cui fornisci i dati di input, eccetto la IDENTITY colonna:

     INSERT INTO dbo.Trip (tpepPickupDateTime, tpepDropoffDateTime, passengerCount, tripDistance, fareAmount, totalAmount)
     VALUES ('2026-01-01T08:15:00', '2013-01-01T08:42:00', 2, 6.8, 24.5, 30.0);
    
  6. Rivedi le righe inserite:

     SELECT *
     FROM dbo.Trip
     WHERE CAST(tpepPickupDateTime AS date) = '2026-01-01';    
    

    Osservare i valori assegnati alle nuove righe:

    Screenshot di una tabella con due righe e sei colonne che mostrano i dati dei viaggi in taxi.

Inserire valori espliciti con IDENTITY_INSERT

Potresti dover inserire valori specifici in una colonna identità durante la migrazione dei dati, quando si popolano i valori sentinel o durante il ripristino dei dati da un backup. Usa SET IDENTITY_INSERT per abilitare questi inserti.

In questa sezione crei una tabella delle dimensioni e la utilizzi IDENTITY_INSERT per aggiungere righe sentinella con valori chiave ben noti.

  1. Crea una tabella delle dimensioni con una IDENTITY colonna:

    CREATE TABLE dbo.DimCustomer
    (
        CustomerKey BIGINT IDENTITY,
        CustomerName VARCHAR(100),
        CustomerType VARCHAR(20)
    );
    
  2. Inserisci righe normali. I valori identità sono generati automaticamente:

    INSERT INTO dbo.DimCustomer (CustomerName, CustomerType)
    VALUES ('Contoso Ltd', 'Enterprise'),
           ('Fabrikam Inc', 'SMB'),
           ('Northwind Traders', 'Enterprise');
    
  3. Abilita IDENTITY_INSERT per aggiungere valori sentinella. Quando IDENTITY_INSERT è ON, fornisce una lista di colonne che include la colonna identità:

    SET IDENTITY_INSERT dbo.DimCustomer ON;
    
    INSERT INTO dbo.DimCustomer (CustomerKey, CustomerName, CustomerType)
    VALUES (-1, 'Unknown', 'Sentinel'),
           (-2, 'Not Applicable', 'Sentinel');
    
    SET IDENTITY_INSERT dbo.DimCustomer OFF;
    
  4. Dopo aver inserito valori espliciti, riseed la colonna identità con DBCC CHECKIDENT per assicurarsi che i valori generati automaticamente futuri non collidano con quelli inseriti:

    DBCC CHECKIDENT('dbo.DimCustomer', RESEED);
    
  5. Verifica che le righe sentinella appaiano accanto a quelle generate automaticamente:

    SELECT *
    FROM dbo.DimCustomer
    ORDER BY CustomerKey;
    
  6. Inserisci una riga e conferma che il valore generato automaticamente non abbia conflitti:

    INSERT INTO dbo.DimCustomer (CustomerName, CustomerType)
    VALUES ('Adventure Works', 'Enterprise');
    
    SELECT *
    FROM dbo.DimCustomer
    ORDER BY CustomerKey;
    

Ripulire le risorse dell'esercitazione

Opzionalmente, elimina le tabelle create durante questo tutorial:

DROP TABLE IF EXISTS dbo.Trip;
DROP TABLE IF EXISTS dbo.DimCustomer;
DROP TABLE IF EXISTS dbo.DimProduct;