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 DLT-nek hasonló fogalma van, más néven elvárások. Lásd: Adatminőség kezelése folyamatelvárásokkal.
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 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.
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. Lásd Hogyan kezeli az Azure Databricks a Delta Lake-funkciók kompatibilitását? a táblaprotokoll verziószámozásának és a protokoll verziójának frissítésének megértéséhez.
NOT NULL
korlátozás beállítása az Azure Databricksben
Tábla létrehozásakor NOT NULL
korlátozásokat kell megadnia a sémában. A NOT NULL
korlátozásokat a ALTER TABLE ALTER COLUMN
parancs használatával elvethet vagy hozzáadhat.
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 NOT NULL
korlátozást 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 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 fogadják 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
Korlátozásokat a CHECK
és ALTER TABLE ADD CONSTRAINT
parancsok használatával kezelhetiALTER TABLE DROP CONSTRAINT
.
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 és ALTER TABLE DROP CONSTRAINT.
CHECK
korlátozások táblatulajdonságokként jelennek meg a DESCRIBE DETAIL
és SHOW TBLPROPERTIES
parancsok kimenetében.
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 DROP FEATURE
paranccsal eltávolíthatja az ellenőrző korlátozásokat egy táblából, és leminősítheti a táblaprotokollt.
Lásd a Delta táblázat funkciókat.
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 az újabb verziókban állnak rendelkezésre, a Databricks Runtime 15.2 és újabb verziók pedig teljes körű általános elérhetőséggel rendelkeznek.
- 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
, vagy a DESCRIBE
segítségével részletes információkat kaphat arról, hogy a korlátozások hogyan alkalmazhatók az adott katalógusban.
Lásd: