Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
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.
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 );Gunakan
COPY INTOuntuk memasukkan data ke dalam tabel. Saat Anda menggunakanCOPY INTOdengan kolomIDENTITY, 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');Pratinjau data dan nilai yang diberikan pada
IDENTITYkolom:SELECT TOP 10 * FROM Trip;Keluaran mencakup nilai
TripIDyang dibuat secara otomatis untuk setiap baris.Penting
Nilai-nilai Anda mungkin berbeda dari nilai-nilai dalam artikel ini.
IDENTITYKolom menghasilkan nilai yang dijamin unik, tetapi nilainya tidak selalu berurutan atau terurut, dan jeda dapat terjadi.Gunakan
INSERT INTOuntuk 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);Daftar kolom bersifat opsional dengan
INSERT INTO. Jika Anda menyediakannya, tentukan nama semua kolom yang Anda isi dengan data input, kecuali kolomIDENTITY: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);Tinjau baris yang disisipkan:
SELECT * FROM dbo.Trip WHERE CAST(tpepPickupDateTime AS date) = '2026-01-01';Amati nilai yang ditetapkan ke baris baru:
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.
Buat tabel dimensi dengan kolom
IDENTITY:CREATE TABLE dbo.DimCustomer ( CustomerKey BIGINT IDENTITY, CustomerName VARCHAR(100), CustomerType VARCHAR(20) );Masukkan baris reguler. Nilai identitas dihasilkan secara otomatis:
INSERT INTO dbo.DimCustomer (CustomerName, CustomerType) VALUES ('Contoso Ltd', 'Enterprise'), ('Fabrikam Inc', 'SMB'), ('Northwind Traders', 'Enterprise');Aktifkan
IDENTITY_INSERTuntuk menambahkan nilai sentinel. KetikaIDENTITY_INSERTadalahON, 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;Setelah menyisipkan nilai eksplisit, setel ulang kolom identitas dengan
DBCC CHECKIDENTuntuk memastikan bahwa nilai yang dibuat secara otomatis nantinya tidak berkonflik dengan nilai yang disisipkan:DBCC CHECKIDENT('dbo.DimCustomer', RESEED);Pastikan baris sentinel muncul bersama baris yang dihasilkan secara otomatis:
SELECT * FROM dbo.DimCustomer ORDER BY CustomerKey;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;