Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlar için geçerlidir:✅ Warehouse in Microsoft Fabric
Önemli
Bu özellik önizleme aşamasındadır.
Vekil anahtarlar, doğal anahtarlarından bağımsız olarak satırları benzersiz bir şekilde ayırt etmek için veri ambarında kullanılan tanımlayıcılardır. Fabric Veri Ambarı'nda sütunlar, IDENTITY tabloya yeni satır eklerken bu vekil anahtarların otomatik olarak oluşturulmasını sağlar. Bu makalede, Fabric Veri Ambarı'ndaki IDENTITY sütunları kullanarak yedek anahtarların nasıl verimli bir şekilde oluşturulup yönetileceği açıklanmaktadır.
Kimlik sütunu neden kullanılır?
IDENTITY sütunlar el ile anahtar atama gereksinimini ortadan kaldırarak hata riskini azaltır ve veri alımını basitleştirir. Sistem tarafından yönetilen benzersiz değerler vekil anahtarlar ve birincil anahtarlar olarak idealdir. Vekil anahtar üretmeye yönelik el ile yapılan yaklaşımlarla karşılaştırıldığında, IDENTITY benzersiz anahtarlar sorgularda ek mantık olmadan otomatik olarak oluşturulduğundan sütunlar üstün performans sunar.
Bigint veri türü, IDENTITY sütunları için gereklidir ve 9.223.372.036.854.775.807 pozitif tamsayı değerini depolayarak tablonun ömrü boyunca her satırın IDENTITY sütununda benzersiz bir değer almasını sağlar.
Diğer veritabanı platformlarından yedek anahtarlarla veri geçirme planı için bkz. IDENTITY sütunlarını Doku Veri Ambarı'na geçirme.
Sözdizimi
Kumaş Veri Ambarı'nda bir IDENTITY sütun tanımlamak için IDENTITY özelliği istenen sütunla kullanılır. Söz dizimi aşağıdaki gibidir:
CREATE TABLE { warehouse_name.schema_name.table_name | schema_name.table_name | table_name } (
[column_name] BIGINT IDENTITY,
[ ,... n ]
-- Other columns here
);
KIMLIK sütunları nasıl çalışır?
Doku Veri Ambarı'nın içinde özel bir başlangıç değeri veya artış belirtemezsiniz; sistem, benzersizliği sağlamak için değerleri dahili olarak yönetir.
IDENTITY sütunlar her zaman pozitif tamsayı değerleri üretir. Her yeni satır yeni bir değer alır ve tablo mevcut olduğu sürece benzersizlik garanti edilir. Bir değer kullanıldığında, IDENTITY aynı değeri bir daha kullanmaz ve hem anahtar bütünlüğünü hem de benzersizliğini korur. Sütunun IDENTITY ürettiği değerlerde boşluklar görünebilir.
Değerleri ayırma
Ambar motorunun dağıtılmış mimarisinden dolayı IDENTITY özelliği, temsilci değerlerin ayrılma sırasını garantilemez.
IDENTITY özelliği, yük performansını etkilemeden paralelliği en üst düzeye çıkarmak için işlem düğümleri arasında ölçeği genişletecek şekilde tasarlanmıştır. Sonuç olarak, farklı alma görevlerindeki değer aralıkları farklı sıra aralıklarına sahip olabilir.
Bu davranışı göstermek için aşağıdaki örneği göz önünde bulundurun:
-- Create a table with an IDENTITY column
CREATE TABLE dbo.T1(
C1 BIGINT IDENTITY,
C2 VARCHAR(30) NULL
)
-- Ingestion task A
INSERT INTO dbo.T1
VALUES (NULL), (NULL), (NULL), (NULL);
-- Ingestion task B
INSERT INTO dbo.T1
VALUES (NULL), (NULL), (NULL), (NULL);
-- Reviewing the data
SELECT * FROM dbo.T1;
Örnek sonuç:
Bu örnekte Ingestion task A ve Ingestion task B, bağımsız görevler olarak sıralı şekilde yürütülür. Görevler ardışık olarak çalıştırılasa da, ilk ve son dört satır içinde dbo.T1.C1farklı kimlik anahtarı aralıklarına sahiptir. Buna ek olarak, bu örnekte de gözlemlendiği gibi, A görevi ve B görevi için atanan aralıklar arasında boşluklar oluşabilir.
IDENTITY Doku Veri Ambarı'nda bir IDENTITY sütundaki tüm değerlerin benzersiz olmasını garanti eder, ancak belirli bir alma görevi için üretilen aralıklarda boşluklar olabilir.
Sistem görünümleri
sys.identity_columns katalog görünümü, bir ambardaki tüm kimlik sütunlarını listelemek için kullanılabilir. Aşağıdaki örnekte, tanımlarında ilgili şema adı ve bu tablodaki sütunun IDENTITY adıyla birlikte bir IDENTITY sütun içeren tüm tablolar listelenmiştir:
SELECT
s.name AS SchemaName,
t.name AS TableName,
c.name AS IdentityColumnName
FROM
sys.identity_columns AS ic
INNER JOIN
sys.columns AS c ON ic.[object_id] = c.[object_id]
AND ic.column_id = c.column_id
INNER JOIN
sys.tables AS t ON ic.[object_id] = t.[object_id]
INNER JOIN
sys.schemas AS s ON t.[schema_id] = s.[schema_id]
ORDER BY
s.name, t.name;
Sınırlamalar
- Fabric Veri Ambarı'ndaki sütunlar için yalnızca bigint veri türü desteklenir. Diğer veri türlerini kullanmaya çalışmak hataya neden olur.
-
IDENTITY_INSERTFabric Veri Ambarı'nda desteklenmez. Kullanıcılar Doku Veri Ambarı'ndaki kimlik sütunlarına sütun değerlerini güncelleştiremez veya el ile ekleyemez. -
seedveincrementtanımlamak desteklenmez. Sonuç olarak,IDENTITYsütununun yeniden belirlenmesi desteklenmez. - ile
IDENTITYvar olan bir tabloya yeniALTER TABLEsütun ekleme desteklenmez. Mevcut bir tablonun tanımına sütun ekleyen bir kopyasını oluşturmak için CREATE TABLE AS SELECT (CTAS) veya SELECT... INTO kullanmayı alternatifler olarak düşünün. - Yeni bir tablo oluşturulurken,
IDENTITYsütunlarınınCREATE TABLE AS SELECT (CTAS)veyaSELECT... INTOile farklı bir tablodan seçilmesi sonucunda nasıl korunacağına dair bazı sınırlamalar geçerlidir. Daha fazla bilgi için SELECT - INTO Yan Tümcesi 'nin Veri Türleri bölümüne (Transact-SQL) bakın.
Örnekler
A. IDENTITY sütunuyla tablo oluşturma
CREATE TABLE Employees (
EmployeeID BIGINT IDENTITY,
FirstName VARCHAR(50),
LastName VARCHAR(50)
);
Bu ifade, her yeni satırın otomatik olarak benzersiz bir EmployeeIDbigint değeri aldığı bir Employees tablosu oluşturur.
B. Kimlik sütunu olan bir tabloya INSERT
İlk sütun bir IDENTITY sütun olduğunda, sütun listesinde belirtmeniz gerekmez.
INSERT INTO Employees (FirstName, LastName) VALUES ('Ensi','Vasala')
Hedef tablonun tüm sütunları için değerler sağlanmışsa (kimlik sütunu hariç) sütun adlarını yaymak da mümkündür:
INSERT INTO Employees VALUES ('Quarantino', 'Esposito')
C. CREATE TABLE AS SELECT (CTAS) kullanarak IDENTITY sütunuyla yeni bir tablo oluşturma
Basit bir tabloyu örnek olarak ele alalım:
CREATE TABLE Employees (
EmployeeID BIGINT IDENTITY,
FirstName VARCHAR(50),
LastName VARCHAR(50)
);
Bu tablonun bir kopyasını oluşturmak için CREATE TABLE AS SELECT (CTAS) kullanabiliriz, ve özelliği hedef tabloda kalıcı hale getirmek için IDENTITY:
CREATE TABLE RetiredEmployees
AS SELECT * FROM Employees
Hedef tablodaki sütun, IDENTITY özelliği kaynak tablodan miras alır. Bu senaryoya uygulanan sınırlamalar listesi için SELECT - INTO Maddesi'nin Veri Tipleri bölümüne bakınız.
D. SELECT... INTO ifadesini kullanarak bir IDENTITY sütunu içeren yeni bir tablo oluşturun
Basit bir tabloyu örnek olarak ele alalım:
CREATE TABLE dbo.Employees (
EmployeeID BIGINT IDENTITY,
FirstName VARCHAR(50),
LastName VARCHAR(50),
Retired BIT
);
Bu tabloda, SELECT... INTO kullanarak bir kopya oluşturabilir ve IDENTITY özelliğini hedef tabloda koruyabiliriz.
SELECT *
INTO dbo.RetiredEmployees
FROM dbo.Employees
WHERE Retired = 1;
Hedef tablodaki sütun, IDENTITY özelliği kaynak tablodan miras alır. Bu senaryoya uygulanan sınırlamalar listesi için SELECT - INTO Maddesi'nin Veri Tipleri bölümüne bakınız.