Poznámka
Na prístup k tejto stránke sa vyžaduje oprávnenie. Môžete sa skúsiť prihlásiť alebo zmeniť adresáre.
Na prístup k tejto stránke sa vyžaduje oprávnenie. Môžete skúsiť zmeniť adresáre.
Vzťahuje sa na:✅ Warehouse v službe Microsoft Fabric
Náhradné kľúče sú identifikátory používané v dátovom sklade na jednoznačné rozlíšenie riadkov, nezávisle od ich prirodzených kľúčov. V Fabric Data Warehouse IDENTITY stĺpce umožňujú automatické generovanie týchto náhradných kľúčov pri vkladaní nových riadkov do tabuľky. Tento článok vysvetľuje, ako používať IDENTITY stĺpce v Fabric Data Warehouse na efektívne vytváranie a správu náhradných kľúčov.
Prečo použiť stĺpec IDENTITY?
IDENTITY stĺpce eliminujú potrebu manuálneho priraďovania klávesov, čím sa znižuje riziko chýb a zjednodušuje sa príjem dát. Systémovo spravované jedinečné hodnoty sú ideálne ako náhradné a primárne kľúče. V porovnaní s manuálnymi prístupmi na vytváranie náhradných kľúčov ponúkajú stĺpce lepší výkon, IDENTITY pretože jedinečné kľúče sa generujú automaticky bez dodatočnej logiky pri dotazoch.
Bigint dátový typ, požadovaný pre IDENTITY stĺpce, môže uložiť až 9 223 372 036 854 775 807 kladných celočíselných hodnôt, čím sa zabezpečuje, že počas celej životnosti tabuľky každý riadok dostáva jedinečnú hodnotu vo svojom IDENTITY stĺpci.
Pre plán migrácie dát s náhradnými kľúčmi z iných databázových platforiem pozri Migrovať stĺpce IDENTITY do Fabric Data Warehouse.
Syntax
Na definovanie stĺpca IDENTITY v Fabric Data Warehouse sa vlastnosť IDENTITY použije spolu s požadovaným stĺpcom. Syntax je nasledovná:
CREATE TABLE { warehouse_name.schema_name.table_name | schema_name.table_name | table_name } (
[column_name] BIGINT IDENTITY,
[ ,... n ]
-- Other columns here
);
Ako fungujú stĺpce IDENTITY
V rámci Fabric Data Warehouse nemôžete špecifikovať vlastnú počiatočnú hodnotu alebo prírastok; Systém spravuje hodnoty interne, aby zabezpečil jedinečnosť.
IDENTITY stĺpce vždy produkujú kladné celočíselné hodnoty. Každý nový riadok dostane novú hodnotu a jedinečnosť je zaručená, pokiaľ tabuľka existuje. Keď je hodnota použitá, už tú istú hodnotu nepoužívajte, IDENTITY čím sa zachováva integrita a jedinečnosť kľúča. Medzery sa môžu objaviť na hodnotách, ktoré stĺpec produkuje IDENTITY .
Prideľovanie hodnôt
Kvôli distribuovanej architektúre skladového enginu vlastnosť IDENTITY nezaručuje poradie, v akom sú pridelené surrogate hodnoty. Vlastnosť IDENTITY je navrhnutá tak, aby škálovala naprieč výpočtovými uzlami a maximalizovala paralelizmus bez ovplyvnenia výkonu záťaže. V dôsledku toho môžu mať hodnotové rozsahy pri rôznych úlohách prijímania rôzne sekvenčné rozsahy.
Na ilustráciu tohto správania zvážte nasledujúci príklad:
-- 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;
Ukážkový výsledok:
V tomto príklade Ingestion task A sa a vykonávajú Ingestion task B postupne ako samostatné úlohy. Hoci úlohy bežali postupne, prvý a posledný štyri riadok majú rôzne rozsahy identitných kľúčov v dbo.T1.C1. Okrem toho, ako je pozorované v tomto príklade, môžu vzniknúť medzery medzi rozsahmi priradenými pre úlohy A a úlohy B.
IDENTITY v Fabric Data Warehouse zaručuje, že všetky hodnoty v stĺpci IDENTITY sú jedinečné, ale môžu existovať medzery v rozsahoch vytvorených pre danú úlohu príjmu.
Systémové zobrazenia
Pohľad sys.identity_columns katalógu možno použiť na zobrazenie všetkých identifikačných stĺpcov v sklade. Nasledujúci príklad uvádza všetky tabuľky, ktoré obsahujú IDENTITY stĺpec vo svojej definícii, s ich príslušným názvom schémy a názvom stĺpca IDENTITY v tejto tabuľke:
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;
Limitations
- Iba bigint dátový typ je podporovaný pre
IDENTITYstĺpce v Fabric Data Warehouse. Pokus o použitie iných dátových typov vedie k chybe. -
IDENTITY_INSERTnie je podporovaný v Fabric Data Warehouse. Používatelia nemôžu aktualizovať ani manuálne vkladať hodnoty stĺpcov do stĺpcov identity v Fabric Data Warehouse. - Definovanie a
seednieincrementje podporované. V dôsledku toho nie je podporované opätovné osievanie stĺpcaIDENTITY. - Pridávanie nového
IDENTITYstĺpca do existujúcej tabuľky sALTER TABLEnie je podporované. Zvážte použitie CREATE TABLE AS SELECT (CTAS) alebo SELECT... INTO ako alternatívy na vytvorenie kópie existujúcej tabuľky, ktorá pridá stĺpecIDENTITYdo jej definície. - Niektoré obmedzenia platia pri zachovaní
IDENTITYstĺpcov pri vytváraní novej tabuľky v dôsledku výberu z inej tabuľky s aleboCREATE TABLE AS SELECT (CTAS)SELECT... INTO. Pre viac informácií pozri sekciu Dátové typy v klauzule SELECT - INTO (Transact-SQL).
Príklady
Odpoveď: Vytvorte tabuľku so stĺpcom IDENTITY
CREATE TABLE Employees (
EmployeeID BIGINT IDENTITY,
FirstName VARCHAR(50),
LastName VARCHAR(50)
);
Tento príkaz vytvára tabuľku Zamestnanci, kde každý nový riadok automaticky dostane unikátnu EmployeeID hodnotu bigint .
B. INSERT do tabuľky s identifikačným stĺpcom
Keď je prvý stĺpec stĺpcom IDENTITY , nemusíte ho špecifikovať v zozname stĺpcov.
INSERT INTO Employees (FirstName, LastName) VALUES ('Ensi','Vasala')
Je tiež možné generovať názvy stĺpcov, ak sú uvedené hodnoty pre všetky stĺpce cieľovej tabuľky (okrem identifikačného stĺpca):
INSERT INTO Employees VALUES ('Quarantino', 'Esposito')
C. Vytvorte novú tabuľku so stĺpcom IDENTITY pomocou CREATE TABLE AS SELECT (CTAS)
Ako príklad vezmime jednoduchú tabuľku:
CREATE TABLE Employees (
EmployeeID BIGINT IDENTITY,
FirstName VARCHAR(50),
LastName VARCHAR(50)
);
Môžeme použiť CREATE TABLE AS SELECT (CTAS) na vytvorenie kópie tejto tabuľky, pričom si zachováme vlastnosť IDENTITY v cieľovej tabuľke:
CREATE TABLE RetiredEmployees
AS SELECT * FROM Employees
Stĺpec v cieľovej tabuľke dedí vlastnosť IDENTITY zo zdrojovej tabuľky. Pre zoznam obmedzení, ktoré sa na tento scenár vzťahujú, pozrite sekciu Dátové typy v klauzule SELECT - INTO.
D. Vytvorte novú tabuľku so stĺpcom IDENTITY pomocou SELECT... DO
Ako príklad vezmime jednoduchú tabuľku:
CREATE TABLE dbo.Employees (
EmployeeID BIGINT IDENTITY,
FirstName VARCHAR(50),
LastName VARCHAR(50),
Retired BIT
);
Môžeme použiť SELECT... INTO na vytvorenie kópie tejto tabuľky, pričom vlastnosť v cieľovej tabuľke zostane:IDENTITY
SELECT *
INTO dbo.RetiredEmployees
FROM dbo.Employees
WHERE Retired = 1;
Stĺpec v cieľovej tabuľke dedí vlastnosť IDENTITY zo zdrojovej tabuľky. Pre zoznam obmedzení, ktoré sa na tento scenár vzťahujú, pozrite sekciu Dátové typy v klauzule SELECT - INTO.