Delen via


IDENTITY-kolommen gebruiken om surrogaatsleutels te maken in Fabric Data Warehouse

Van toepassing op:✅ Warehouse in Microsoft Fabric

In deze zelfstudie wordt uitgelegd hoe u IDENTITY kolommen in Fabric Data Warehouse gebruikt om surrogaatsleutels efficiënt te creëren en te beheren.

Vereiste voorwaarden

  • Toegang hebben tot een magazijnitem in een werkruimte, met inzender- of hogere machtigingen.
  • Kies je query-tool. Deze zelfstudie bevat de SQL-queryeditor in de Microsoft Fabric-portal, maar u kunt elk hulpprogramma voor T-SQL-query's gebruiken.
  • Basiskennis van T-SQL.

Wat is een IDENTITY-kolom?

Een IDENTITY kolom is een numerieke kolom die automatisch unieke waarden genereert voor nieuwe rijen. Dit maakt het ideaal voor het implementeren van surrogaatsleutels, omdat elke rij een unieke id ontvangt zonder handmatige invoer.

Een IDENTITY-kolom maken

Als u een IDENTITY kolom wilt definiëren, geeft u het trefwoord IDENTITY op in de kolomdefinitie van de CREATE TABLE T-SQL-syntaxis:

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

Opmerking

In Fabric Data Warehouse is bigint het enige ondersteunde gegevenstype voor IDENTITY kolommen. Daarnaast worden de seed en increment eigenschappen van T-SQL IDENTITY niet ondersteund. Zie IDENTITY-kolommen en IDENTITY (Transact-SQL)voor meer informatie. Zie Tabellen maken in het magazijn in Microsoft Fabric voor meer informatie over het maken van tabellen.

Een tabel maken met een identity-kolom

In deze zelfstudie maken we een eenvoudigere versie van de Trip tabel op basis van de open gegevensset NY Taxi en voegen we er een nieuwe TripIDIDENTITY kolom aan toe. Telkens wanneer een nieuwe rij wordt ingevoegd, TripID wordt deze toegewezen met een nieuwe waarde die uniek is in de tabel.

  1. Definieer een tabel met een IDENTITY kolom:

     CREATE TABLE dbo.Trip
     (
         TripID BIGINT IDENTITY,
         DateID int,
         MedallionID int,
         HackneyLicenseID int,
         PickupTimeID int,
         DropoffTimeID int
     );
    
  2. Vervolgens gebruiken COPY INTO we om enkele gegevens op te nemen in deze tabel. Wanneer u COPY INTO gebruikt met IDENTITY-kolommen, moet u de kolommenlijst opgeven en deze toewijzen aan kolommen in de brongegevens.

    COPY INTO Trip (DateID 1, MedallionID 2, HackneyLicenseID 3, PickupTimeID 4, DropoffTimeID 5)
    FROM 'https://nytaxiblob.blob.core.windows.net/2013/Trip2013'
    WITH
    (
        FILE_TYPE = 'CSV',
        FIELDTERMINATOR = '|',
        COMPRESSION = 'GZIP'
    );
    
  3. We kunnen een voorbeeld bekijken van de gegevens en de waarden die aan de IDENTITY kolom zijn toegewezen met een eenvoudige query:

    SELECT TOP 10 * 
    FROM Trip;
    

    De uitvoer bevat de automatisch gegenereerde waarde voor de TripID kolom voor elke rij.

    Schermopname van de queryresultaten met een tabel met de eerste 10 rijen van een gegevensset voor taxiritten.

    Belangrijk

    Uw waarden kunnen afwijken van de waarden die in dit artikel worden waargenomen. IDENTITY kolommen produceren willekeurige waarden die gegarandeerd uniek zijn, maar er kunnen hiaten in de reeksen zijn en waarden zijn mogelijk niet in volgorde.

  4. U kunt ook INSERT INTO gebruiken om nieuwe rijen aan uw tabel toe te voegen.

    INSERT INTO dbo.Trip
    VALUES (20251104, 3524, 28804, 51931, 52252);
    
  5. De kolomlijst kan worden opgegeven met INSERT INTO, maar dit is niet vereist. Wanneer u een kolomlijst opgeeft, geeft u de naam op van alle kolommen waarvoor u invoergegevens opgeeft, met uitzondering van de IDENTITY kolom:

    INSERT INTO dbo.Trip (DateID, MedallionID, HackneyLicenseID, PickupTimeID, DropoffTimeID)
    VALUES (20251104, 8410, 24939, 74609, 49583);
    
  6. We kunnen de rijen bekijken die zijn ingevoegd met een eenvoudige query:

    SELECT *
    FROM dbo.Trip
    WHERE DateID = 20251104;
    

Bekijk de waarden die zijn toegewezen aan de nieuwe rijen:

Een tabel met twee rijen en zes kolommen met taxiritgegevens.