Merk
Tilgang til denne siden krever autorisasjon. Du kan prøve å logge på eller endre kataloger.
Tilgang til denne siden krever autorisasjon. Du kan prøve å endre kataloger.
Gjelder for:✅ Lager i Microsoft Fabric
Denne veiledningen forklarer hvordan man bruker IDENTITY-kolonner i Fabric datalager for å opprette og administrere surrogatnøkler. Du lærer hvordan du lager tabeller med identitetskolonner, setter inn data, setter inn eksplisitte verdier med IDENTITY_INSERT, og gjenoppretter identitetsområdet med DBCC CHECKIDENT.
Forutsetning
- Tilgang til et lagerobjekt i et arbeidsområde med Bidragsyter- eller høyere tillatelser.
- Et spørringsverktøy. Denne veiledningen bruker SQL-spørringseditoren i Microsoft Fabric-portalen, men du kan bruke hvilket som helst T-SQL-spørringsverktøy.
- En grunnleggende forståelse av T-SQL.
Hva er en IDENTITET-kolonne?
En kolonne er en numerisk kolonne som automatisk genererer IDENTITY unike verdier for nye rader. Denne oppførselen gjør den ideell for å implementere surrogatnøkler fordi hver rad får en unik identifikator uten manuell inntasting.
Opprett en IDENTITY-kolonne
For å definere en IDENTITY kolonne, spesifiser IDENTITY nøkkelordet i kolonnedefinisjonen til CREATE TABLE T-SQL-syntaksen:
CREATE TABLE { warehouse_name.schema_name.table_name | schema_name.table_name | table_name } (
[column_name] BIGINT IDENTITY,
[ ,... n ],
-- Other columns here
);
Opprett en tabell med en IDENTITET-kolonne
I denne veiledningen lager du en enklere versjon av Trip tabellen fra NY Taxi åpne datasett og legger til en TripIDIDENTITY kolonne. Hver ny rad får en TripID verdi som er unik i tabellen.
Definer en tabell med en
IDENTITYkolonne:CREATE TABLE dbo.Trip ( TripID bigint IDENTITY, tpepPickupDateTime datetime2(6), tpepDropoffDateTime datetime2(6), passengerCount int, tripDistance float, fareAmount float, totalAmount float );Bruk
COPY INTOden til å legge inn data i tabellen. Når du brukerCOPY INTOmed enIDENTITYkolonne, legg til kolonnelisten og kartlegg den til kolonner i kildedataene.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');Forhåndsvis dataene og verdiene som er tildelt kolonnen
IDENTITY:SELECT TOP 10 * FROM Trip;Utdataene inkluderer den automatisk genererte
TripIDverdien for hver rad.Viktig!
Verdiene dine kan avvike fra verdiene i denne artikkelen.
IDENTITYKolonner gir verdier som er garantert unike, men verdiene er ikke nødvendigvis sekvensielle eller ordnede, og hull kan oppstå.Bruk
INSERT INTOtil å ta inn nye rader:INSERT INTO dbo.Trip VALUES ('2026-01-01T00:00:00', '2013-01-01T00:12:00', 1, 2.4, 10.5, 13.0);En kolonneliste er valgfri med
INSERT INTO. Når du oppgir en, spesifiser navnene på alle kolonner du oppgir inputdata for, bortsett fra kolonnenIDENTITY: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);Gå gjennom de innsatte radene:
SELECT * FROM dbo.Trip WHERE CAST(tpepPickupDateTime AS date) = '2026-01-01';Observer verdiene som er tildelt de nye radene:
Sett inn eksplisitte verdier med IDENTITY_INSERT
Du må kanskje sette inn spesifikke verdier i en identitetskolonne under datamigrering, når du fyller ut sentinel-verdier, eller når du gjenoppretter data fra en backup. Bruk SET IDENTITY_INSERT for å aktivere disse innsettingene.
I denne seksjonen lager du en dimensjonstabell og bruker IDENTITY_INSERT den til å legge til sentinelrader med velkjente nøkkelverdier.
Lag en dimensjonstabell med en
IDENTITYkolonne:CREATE TABLE dbo.DimCustomer ( CustomerKey BIGINT IDENTITY, CustomerName VARCHAR(100), CustomerType VARCHAR(20) );Sett inn vanlige rader. Identitetsverdiene genereres automatisk:
INSERT INTO dbo.DimCustomer (CustomerName, CustomerType) VALUES ('Contoso Ltd', 'Enterprise'), ('Fabrikam Inc', 'SMB'), ('Northwind Traders', 'Enterprise');Aktiver
IDENTITY_INSERTfor å legge til sentinel-verdier. NårIDENTITY_INSERTer ,ONgi en kolonneliste som inkluderer identitetskolonnen: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;Etter å ha satt inn eksplisitte verdier, sett inn identitetskolonnen med
DBCC CHECKIDENTfor å sikre at fremtidige automatisk genererte verdier ikke kolliderer med innsatte verdier:DBCC CHECKIDENT('dbo.DimCustomer', RESEED);Verifiser at sentinel-radene vises sammen med automatisk genererte rader:
SELECT * FROM dbo.DimCustomer ORDER BY CustomerKey;Sett inn en rad og bekreft at den automatisk genererte verdien ikke kommer i konflikt:
INSERT INTO dbo.DimCustomer (CustomerName, CustomerType) VALUES ('Adventure Works', 'Enterprise'); SELECT * FROM dbo.DimCustomer ORDER BY CustomerKey;
Opprydding av veiledningsressurser
Eventuelt, slipp tabellene som ble laget under denne veiledningen:
DROP TABLE IF EXISTS dbo.Trip;
DROP TABLE IF EXISTS dbo.DimCustomer;
DROP TABLE IF EXISTS dbo.DimProduct;