Bemærk
Adgang til denne side kræver godkendelse. Du kan prøve at logge på eller ændre mapper.
Adgang til denne side kræver godkendelse. Du kan prøve at ændre mapper.
Gælder for:✅ Warehouse i Microsoft Fabric
Denne vejledning forklarer, hvordan man bruger IDENTITY-kolonner i Fabric data warehouse til at oprette og administrere surrogatnøgler. Du lærer at oprette tabeller med identitetskolonner, indsætte data, indsætte eksplicitte værdier med IDENTITY_INSERT, og genindsætte identitetsintervallet med DBCC CHECKIDENT.
Prerequisites
- Adgang til en lagerpost i et arbejdsområde med bidragyder eller højere tilladelser.
- Et forespørgselsværktøj. Denne vejledning bruger SQL-forespørgselseditoren i Microsoft Fabric-portalen, men du kan også bruge ethvert T-SQL-forespørgselsværktøj.
- En grundlæggende forståelse af T-SQL.
Hvad er en IDENTITET-kolonne?
En kolonne er en numerisk kolonne, der automatisk genererer IDENTITY unikke værdier for nye rækker. Denne adfærd gør den ideel til implementering af surrogatnøgler, fordi hver række får en unik identifikator uden manuel indtastning.
Opret en IDENTITET-kolonne
For at definere en IDENTITY kolonne, angiv IDENTITY nøgleordet i kolonnedefinitionen af 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
);
Opret en tabel med en IDENTITY-kolonne
I denne vejledning laver du en enklere version af Trip tabellen ud fra NY Taxi open datasættet og tilføjer en TripIDIDENTITY kolonne. Hver ny række får en TripID værdi, der er unik i tabellen.
Definér en tabel med en
IDENTITYkolonne:CREATE TABLE dbo.Trip ( TripID bigint IDENTITY, tpepPickupDateTime datetime2(6), tpepDropoffDateTime datetime2(6), passengerCount int, tripDistance float, fareAmount float, totalAmount float );Brug
COPY INTOden til at indlæse data i tabellen. Når du brugerCOPY INTOmed enIDENTITYkolonne, skal du give kolonnelisten og mappe 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 de værdier, der er tildelt kolonnen
IDENTITY:SELECT TOP 10 * FROM Trip;Outputtet inkluderer den automatisk genererede
TripIDværdi for hver række.Important
Dine værdier kan afvige fra værdierne i denne artikel.
IDENTITYKolonner giver værdier, der er garanteret unikke, men værdierne er ikke nødvendigvis sekventielle eller ordnede, og der kan opstå gaps.Brug
INSERT INTOtil at indtage nye rækker: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 leverer en, skal du angive navnene på alle kolonner, som du leverer inputdata til, undtagen 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);Gennemgå de indsatte rækker:
SELECT * FROM dbo.Trip WHERE CAST(tpepPickupDateTime AS date) = '2026-01-01';Observer værdierne, der er tildelt de nye rækker:
Indsæt eksplicitte værdier med IDENTITY_INSERT
Du kan være nødt til at indsætte specifikke værdier i en identitetskolonne under datamigration, når du udfylder sentinelværdier, eller når du gendanner data fra en backup. Brug SET IDENTITY_INSERT til at aktivere disse indsættelser.
I dette afsnit opretter du en dimensionstabel og bruger IDENTITY_INSERT den til at tilføje sentinel-rækker med velkendte nøgleværdier.
Opret en dimensionstabel med en
IDENTITYkolonne:CREATE TABLE dbo.DimCustomer ( CustomerKey BIGINT IDENTITY, CustomerName VARCHAR(100), CustomerType VARCHAR(20) );Indsæt almindelige rækker. Identitetsværdierne genereres automatisk:
INSERT INTO dbo.DimCustomer (CustomerName, CustomerType) VALUES ('Contoso Ltd', 'Enterprise'), ('Fabrikam Inc', 'SMB'), ('Northwind Traders', 'Enterprise');Aktiver
IDENTITY_INSERTfor at tilføje sentinel-værdier. NårIDENTITY_INSERTerON, giv en kolonneliste, der 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;Efter indsættelse af eksplicitte værdier, sæt identitetskolonnen
DBCC CHECKIDENTmed for at sikre, at fremtidige automatisk genererede værdier ikke kolliderer med indsatte værdier:DBCC CHECKIDENT('dbo.DimCustomer', RESEED);Kontroller, at sentinel-rækkerne vises sammen med automatisk genererede rækker:
SELECT * FROM dbo.DimCustomer ORDER BY CustomerKey;Indsæt en række og bekræft, at den automatisk genererede værdi ikke er i konflikt:
INSERT INTO dbo.DimCustomer (CustomerName, CustomerType) VALUES ('Adventure Works', 'Enterprise'); SELECT * FROM dbo.DimCustomer ORDER BY CustomerKey;
Ressourcer til oprydning af vejledninger
Eventuelt kan du udvælge de tabeller, der er oprettet under denne tutorial:
DROP TABLE IF EXISTS dbo.Trip;
DROP TABLE IF EXISTS dbo.DimCustomer;
DROP TABLE IF EXISTS dbo.DimProduct;