Delen via


Beperkingen voor Azure Databricks

Azure Databricks biedt ondersteuning voor standaard SQL constraint-beheerclausules. Beperkingen kunnen in twee categorieën worden onderverdeeld:

  • Afgedwongen constraints zorgen ervoor dat de kwaliteit en integriteit van gegevens die aan een table worden toegevoegd, automatisch worden gecontroleerd.
  • Informatieve primaire sleutel- en vreemde sleutelbeperkingen coderen relaties tussen velden in tables, maar 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 constraint wordt geschonden, mislukt de transactie met een fout. Er worden twee typen beperkingen ondersteund:

  • NOT NULL: geeft aan dat values in specifieke columns niet null mag zijn.
  • CHECK: geeft aan dat een opgegeven booleaanse expressie waar moet zijn voor elke invoerrij.

Belangrijk

Als u een constraint toevoegt, wordt de table writer-protocolversie automatisch bijgewerkt als de vorige writer-versie kleiner was dan 3. Zie Hoe beheert Azure Databricks de compatibiliteit van Delta Lake-functies? om inzicht te hebben in table protocolversie en wat het betekent om de protocolversie bij te werken.

Set een NOT NULLconstraint in Azure Databricks

U geeft NOT NULL beperkingen op in de schema wanneer u een tablemaakt. 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
);

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

Voordat u een NOT NULLconstraint toevoegt aan een table, controleert Azure Databricks of alle bestaande rijen voldoen aan de constraint.

Als u een NOT NULLconstraint opgeeft op een column die in een struct genest is, moet de ouderstruct ook niet null zijn. Columns genest binnen matrix- of kaarttypen accepteert geen NOT NULL beperkingen.

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

Set een CHECKconstraint 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 constraint voordat u deze toevoegt aan de table.

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;

Zie ALTER TABLE ADD CONSTRAINT en ALTER TABLE DROP CONSTRAINT.

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

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

DESCRIBE DETAIL people10m;

SHOW TBLPROPERTIES people10m;

Controlebeperkingen uitschakelen

In Databricks Runtime 15.4 LTS en hoger kunt u de opdracht DROP FEATURE gebruiken om beperkingen van een table te remove controleren en het table-protocol te downgraden.

Zie Delta-table-functiesverwijderen.

Relaties tussen primaire en refererende sleutels declareren

Notitie

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

U kunt relaties tussen primaire sleutels en vreemde sleutels gebruiken op velden in Unity Catalogtables. Primaire en refererende sleutels zijn alleen informatief en worden niet afgedwongen. Vreemde sleutels moeten verwijzen naar een primaire sleutel in een andere table.

U kunt primaire sleutels en vreemde sleutels declareren als onderdeel van de table specificatieclausule tijdens het maken van table. Deze component is niet toegestaan tijdens CTAS-instructies. U kunt ook beperkingen toevoegen aan bestaande tables.

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 opstellen voor information_schema of gebruik maken van DESCRIBE om details te get wat betreft hoe beperkingen worden toegepast op een bepaalde catalog.

Zie: