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
);
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
);
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;
Controlebeperkingen uitschakelen
In Databricks Runtime 15.4 LTS en hoger kunt u de DROP FEATURE
opdracht gebruiken om controlebeperkingen uit een tabel te verwijderen en het tabelprotocol te downgraden.
Zie Delta-tabelfuncties neerzetten.
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 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: