Az Azure Databricks korlátozásai
Az Azure Databricks támogatja a szabványos SQL-kényszerkezelési záradékokat. A korlátozások két kategóriába sorolhatók:
- A kényszerített ellenjavallatok biztosítják, hogy a táblához hozzáadott adatok minősége és integritása automatikusan ellenőrizve legyen.
- Az információs elsődleges kulcs és az idegenkulcs-megkötések a táblák mezői közötti kapcsolatokat kódolják, és nem kényszerítik őket.
Az Azure Databricksre vonatkozó összes korlátozáshoz Delta Lake szükséges.
A Delta Live Tables hasonló fogalom, más néven elvárások. Lásd: Adatminőség kezelése Delta Live Tables használatával.
Kényszerített korlátozások az Azure Databricksben
Ha egy korlátozást megsértenek, a tranzakció hiba miatt meghiúsul. Kétféle korlátozás támogatott:
NOT NULL
: azt jelzi, hogy 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.
Fontos
A korlátozás hozzáadása automatikusan frissíti a táblaíró protokolljának verzióját, ha az előző írói verzió 3-nál kisebb volt. Tekintse meg, hogyan kezeli az Azure Databricks a Delta Lake szolgáltatáskompatibilitását?
NOT NULL
Korlátozás beállítása az Azure Databricksben
Tábla létrehozásakor meg kell határoznia NOT NULL
a sémában a korlátozásokat. A parancs használatával ALTER TABLE ALTER COLUMN
elvethet vagy hozzáadhat NOT NULL
korlátozásokat.
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;
Mielőtt kényszert NOT NULL
ad egy táblához, az Azure Databricks ellenőrzi, hogy az összes meglévő sor megfelel-e a korlátozásnak.
Ha egy szerkezetbe ágyazott oszlopra kényszert ad meg NOT NULL
, 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
Korlátozás beállítása az Azure Databricksben
A korlátozásokat a parancsok és ALTER TABLE DROP CONSTRAINT
a ALTER TABLE ADD CONSTRAINT
parancsok használatával kezelhetiCHECK
. ALTER TABLE ADD CONSTRAINT
ellenőrzi, hogy az összes meglévő sor megfelel-e a korlátozásnak, mielőtt hozzáadja azt a 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 and ALTER TABLE DROP CONSTRAINT.
CHECK
a korlátozások táblatulajdonságokként jelennek meg a kimenetben és SHOW TBLPROPERTIES
a DESCRIBE DETAIL
parancsokban.
ALTER TABLE people10m ADD CONSTRAINT validIds CHECK (id > 1 and id < 99999999);
DESCRIBE DETAIL people10m;
SHOW TBLPROPERTIES people10m;
Ellenőrzési korlátozások letiltása
A Databricks Runtime 15.4 LTS-ben és újabb verziókban a paranccsal eltávolíthatja az DROP FEATURE
ellenőrző korlátozásokat egy táblából, és leminősítheti a táblaprotokollt.
Lásd a Delta-tábla funkcióinak elvetése című témakört.
Elsődleges kulcs- és idegenkulcs-kapcsolatok deklarálása
Feljegyzés
- Az elsődleges kulcs- és idegenkulcs-korlátozások a Databricks Runtime 11.3 LTS-ben és újabb verziókban érhetők el, és a Databricks Runtime 15.2-ben és újabb verziókban teljes ga-nak számítanak.
- Az elsődleges kulcsra és a külső kulcsra vonatkozó korlátozásokhoz a Unity Catalog és a Delta Lake szükséges.
A Unity Catalog-táblák mezőiben elsődleges kulcs- és idegenkulcs-kapcsolatokat használhat. Az elsődleges és idegen kulcsok csak tájékoztató jellegűek, és nem kényszeríthetők ki. Az idegen kulcsnak egy másik táblában lévő elsődleges kulcsra kell hivatkoznia.
Az elsődleges kulcsokat és az idegen kulcsokat a tábla specifikációs záradékának részeként deklarálhatja a tábla létrehozása során. Ez a záradék nem engedélyezett a CTAS-utasítások során. A meglévő táblákhoz kényszereket is hozzáadhat.
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);
Lekérdezheti a information_schema
korlátozásokat egy adott katalógusra, vagy DESCRIBE
lekérdezheti a korlátozásokat.
Lásd: