Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
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.
Definire una tabella con una
IDENTITYcolonna:CREATE TABLE dbo.Trip ( TripID bigint IDENTITY, tpepPickupDateTime datetime2(6), tpepDropoffDateTime datetime2(6), passengerCount int, tripDistance float, fareAmount float, totalAmount float );Usalo
COPY INTOper ingerire dati nella tabella. Quando usiCOPY INTOcon unaIDENTITYcolonna, 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');Anteprima i dati e i valori assegnati alla
IDENTITYcolonna:SELECT TOP 10 * FROM Trip;L'output include il valore
TripIDgenerato automaticamente per ogni riga.Importante
I tuoi valori potrebbero differire da quelli di questo articolo.
IDENTITYLe colonne producono valori che sono garantiti unici, ma i valori non sono necessariamente sequenziali o ordinati, e possono verificarsi lacune.Utilizzo
INSERT INTOper 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);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 laIDENTITYcolonna: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);Rivedi le righe inserite:
SELECT * FROM dbo.Trip WHERE CAST(tpepPickupDateTime AS date) = '2026-01-01';Osservare i valori assegnati alle nuove righe:
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.
Crea una tabella delle dimensioni con una
IDENTITYcolonna:CREATE TABLE dbo.DimCustomer ( CustomerKey BIGINT IDENTITY, CustomerName VARCHAR(100), CustomerType VARCHAR(20) );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');Abilita
IDENTITY_INSERTper aggiungere valori sentinella. QuandoIDENTITY_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;Dopo aver inserito valori espliciti, riseed la colonna identità con
DBCC CHECKIDENTper assicurarsi che i valori generati automaticamente futuri non collidano con quelli inseriti:DBCC CHECKIDENT('dbo.DimCustomer', RESEED);Verifica che le righe sentinella appaiano accanto a quelle generate automaticamente:
SELECT * FROM dbo.DimCustomer ORDER BY CustomerKey;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;