Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Azure Databricks támogatja a szabványos SQL-kényszerkezelési záradékokat:
- A korlátozások ellenőrzik az adatintegritást, mielőtt sorokat adunk egy táblához.
- Az információs kényszerek (elsődleges kulcs, idegen kulcs és egyedi kényszerek) a táblák mezői közötti kapcsolatokat határozzák meg, és nincsenek kényszerítve.
Az Azure Databricksre vonatkozó összes korlátozáshoz Delta Lake szükséges.
A Lakeflow-folyamatokkal kapcsolatos egyik fogalomról lásd: Az adatminőség kezelése folyamatelvárásokkal.
Kikényszerített korlátozások
Ha egy korlátozást megsértenek, a tranzakció hiba miatt meghiúsul. Azure Databricks kétféle kényszert támogat:
-
NOT NULL: azt jelzi, hogy az adott oszlopok értékei nem lehetnek null értékűek. -
CHECK: azt jelzi, hogy egy megadott logikai kifejezésnek igaznak kell lennie az egyes bemeneti sorokhoz.
Note
A megszorítás hozzáadása frissíti a táblaírási protokollt, ha az aktuális íróprotokoll-verzió 3-nál kisebb. Ez hatással lehet a külső Delta Lake-ügyfelekkel való kompatibilitásra. Lásd a Delta Lake szolgáltatáskompatibilitását és protokolljait.
NOT NULL kényszer
Tábla létrehozásakor adjon meg NOT NULL korlátozásokat a sémában. Kényszerek elvetéséhez vagy hozzáadásához használja a következő NOT NULL parancsot: ALTER TABLE ... ALTER COLUMN
CREATE TABLE people10m (
id INT NOT NULL,
firstName STRING,
middleName STRING NOT NULL,
lastName STRING,
gender STRING,
birthDate TIMESTAMP,
ssn STRING,
salary INT
);
ALTER TABLE people10m ALTER COLUMN middleName DROP NOT NULL;
ALTER TABLE people10m ALTER COLUMN ssn SET NOT NULL;
Azure Databricks ellenőrzi, hogy az összes meglévő sor megfelel-e a korlátozásnak, mielőtt NOT NULL korlátozást ad hozzá egy táblához.
Ha egy szerkezetbe ágyazott oszlopra NOT NULL kényszert ad meg, a szülőstruktúra nem lehet null értékű. A tömb- vagy térképtípusokba beágyazott oszlopok nem fogadnak el NOT NULL korlátozásokat.
Lásd: CREATE TABLE [USING] és ALTER TABLE ALTER COLUMN.
CHECK kényszer
A CHECK korlátozások kezelése a ALTER TABLE ADD CONSTRAINT és ALTER TABLE DROP CONSTRAINT parancsokkal.
ALTER TABLE ADD CONSTRAINT ellenőrzi, hogy az összes meglévő sor megfelel-e a korlátozásnak, mielőtt hozzáadja a korlátozást a táblához.
A korlátozások ellenőrzésére a következő korlátozások vonatkoznak:
- A
CHECKkényszerkifejezések bármilyen SQL-függvényt használhatnak a Sparkban, amely mindig ugyanazt az eredményt adja vissza ugyanazon argumentumértékek megadásakor, kivéve a következő függvénytípusokat:- Felhasználó által definiált függvények.
- Összesítő függvények.
- Ablakfüggvények.
- Több sort visszaadó függvények.
Hozzáadás meglévő táblához
CREATE TABLE people10m (
id INT,
firstName STRING,
middleName STRING,
lastName STRING,
gender STRING,
birthDate TIMESTAMP,
ssn STRING,
salary INT
);
ALTER TABLE people10m ADD CONSTRAINT dateWithinRange CHECK (birthDate > '1900-01-01');
ALTER TABLE people10m DROP CONSTRAINT dateWithinRange;
Lásd: ALTER TABLE ADD CONSTRAINT és ALTER TABLE DROP CONSTRAINT.
A korlátozástáblázat tulajdonságainak megtekintése
Táblák DESCRIBE DETAIL korlátainak megtekintéséhez használja a SHOW TBLPROPERTIES és a CHECK parancsokat.
ALTER TABLE people10m ADD CONSTRAINT validIds CHECK (id > 1 and id < 99999999);
DESCRIBE DETAIL people10m;
SHOW TBLPROPERTIES people10m;
Ellenőrzési korlátozások eltávolítása
A Databricks Runtime 15.4 LTS-ben és újabb verziókban a(z) DROP FEATURE parancs segítségével távolítsa el az ellenőrző korlátozásokat egy táblából, és módosítsa vissza a táblaprotokoll verzióját.
Lásd Delta Lake tábla funkció elhagyása és a tábla protokolljának leminősítése.
Elsődleges kulcs, idegen kulcs és egyedi korlátozások deklarálása
Az elsődleges kulcs, az idegen kulcs és az egyedi korlátozások csak tájékoztató jellegűek, és nincsenek kényszerítve. A lekérdezésoptimalizálással javíthatják a teljesítményt.
- Elsődleges kulcs és idegen kulcs: a Unity Catalog és Delta Lake-táblákhoz érhető el a Databricks Runtime 13.3 LTS-ben és újabb verziókban. GA a Databricks Runtime 15.2-es és újabb verzióiban. Az idegen kulcsnak egy elsődleges kulcsra vagy egy másik táblában található egyedi korlátozásra kell hivatkoznia.
-
Egyedi: nyilvános előzetesként érhető el a Unity Catalog- és Delta Lake-táblákhoz a Databricks SQL-ben és a Databricks Runtime 18.2-es és újabb verzióiban. Egy tábla több egyedi korlátozással is rendelkezhet. Az idegen kulcsok a következővel hivatkozhatnak egy egyedi oszlopra:
REFERENCES parent_table(unique_col). Az egyedi oszlopok null értékűek lehetnek, mertNULLaz értékek egymástól eltérőként vannak kezelve.
Kérdezze le a information_schema elemet, használja a DESCRIBE TABLE EXTENDED elemet, vagy a SHOW CREATE TABLE elemet, hogy részletes információkat kapjon arról, hogyan alkalmazzák a megkötéseket az adott katalógusban.
Hozzáadás új táblákhoz
Deklarálja az elsődleges kulcsokat, az idegen kulcsokat és az egyedi korlátozásokat a táblaspecifikációs záradék részeként a tábla létrehozása során:
CREATE TABLE T(pk1 INTEGER NOT NULL, pk2 INTEGER NOT NULL,
CONSTRAINT t_pk PRIMARY KEY(pk1, pk2));
CREATE TABLE S(pk INTEGER NOT NULL PRIMARY KEY,
fk1 INTEGER, fk2 INTEGER,
CONSTRAINT s_t_fk FOREIGN KEY(fk1, fk2) REFERENCES T);
CREATE TABLE U(id INTEGER NOT NULL, email STRING NOT NULL,
CONSTRAINT u_uq_email UNIQUE(email));
A CTAS-utasítások nem támogatják ezt a korlátozási záradékot.
Hozzáadás meglévő táblákhoz
Korlátozások hozzáadása meglévő táblákhoz:
ALTER TABLE T ADD CONSTRAINT t_pk PRIMARY KEY(pk1, pk2);
ALTER TABLE S ADD CONSTRAINT s_t_fk FOREIGN KEY(fk1, fk2) REFERENCES T;
ALTER TABLE U ADD CONSTRAINT u_uq_email UNIQUE(email);