Gunakan kolom IDENTITY di Fabric Data Warehouse

Diterapkan pada:✅ Gudang di Microsoft Fabric

Tutorial ini menjelaskan cara menggunakan kolom IDENTITY di Fabric Data Warehouse untuk membuat dan mengelola kunci pengganti. Anda belajar cara membuat tabel dengan kolom identitas, menyisipkan data, menyisipkan nilai eksplisit dengan IDENTITY_INSERT, dan menanam ulang rentang identitas dengan DBCC CHECKIDENT.

Prasyarat

  • Akses ke item Gudang dalam ruang kerja dengan izin Kontributor atau yang lebih tinggi.
  • Alat kueri. Tutorial ini menggunakan editor query SQL di portal Microsoft Fabric, tetapi Anda dapat menggunakan alat query T-SQL apa pun.
  • Pemahaman dasar tentang T-SQL.

Apa itu kolom IDENTITY?

Kolom IDENTITY adalah kolom numerik yang secara otomatis menghasilkan nilai unik untuk baris baru. Perilaku ini membuatnya ideal untuk mengimplementasikan kunci pengganti karena setiap baris mendapatkan pengidentifikasi unik tanpa input manual.

Membuat kolom IDENTITY

Untuk mendefinisikan kolom IDENTITY , tentukan IDENTITY kata kunci dalam definisi kolom sintaks 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
);

Membuat tabel dengan kolom IDENTITY

Dalam tutorial ini, Anda membuat versi tabel Trip yang lebih sederhana dari dataset terbuka NY Taxi dan menambahkan kolom TripIDIDENTITY. Setiap baris baru mendapatkan TripID nilai yang unik dalam tabel.

  1. Tentukan sebuah tabel dengan kolom IDENTITY.

     CREATE TABLE dbo.Trip
     (
         TripID               bigint IDENTITY,
         tpepPickupDateTime   datetime2(6),
         tpepDropoffDateTime  datetime2(6),
         passengerCount       int,
         tripDistance         float,
         fareAmount           float,
         totalAmount          float
     );
    
  2. Gunakan COPY INTO untuk memasukkan data ke dalam tabel. Saat Anda menggunakan COPY INTO dengan kolom IDENTITY , berikan daftar kolom dan petakan ke kolom dalam data sumber.

     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. Pratinjau data dan nilai yang diberikan pada IDENTITY kolom:

    SELECT TOP 10 *
    FROM Trip;
    

    Keluaran mencakup nilai TripID yang dibuat secara otomatis untuk setiap baris.

    Cuplikan layar hasil kueri memperlihatkan tabel dengan 10 baris pertama himpunan data perjalanan taksi.

    Penting

    Nilai-nilai Anda mungkin berbeda dari nilai-nilai dalam artikel ini. IDENTITY Kolom menghasilkan nilai yang dijamin unik, tetapi nilainya tidak selalu berurutan atau terurut, dan jeda dapat terjadi.

  4. Gunakan INSERT INTO untuk memasukkan baris baru:

     INSERT INTO dbo.Trip
     VALUES ('2026-01-01T00:00:00', '2013-01-01T00:12:00', 1, 2.4, 10.5, 13.0);
    
  5. Daftar kolom bersifat opsional dengan INSERT INTO. Jika Anda menyediakannya, tentukan nama semua kolom yang Anda isi dengan data input, kecuali kolom 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. Tinjau baris yang disisipkan:

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

    Amati nilai yang ditetapkan ke baris baru:

    Tangkapan layar tabel dengan dua baris dan enam kolom yang menampilkan data perjalanan taksi.

Sisipkan nilai eksplisit dengan IDENTITY_INSERT

Anda mungkin perlu memasukkan nilai tertentu ke dalam kolom identitas selama migrasi data, saat mengisi nilai sentinel, atau saat memulihkan data dari cadangan. Gunakan SET IDENTITY_INSERT untuk mengaktifkan sisipan ini.

Di bagian ini, Anda membuat tabel dimensi dan menggunakannya IDENTITY_INSERT untuk menambahkan baris sentinel dengan nilai kunci yang sudah dikenal.

  1. Buat tabel dimensi dengan kolom IDENTITY :

    CREATE TABLE dbo.DimCustomer
    (
        CustomerKey BIGINT IDENTITY,
        CustomerName VARCHAR(100),
        CustomerType VARCHAR(20)
    );
    
  2. Masukkan baris reguler. Nilai identitas dihasilkan secara otomatis:

    INSERT INTO dbo.DimCustomer (CustomerName, CustomerType)
    VALUES ('Contoso Ltd', 'Enterprise'),
           ('Fabrikam Inc', 'SMB'),
           ('Northwind Traders', 'Enterprise');
    
  3. Aktifkan IDENTITY_INSERT untuk menambahkan nilai sentinel. Ketika IDENTITY_INSERT adalah ON, berikan daftar kolom yang mencakup kolom identitas:

    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. Setelah menyisipkan nilai eksplisit, setel ulang kolom identitas dengan DBCC CHECKIDENT untuk memastikan bahwa nilai yang dibuat secara otomatis nantinya tidak berkonflik dengan nilai yang disisipkan:

    DBCC CHECKIDENT('dbo.DimCustomer', RESEED);
    
  5. Pastikan baris sentinel muncul bersama baris yang dihasilkan secara otomatis:

    SELECT *
    FROM dbo.DimCustomer
    ORDER BY CustomerKey;
    
  6. Sisipkan baris dan pastikan nilai yang dihasilkan secara otomatis tidak bertentangan:

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

Membersihkan sumber daya tutorial

Opsional, hapus tabel yang dibuat selama tutorial ini:

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