Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A következőkre vonatkozik:✅ Raktár a Microsoft Fabricben
Ez a tutorial elmagyarázza, hogyan lehet az IDENTITY oszlopokat használni Fabric Data Warehouse-ban helyettesítő kulcsok létrehozásához és kezelésére. Megtudhatja, hogyan hozhat létre IDENTITY oszlopokat tartalmazó táblákat, hogyan szúrhat be adatokat, hogyan szúrhat be explicit értékeket a(z) IDENTITY_INSERT használatával, valamint hogyan állíthatja be újra az identitástartományt a(z) DBCC CHECKIDENT használatával.
Előfeltételek
- Hozzáférés egy munkaterületen belüli Warehouse-elemhez Contributor vagy magasabb szintű jogosultsággal.
- Egy lekérdezési eszköz. Ez az oktatóanyag a Microsoft Fabric portál SQL lekérdezésszerkesztőjét használja, de bármilyen T-SQL lekérdezési eszközt használhatsz.
- Alapvető ismeretek a T-SQL-ről.
Mi az IDENTITÁS oszlop?
Az IDENTITY oszlop egy numerikus oszlop, amely automatikusan egyedi értékeket hoz létre az új sorokhoz. Ez a viselkedés ideálissá teszi a helyettesítő kulcsok megvalósítására, mivel minden sor egyedi azonosítót kap kézi bemenet nélkül.
IDENTITÁSoszlop létrehozása
Egy IDENTITY oszlop definiálásához adja meg a IDENTITY kulcsszót a CREATE TABLE T-SQL-szintaxis oszlopdefiníciójában:
CREATE TABLE { warehouse_name.schema_name.table_name | schema_name.table_name | table_name } (
[column_name] BIGINT IDENTITY,
[ ,... n ],
-- Other columns here
);
Tábla létrehozása IDENTITÁS oszlopmal
Ebben az oktatóban a NY Taxi nyílt adathalmazából egy egyszerűbb Trip táblázatot hozol létre, és hozzáadsz egy TripIDIDENTITY oszlopot. Minden új sor egyedi TripID értéket kap a táblázatban.
Tábla definiálása oszloppal
IDENTITY:CREATE TABLE dbo.Trip ( TripID bigint IDENTITY, tpepPickupDateTime datetime2(6), tpepDropoffDateTime datetime2(6), passengerCount int, tripDistance float, fareAmount float, totalAmount float );Az adatok táblába való betöltéséhez használd a(z)
COPY INTOelemet. Ha aCOPY INTOoszlopot a(z)IDENTITYelemmel használod, add meg az oszloplistát, és rendeld hozzá a forrásadatok oszlopaihoz.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');Tekintse meg előnézetben az adatokat és a(z)
IDENTITYoszlophoz rendelt értékeket:SELECT TOP 10 * FROM Trip;A kimenet tartalmazza az automatikusan
TripIDgenerált értéket minden sorhoz.Fontos
Az értékeid eltérhetnek a cikkben szereplőktől.
IDENTITYAz oszlopok garantáltan egyedi értékeket állítanak elő, de az értékek nem feltétlenül folytonosak vagy rendezettek, és előfordulhatnak kihagyások.Új sorok beolvasásához használja a(z)
INSERT INTOelemet:INSERT INTO dbo.Trip VALUES ('2026-01-01T00:00:00', '2013-01-01T00:12:00', 1, 2.4, 10.5, 13.0);Egy oszloplista opcionális, ha
INSERT INTO. Amikor megadod egyet, határozd meg az összes bemeneti adatot megadott oszlop nevét, kivéve az oszlopotIDENTITY: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);Nézze át a beillesztett sorokat:
SELECT * FROM dbo.Trip WHERE CAST(tpepPickupDateTime AS date) = '2026-01-01';Figyelje meg az új sorokhoz rendelt értékeket:
Explicit értékek beszúrása az IDENTITY_INSERT használatával
Lehet, hogy konkrét értékeket kell beillesztened egy identitásoszlopba adatmigráció során, sentinel értékek feltöltése vagy mentésből származó adatok visszaállításakor. Használd a SET IDENTITY_INSERT-t ezeknek a betéteknek a aktiválásához.
Ebben a szakaszban létrehozol egy dimenziótáblát, és a IDENTITY_INSERT használatával jól ismert kulcsértékekkel rendelkező sentinel sorokat adsz hozzá.
Hozz létre egy dimenziótáblázatot egy
IDENTITYoszloppal:CREATE TABLE dbo.DimCustomer ( CustomerKey BIGINT IDENTITY, CustomerName VARCHAR(100), CustomerType VARCHAR(20) );Helyezz be sima sorokat. Az identitás értékek automatikusan generálódnak:
INSERT INTO dbo.DimCustomer (CustomerName, CustomerType) VALUES ('Contoso Ltd', 'Enterprise'), ('Fabrikam Inc', 'SMB'), ('Northwind Traders', 'Enterprise');Engedélyezd a(z)
IDENTITY_INSERTbeállítást őrértékek hozzáadásához. Ha a(z)IDENTITY_INSERTértékeON, adjon meg egy oszloplistát, amely tartalmazza az identitásoszlopot: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;Az explicit módon megadott értékek beszúrása után inicializálja újra az identitásoszlopot a(z)
DBCC CHECKIDENTértékkel annak biztosítására, hogy a később automatikusan generált értékek ne ütközzenek a beszúrt értékekkel:DBCC CHECKIDENT('dbo.DimCustomer', RESEED);Ellenőrizd, hogy a sentinel sorok az automatikusan generált sorok mellett jelennek meg:
SELECT * FROM dbo.DimCustomer ORDER BY CustomerKey;Helyezz be egy sort, és ellenőrizd, hogy az automatikusan generált érték nem ütközik-e:
INSERT INTO dbo.DimCustomer (CustomerName, CustomerType) VALUES ('Adventure Works', 'Enterprise'); SELECT * FROM dbo.DimCustomer ORDER BY CustomerKey;
Tisztítsd meg a tutorial forrásokat
Opcionálisan hagyd el a bemutató során létrehozott táblázatokat:
DROP TABLE IF EXISTS dbo.Trip;
DROP TABLE IF EXISTS dbo.DimCustomer;
DROP TABLE IF EXISTS dbo.DimProduct;