Beperkingen voor Azure Databricks

Azure Databricks biedt ondersteuning voor standaard sql-beperkingsbeheerclausules. Beperkingen kunnen in twee categorieën worden onderverdeeld:

  • Afgedwongen contraints zorgen ervoor dat de kwaliteit en integriteit van gegevens die aan een tabel worden toegevoegd, automatisch worden geverifieerd.
  • Informatieve primaire sleutel- en refererende-sleutelbeperkingen coderen relaties tussen velden in tabellen en worden niet afgedwongen.

Voor alle beperkingen voor Azure Databricks is Delta Lake vereist.

Delta Live Tables heeft een vergelijkbaar concept dat bekend staat als verwachtingen. Zie Gegevenskwaliteit beheren met Delta Live Tables.

Afgedwongen beperkingen voor Azure Databricks

Wanneer een beperking wordt geschonden, mislukt de transactie met een fout. Er worden twee typen beperkingen ondersteund:

  • NOT NULL: geeft aan dat waarden in specifieke kolommen niet null mogen zijn.
  • CHECK: geeft aan dat een opgegeven booleaanse expressie waar moet zijn voor elke invoerrij.

Belangrijk

Als u een beperking toevoegt, wordt de protocolversie van de tabelschrijver automatisch bijgewerkt als de vorige schrijverversie kleiner is dan 3. Zie Hoe beheert Azure Databricks de compatibiliteit van Delta Lake-functies? Om inzicht te hebben in versiebeheer van tabellen en wat het betekent om de protocolversie bij te werken.

NOT NULL Een beperking instellen in Azure Databricks

U geeft NOT NULL beperkingen op in het schema wanneer u een tabel maakt. U kunt beperkingen verwijderen of toevoegen NOT NULL met behulp van de ALTER TABLE ALTER COLUMN opdracht.

CREATE TABLE people10m (
  id INT NOT NULL,
  firstName STRING,
  middleName STRING NOT NULL,
  lastName STRING,
  gender STRING,
  birthDate TIMESTAMP,
  ssn STRING,
  salary INT
) USING DELTA;

ALTER TABLE people10m ALTER COLUMN middleName DROP NOT NULL;
ALTER TABLE people10m ALTER COLUMN ssn SET NOT NULL;

Voordat u een NOT NULL beperking aan een tabel toevoegt, controleert Azure Databricks of alle bestaande rijen voldoen aan de beperking.

Als u een NOT NULL beperking opgeeft voor een kolom die in een struct is genest, moet de bovenliggende struct ook niet null zijn. Kolommen die zijn genest binnen matrix- of kaarttypen accepteren NOT NULL geen beperkingen.

Zie CREATE TABLE [USING] en ALTER TABLE ALTER COLUMN.

CHECK Een beperking instellen in Azure Databricks

U beheert CHECK beperkingen met behulp van de ALTER TABLE ADD CONSTRAINT en ALTER TABLE DROP CONSTRAINT opdrachten. ALTER TABLE ADD CONSTRAINT Controleert of alle bestaande rijen voldoen aan de beperking voordat u deze toevoegt aan de tabel.

CREATE TABLE people10m (
  id INT,
  firstName STRING,
  middleName STRING,
  lastName STRING,
  gender STRING,
  birthDate TIMESTAMP,
  ssn STRING,
  salary INT
) USING DELTA;

ALTER TABLE people10m ADD CONSTRAINT dateWithinRange CHECK (birthDate > '1900-01-01');
ALTER TABLE people10m DROP CONSTRAINT dateWithinRange;

Zie ALTER TABLE ADD CONSTRAINT en ALTER TABLE DROP CONSTRAINT.

CHECK beperkingen worden weergegeven als tabeleigenschappen in de uitvoer van de DESCRIBE DETAIL en SHOW TBLPROPERTIES opdrachten.

ALTER TABLE people10m ADD CONSTRAINT validIds CHECK (id > 1 and id < 99999999);

DESCRIBE DETAIL people10m;

SHOW TBLPROPERTIES people10m;

Relaties tussen primaire en refererende sleutels declareren

Belangrijk

Deze functie is beschikbaar als openbare preview.

Notitie

  • Beperkingen voor primaire sleutels en refererende sleutels zijn beschikbaar in Databricks Runtime 11.3 LTS en hoger.
  • Beperkingen voor primaire sleutels en refererende sleutels vereisen Unity Catalog en Delta Lake.

U kunt relaties tussen primaire sleutels en refererende sleutels gebruiken voor velden in Unity Catalog-tabellen. Primaire en refererende sleutels zijn alleen informatief en worden niet afgedwongen. Refererende sleutels moeten verwijzen naar een primaire sleutel in een andere tabel.

U kunt primaire sleutels en refererende sleutels declareren als onderdeel van de tabelspecificatiecomponent tijdens het maken van de tabel. Deze component is niet toegestaan tijdens CTAS-instructies. U kunt ook beperkingen toevoegen aan bestaande tabellen.

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);

U kunt een query uitvoeren op de information_schema query of deze gebruiken DESCRIBE om meer informatie te krijgen over hoe beperkingen worden toegepast in een bepaalde catalogus.

Zie: