Megosztás a következőn keresztül:


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: