Používejte sloupce IDENTITY v Fabric Data Warehouse

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á.

  1. 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
     );
    
  2. Pomocí COPY INTO načtěte data do tabulky. Když používáte COPY INTO s jedním sloupcem IDENTITY , 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');
    
  3. Náhled dat a hodnot přiřazených ke sloupci IDENTITY :

    SELECT TOP 10 *
    FROM Trip;
    

    Výstup obsahuje automaticky generovanou TripID hodnotu pro každý řádek.

    Snímek obrazovky s výsledky dotazu zobrazující tabulku s prvními 10 řádky datové sady jízdy taxíkem

    Důležité

    Vaše hodnoty se mohou lišit od hodnot uvedených v tomto článku. IDENTITY Sloupce produkují hodnoty, které jsou zaručeně jedinečné, ale hodnoty nemusí být nutně sekvenční nebo uspořádané a mezery mohou vzniknout.

  4. Použijte INSERT INTO k 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);
    
  5. Seznam sloupců je volitelný s INSERT INTO. Když jeden zadáš, urči názvy všech sloupců, pro které zadáváš vstupní data, kromě sloupce IDENTITY :

     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);
    
  6. 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:

    Screenshot tabulky se dvěma řádky a šesti sloupci zobrazující data o taxi jízdách.

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.

  1. Vytvořte tabulku rozměrů s jedním sloupcem IDENTITY :

    CREATE TABLE dbo.DimCustomer
    (
        CustomerKey BIGINT IDENTITY,
        CustomerName VARCHAR(100),
        CustomerType VARCHAR(20)
    );
    
  2. 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');
    
  3. Povolte IDENTITY_INSERT, aby bylo možné přidat sentinelové hodnoty. Když je IDENTITY_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;
    
  4. Po vložení explicitních hodnot znovu osadíte sloupec identity s , DBCC CHECKIDENT abyste zajistili, že budoucí automaticky generované hodnoty nekolidují s vloženými hodnotami:

    DBCC CHECKIDENT('dbo.DimCustomer', RESEED);
    
  5. Ověřte, že řádky sentinel se objevují vedle automaticky generovaných řádků:

    SELECT *
    FROM dbo.DimCustomer
    ORDER BY CustomerKey;
    
  6. 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;