Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
platí pro:✅ Warehouse v Microsoft Fabric
Tento návod vysvětluje, jak používat sloupce IDENTITY v Fabric Data Warehouse k vytváření a správě náhradních klíčů. Naučíte se vytvářet tabulky se sloupci identity, vkládat data, vkládat explicitní hodnoty pomocí IDENTITY_INSERT a znovu nastavit počáteční hodnotu rozsahu identity pomocí DBCC CHECKIDENT.
Požadavky
- Přístup k položce Warehouse v pracovním prostoru s oprávněním Přispěvatel nebo vyšším.
- Nástroj pro dotazy. Tento tutoriál používá SQL editor dotazů v portálu Microsoft Fabric, ale můžete použít jakýkoli T-SQL nástroj pro dotazování.
- Základní porozumění T-SQL.
Co je sloupec IDENTITY?
Sloupec IDENTITY je číselný sloupec, který automaticky generuje jedinečné hodnoty pro nové řádky. Toto chování je ideální pro implementaci náhradních klíčů, protože každý řádek získá jedinečný identifikátor bez nutnosti ručního vstupu.
Vytvoření sloupce IDENTITY
Pro definici sloupce IDENTITY zadejte klíčové slovo IDENTITY v definici sloupce syntaxe CREATE TABLE T-SQL:
CREATE TABLE { warehouse_name.schema_name.table_name | schema_name.table_name | table_name } (
[column_name] BIGINT IDENTITY,
[ ,... n ],
-- Other columns here
);
Vytvoření tabulky se sloupcem IDENTITY
V tomto tutoriálu vytvoříte jednodušší verzi tabulky Trip z otevřené datové sady NY Taxi a přidáte sloupec TripIDIDENTITY . Každý nový řádek má hodnotu TripID , která je v tabulce jedinečná.
Definujte tabulku se sloupcem
IDENTITY:CREATE TABLE dbo.Trip ( TripID bigint IDENTITY, tpepPickupDateTime datetime2(6), tpepDropoffDateTime datetime2(6), passengerCount int, tripDistance float, fareAmount float, totalAmount float );Pomocí
COPY INTOnačtěte data do tabulky. Když používáteCOPY INTOs jedním sloupcemIDENTITY, poskytněte seznam sloupců a namapujte ho na sloupce ve zdrojových datech.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');Náhled dat a hodnot přiřazených ke sloupci
IDENTITY:SELECT TOP 10 * FROM Trip;Výstup obsahuje automaticky generovanou
TripIDhodnotu pro každý řádek.Důležité
Vaše hodnoty se mohou lišit od hodnot uvedených v tomto článku.
IDENTITYSloupce produkují hodnoty, které jsou zaručeně jedinečné, ale hodnoty nemusí být nutně sekvenční nebo uspořádané a mezery mohou vzniknout.Použijte
INSERT INTOk načtení nových řádků:INSERT INTO dbo.Trip VALUES ('2026-01-01T00:00:00', '2013-01-01T00:12:00', 1, 2.4, 10.5, 13.0);Seznam sloupců je volitelný s
INSERT INTO. Když jeden zadáš, urči názvy všech sloupců, pro které zadáváš vstupní data, kromě sloupceIDENTITY: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);Zkontrolujte vložené řádky:
SELECT * FROM dbo.Trip WHERE CAST(tpepPickupDateTime AS date) = '2026-01-01';Prohlédněte si hodnoty přiřazené k novým řádkům:
Vložte explicitní hodnoty pomocí IDENTITY_INSERT
Možná budete muset vložit konkrétní hodnoty do sloupce identity během migrace dat, při vyplňování hodnot sentinel nebo při obnově dat ze zálohy. Použijte SET IDENTITY_INSERT k povolení těchto insertů.
V této části vytvoříte tabulku rozměrů a použijete IDENTITY_INSERT ji k přidání řádků sentinel s dobře známými klíčovými hodnotami.
Vytvořte tabulku rozměrů s jedním sloupcem
IDENTITY:CREATE TABLE dbo.DimCustomer ( CustomerKey BIGINT IDENTITY, CustomerName VARCHAR(100), CustomerType VARCHAR(20) );Vkládejte běžné řádky. Hodnoty identity jsou generovány automaticky:
INSERT INTO dbo.DimCustomer (CustomerName, CustomerType) VALUES ('Contoso Ltd', 'Enterprise'), ('Fabrikam Inc', 'SMB'), ('Northwind Traders', 'Enterprise');Povolte
IDENTITY_INSERT, aby bylo možné přidat sentinelové hodnoty. Když jeIDENTITY_INSERTON, uveďte seznam sloupců, který obsahuje sloupec identity: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;Po vložení explicitních hodnot znovu osadíte sloupec identity s ,
DBCC CHECKIDENTabyste zajistili, že budoucí automaticky generované hodnoty nekolidují s vloženými hodnotami:DBCC CHECKIDENT('dbo.DimCustomer', RESEED);Ověřte, že řádky sentinel se objevují vedle automaticky generovaných řádků:
SELECT * FROM dbo.DimCustomer ORDER BY CustomerKey;Vložte řádek a ověřte, že automaticky generovaná hodnota není v konfliktu:
INSERT INTO dbo.DimCustomer (CustomerName, CustomerType) VALUES ('Adventure Works', 'Enterprise'); SELECT * FROM dbo.DimCustomer ORDER BY CustomerKey;
Vyčištění prostředků návodu
Volitelně můžete zrušit tabulky vytvořené během tohoto tutoriálu:
DROP TABLE IF EXISTS dbo.Trip;
DROP TABLE IF EXISTS dbo.DimCustomer;
DROP TABLE IF EXISTS dbo.DimProduct;