Fabric Data Warehouse'ta IDENTITY sütunlarını kullanın

Şunlar için geçerlidir:✅ Warehouse in Microsoft Fabric

Bu eğitim, Fabric Data Warehouse'de IDENTITY sütunlarının vekil anahtarlar oluşturmak ve yönetmek için nasıl kullanılacağını açıklar. Kimlik sütunlarına sahip tabloları nasıl oluşturacağınızı, nasıl veri ekleyeceğinizi, IDENTITY_INSERT ile nasıl açık değerler ekleyeceğinizi ve kimlik aralığını DBCC CHECKIDENT ile nasıl yeniden tohumlayacağınızı öğrenirsiniz.

Önkoşullar

  • Katılımcı veya daha yüksek izinlere sahip bir çalışma alanındaki Warehouse öğesine erişim.
  • Bir sorgulama aracı. Bu eğitim, Microsoft Fabric portalındaki SQL sorgu düzenleyicisini kullanır, ancak herhangi bir T-SQL sorgulama aracını da kullanabilirsiniz.
  • T-SQL'in temel bir anlayışı.

IDENTITY sütunu nedir?

Sütun IDENTITY , yeni satırlar için otomatik olarak benzersiz değerler oluşturan sayısal bir sütundur. Bu davranış, her satırın manuel girinti olmadan benzersiz bir tanımlayıcı alması nedeniyle vekil anahtarların uygulanması için ideal kılar.

IDENTITY sütunu oluşturun

Bir IDENTITY sütun tanımlamak için, T-SQL sözdiziminin sütun tanımında CREATE TABLE anahtar kelime belirtinIDENTITY:

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

IDENTITY sütunuyla tablo oluşturma

Bu eğitimde, NY Taxi açık veri setinden tablonun daha basit bir versiyonunu Trip oluşturup bir TripIDIDENTITY sütun eklersiniz. Her yeni satır, tabloda benzersiz bir TripID değer alır.

  1. Bir IDENTITY sütunlu tablo tanımlayın.

     CREATE TABLE dbo.Trip
     (
         TripID               bigint IDENTITY,
         tpepPickupDateTime   datetime2(6),
         tpepDropoffDateTime  datetime2(6),
         passengerCount       int,
         tripDistance         float,
         fareAmount           float,
         totalAmount          float
     );
    
  2. Verileri tabloya aktarmak için kullanılır COPY INTO . IDENTITY ile bir COPY INTO sütunu kullandığınızda, sütun listesini belirtin ve bunu kaynak verideki sütunlara eşleyin.

     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. Verileri ve sütuna IDENTITY atanan değerleri önizleme:

    SELECT TOP 10 *
    FROM Trip;
    

    Çıktı, her satır için otomatik olarak oluşturulan TripID değeri içerir.

    Bir taksi yolculuğu veri kümesinin ilk 10 satırını içeren tabloyu gösteren sorgu sonuçlarının ekran görüntüsü.

    Önemli

    Değerleriniz bu makaledeki değerlerden farklı olabilir. IDENTITY Sütunlar, benzersiz garanti edilen değerler üretir, ancak değerler mutlaka ardışık veya sıralı değildir ve boşluklar oluşabilir.

  4. Yeni satırları içeri aktarmak için INSERT INTO kullanın:

     INSERT INTO dbo.Trip
     VALUES ('2026-01-01T00:00:00', '2013-01-01T00:12:00', 1, 2.4, 10.5, 13.0);
    
  5. Sütun listesi, INSERT INTO ile isteğe bağlıdır. Bir veri verdiğinizde, giriş verisi sağladığınız tüm sütunların isimlerini belirtin, sadece sütun IDENTITY hariç:

     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. Eklenen satırları inceleyin:

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

    Yeni satırlara atanan değerleri gözlemleyin:

    Taksi yolculuğu verilerini gösteren iki satır ve altı sütunlu bir tablonun ekran görüntüsü.

IDENTITY_INSERT ile açık değerler ekleme

Veri taşınmasında, sentinel değerlerini doldururken veya yedekten veri geri getirirken kimlik sütununa belirli değerler eklemeniz gerekebilir. Bu eklemeleri etkinleştirmek için SET IDENTITY_INSERT kullanın.

Bu bölümde, bir boyut tablosu oluşturur ve iyi bilinen anahtar değerlerine sahip sentinel satırlar eklemek için IDENTITY_INSERT kullanırsınız.

  1. Bir IDENTITY sütunlu boyut tablosu oluşturun:

    CREATE TABLE dbo.DimCustomer
    (
        CustomerKey BIGINT IDENTITY,
        CustomerName VARCHAR(100),
        CustomerType VARCHAR(20)
    );
    
  2. Düzenli sıralar ekleyin. Kimlik değerleri otomatik olarak üretilir:

    INSERT INTO dbo.DimCustomer (CustomerName, CustomerType)
    VALUES ('Contoso Ltd', 'Enterprise'),
           ('Fabrikam Inc', 'SMB'),
           ('Northwind Traders', 'Enterprise');
    
  3. Sentinel değerlerini eklemeyi etkinleştir IDENTITY_INSERT . IDENTITY_INSERT, ON olduğunda, kimlik sütununu içeren bir sütun listesi sağlayın:

    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. Değerleri açıkça ekledikten sonra, gelecekte otomatik olarak oluşturulacak değerlerin eklenen değerlerle çakışmamasını sağlamak için kimlik sütununu DBCC CHECKIDENT ile yeniden tohumlayın:

    DBCC CHECKIDENT('dbo.DimCustomer', RESEED);
    
  5. Sentinel sıralarının otomatik olarak oluşturulan sıralarla birlikte göründüğünü doğrulayın:

    SELECT *
    FROM dbo.DimCustomer
    ORDER BY CustomerKey;
    
  6. Bir satır ekleyin ve otomatik olarak oluşturulan değerin çakışmadığını doğrulayın:

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

Öğretici kaynaklarını temizleme

İsteğe göre, bu eğitim sırasında oluşturulan tabloları bırakabilirsiniz:

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