Używaj kolumn IDENTITY w Fabric Data Warehouse

Dotyczy:✅ Magazyn w systemie Microsoft Fabric

Ten samouczek wyjaśnia, jak używać kolumn IDENTITY w Fabric Data Warehouse do tworzenia i zarządzania kluczami zastępczymi. Dowiesz się, jak tworzyć tabele z kolumnami tożsamościowymi, wstawiać dane, wstawiać jawne wartości przy użyciu IDENTITY_INSERT oraz ponownie ustawiać zakres wartości tożsamości za pomocą DBCC CHECKIDENT.

Wymagania wstępne

  • Dostęp do przedmiotu magazynowego w przestrzeni roboczej z uprawnieniami Contributor lub wyższymi.
  • Narzędzie do zapytań. Ten samouczek korzysta z edytora zapytań SQL w portalu Microsoft Fabric, ale możesz użyć dowolnego narzędzia do zapytań T-SQL.
  • Podstawowa wiedza o T-SQL.

Co to jest kolumna IDENTITY?

Kolumna IDENTITY jest kolumną liczbową, która automatycznie generuje unikatowe wartości dla nowych wierszy. To zachowanie sprawia, że jest idealny do implementacji kluczy zastępczych, ponieważ każdy wiersz otrzymuje unikalny identyfikator bez konieczności ręcznego wprowadzania.

Utwórz kolumnę IDENTITY

Aby zdefiniować kolumnę IDENTITY, określ słowo kluczowe IDENTITY w definicji kolumny w składni 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
);

Tworzenie tabeli z kolumną IDENTITY

W tym samouczku tworzysz prostszą wersję tabeli Trip z otwartego zestawu danych NY Taxi i dodajesz kolumnę TripIDIDENTITY. Każdy nowy wiersz otrzymuje wartość TripID, która jest unikalna w tabeli.

  1. Zdefiniuj tabelę z kolumną IDENTITY :

     CREATE TABLE dbo.Trip
     (
         TripID               bigint IDENTITY,
         tpepPickupDateTime   datetime2(6),
         tpepDropoffDateTime  datetime2(6),
         passengerCount       int,
         tripDistance         float,
         fareAmount           float,
         totalAmount          float
     );
    
  2. Użyj COPY INTO do pobierania danych do tabeli. Gdy używasz COPY INTO z kolumną IDENTITY , podaj listę kolumn i przypisz ją do kolumn w danych źródłowych.

     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. Podgląd danych i wartości przypisanych do kolumny IDENTITY :

    SELECT TOP 10 *
    FROM Trip;
    

    Wynik zawiera automatycznie wygenerowaną TripID wartość dla każdego wiersza.

    Zrzut ekranu przedstawiający wyniki zapytania z tabelą z pierwszymi 10 wierszami zestawu danych przejazdu taksówką.

    Ważne

    Twoje wartości mogą różnić się od tych z tego artykułu. IDENTITY Kolumny generują wartości gwarantowane jako unikalne, ale wartości te niekoniecznie są sekwencyjne czy uporządkowane, a luki mogą występować.

  4. Użyj INSERT INTO, aby zaimportować nowe wiersze:

     INSERT INTO dbo.Trip
     VALUES ('2026-01-01T00:00:00', '2013-01-01T00:12:00', 1, 2.4, 10.5, 13.0);
    
  5. Lista kolumn jest opcjonalna z INSERT INTO. Gdy ją podajesz, określ nazwy wszystkich kolumn, dla których podajesz dane wejściowe, z wyjątkiem kolumny 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. Przejrzyj wstawione wiersze:

     SELECT *
     FROM dbo.Trip
     WHERE CAST(tpepPickupDateTime AS date) = '2026-01-01';    
    

    Obserwuj wartości przypisane do nowych wierszy:

    Zrzut ekranu tabeli z dwoma wierszami i sześcioma kolumnami pokazującymi dane o podróży taksówką.

Wstawianie wartości jawnych przy użyciu IDENTITY_INSERT

Może być konieczne wprowadzenie konkretnych wartości do kolumny tożsamości podczas migracji danych, podczas wypełniania wartości sentinel lub przywracania danych z kopii zapasowej. Użyj SET IDENTITY_INSERT , aby włączyć te inserty.

W tej sekcji tworzysz tabelę wymiaru i używasz elementu IDENTITY_INSERT, aby dodać wiersze wartownicze z dobrze znanymi wartościami kluczy.

  1. Stwórz tabelę wymiarową z kolumną IDENTITY :

    CREATE TABLE dbo.DimCustomer
    (
        CustomerKey BIGINT IDENTITY,
        CustomerName VARCHAR(100),
        CustomerType VARCHAR(20)
    );
    
  2. Wstaw regularne wiersze. Wartości tożsamości są generowane automatycznie:

    INSERT INTO dbo.DimCustomer (CustomerName, CustomerType)
    VALUES ('Contoso Ltd', 'Enterprise'),
           ('Fabrikam Inc', 'SMB'),
           ('Northwind Traders', 'Enterprise');
    
  3. Włącz IDENTITY_INSERT dodawanie wartości sentinelowych. Gdy IDENTITY_INSERT ma wartość ON, podaj listę kolumn zawierającą kolumnę identyfikacyjną:

    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 wstawieniu wartości jawnych, ponownie zasiedź kolumnę tożsamości z , DBCC CHECKIDENT aby upewnić się, że przyszłe automatycznie generowane wartości nie kolidują z wstawionymi wartościami:

    DBCC CHECKIDENT('dbo.DimCustomer', RESEED);
    
  5. Sprawdź, czy wiersze sentinel pojawiają się obok automatycznie generowanych wierszy:

    SELECT *
    FROM dbo.DimCustomer
    ORDER BY CustomerKey;
    
  6. Wstaw wiersz i popewnij, że automatycznie generowana wartość nie jest konfliktowa:

    INSERT INTO dbo.DimCustomer (CustomerName, CustomerType)
    VALUES ('Adventure Works', 'Enterprise');
    
    SELECT *
    FROM dbo.DimCustomer
    ORDER BY CustomerKey;
    

Uporządkuj zasoby samouczków

Opcjonalnie usuń tabele utworzone podczas tego samouczka:

DROP TABLE IF EXISTS dbo.Trip;
DROP TABLE IF EXISTS dbo.DimCustomer;
DROP TABLE IF EXISTS dbo.DimProduct;