Käytä IDENTITY-sarakkeita Fabric tietovarasto

Koskee:✅ Microsoft Fabric -varasto

Tämä opas selittää, miten IDENTITY-sarakkeita käytetään Fabric tietovarasto sijaisavainten luomiseen ja hallintaan. Opit, miten luoda tauluja identiteettisarakkeilla, lisätä dataa, lisätä eksplisiittisiä arvoja , IDENTITY_INSERTja uudelleenkylvää identiteettialue .DBCC CHECKIDENT

Ennakkovaatimukset

  • Pääsy Varasto-kohteeseen työtilassa, jossa on Contributor- tai korkeammat oikeudet.
  • Kyselytyökalu. Tämä opas käyttää Microsoft Fabric -portaalin SQL-kyselyeditoria, mutta voit käyttää mitä tahansa T-SQL-kyselytyökalua.
  • Perusymmärrys T-SQL:stä.

Mikä on IDENTITY-sarakke?

Sarake IDENTITY on numeerinen sarake, joka automaattisesti tuottaa ainutlaatuisia arvoja uusille riveille. Tämä ominaisuus tekee siitä ihanteellisen sijaisavainten toteuttamiseen, koska jokainen rivi saa yksilöllisen tunnisteen ilman manuaalista syöttöä.

Luo IDENTITY-sarake

Sarakkeen määrittämiseksi IDENTITY määrittele IDENTITY avainsana T-SQL-syntaksin sarakemääritelmässä CREATE TABLE :

CREATE TABLE { warehouse_name.schema_name.table_name | schema_name.table_name | table_name } (
    [column_name] BIGINT IDENTITY,
    [ ,... n ],
    -- Other columns here
);

Luo taulu, jossa on IDENTITY-sarake

Tässä opetusohjelmassa luot yksinkertaisemman version taulukosta TripNY Taxi avoimesta aineistosta ja lisäät sarakkeen TripIDIDENTITY . Jokainen uusi rivi saa taulukossa ainutlaatuisen TripID arvon.

  1. Määrittele taulukko, jossa on sarakke IDENTITY :

     CREATE TABLE dbo.Trip
     (
         TripID               bigint IDENTITY,
         tpepPickupDateTime   datetime2(6),
         tpepDropoffDateTime  datetime2(6),
         passengerCount       int,
         tripDistance         float,
         fareAmount           float,
         totalAmount          float
     );
    
  2. Käytä COPY INTO datan vastaanottamiseen taulukkoon. Kun käytät COPY INTO sarakkeen IDENTITY kanssa, anna sarakkelista ja yhdistä se lähdedatan sarakkeisiin.

     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. Esitarkastele IDENTITY dataa ja sarakkeelle annettuja arvoja:

    SELECT TOP 10 *
    FROM Trip;
    

    Tuloste sisältää automaattisesti luodun TripID arvon jokaiselle riville.

    Kuvakaappaus kyselytuloksista, jossa on taulukko, jossa on taksimatkadatan ensimmäiset 10 riviä.

    Tärkeää

    Arvosi voivat poiketa tämän artikkelin arvoista. IDENTITY Sarakkeet tuottavat arvoja, jotka ovat taatusti yksikäsitteisiä, mutta arvot eivät välttämättä ole peräkkäisiä tai järjestettyjä, ja aukkoja voi syntyä.

  4. Käytä INSERT INTO uusien rivien vastaanottamiseen:

     INSERT INTO dbo.Trip
     VALUES ('2026-01-01T00:00:00', '2013-01-01T00:12:00', 1, 2.4, 10.5, 13.0);
    
  5. Sarakkelista on valinnainen, kun INSERT INTO. Kun annat sellaisen, määritä kaikkien sarakkeiden nimet, joille syötät tietoja, paitsi sarakkeen 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. Tarkista lisätyt rivit:

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

    Tarkkaile uusille riveille annettuja arvoja:

    Kuvakaappaus taulukosta, jossa on kaksi riviä ja kuusi saraketta taksimatkan dataa.

Lisää eksplisiittisiä arvoja IDENTITY_INSERT

Saatat joutua lisäämään tiettyjä arvoja identiteettisarakkeeseen datan siirron aikana, sentinel-arvoja täyttäessä tai varmuuskopiosta palautettaessa dataa. Käytä SET IDENTITY_INSERT näiden inserttien käyttöönottoon.

Tässä osiossa luot dimensiotaulun ja lisäät IDENTITY_INSERT sentinel-rivejä, joilla on tunnettuja avainarvoja.

  1. Luo dimensiotaulu sarakkeella IDENTITY :

    CREATE TABLE dbo.DimCustomer
    (
        CustomerKey BIGINT IDENTITY,
        CustomerName VARCHAR(100),
        CustomerType VARCHAR(20)
    );
    
  2. Lisää säännöllisiä rivejä. Identiteettiarvot generoidaan automaattisesti:

    INSERT INTO dbo.DimCustomer (CustomerName, CustomerType)
    VALUES ('Contoso Ltd', 'Enterprise'),
           ('Fabrikam Inc', 'SMB'),
           ('Northwind Traders', 'Enterprise');
    
  3. Ota käyttöön IDENTITY_INSERT sentinel-arvojen lisääminen. Kun IDENTITY_INSERT on ON, anna sarakkeelista, joka sisältää identiteettisarakkeen:

    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. Kun olet lisännyt eksplisiittisiä arvoja, uudelleensiemennä identiteettisarakkee varmistaaksesi DBCC CHECKIDENT , etteivät tulevat automaattisesti generoidut arvot törmää lisättyihin arvoihin:

    DBCC CHECKIDENT('dbo.DimCustomer', RESEED);
    
  5. Varmista, että sentinel-rivit näkyvät automaattisesti luotujen rivien rinnalla:

    SELECT *
    FROM dbo.DimCustomer
    ORDER BY CustomerKey;
    
  6. Lisää rivi ja varmista, ettei automaattisesti luotu arvo ole ristiriidassa:

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

Siivoa opetusmateriaaleja

Voit halutessasi pudottaa tämän tutoriaalin aikana luodut taulukot:

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