Ograniczenia usługi Azure Databricks
Usługa Azure Databricks obsługuje standardowe klauzule zarządzania ograniczeniem SQL. Ograniczenia należą do dwóch kategorii:
- Wymuszone ograniczenia zapewniają, że jakość i integralność danych dodanych do tabeli są automatycznie weryfikowane.
- Informacyjny klucz podstawowy i ograniczenia klucza obcego kodują relacje między polami w tabelach i nie są wymuszane.
Wszystkie ograniczenia usługi Azure Databricks wymagają usługi Delta Lake.
DlT ma podobną koncepcję znaną jako oczekiwania. Zobacz Zarządzanie jakością danych za pomocą oczekiwań potokowych.
Wymuszone ograniczenia dotyczące usługi Azure Databricks
Gdy ograniczenie zostanie naruszone, transakcja kończy się niepowodzeniem z powodu błędu. Obsługiwane są dwa typy ograniczeń:
-
NOT NULL
: wskazuje, że wartości w określonych kolumnach nie mogą mieć wartości null. -
CHECK
: wskazuje, że określone wyrażenie logiczne musi być prawdziwe dla każdego wiersza wejściowego.
Ważne
Dodanie ograniczenia powoduje automatyczne uaktualnienie wersji protokołu zapisywania tabel, jeśli poprzednia wersja zapisywarki była mniejsza niż 3. Zobacz Jak usługa Azure Databricks zarządza zgodnością funkcji usługi Delta Lake?, aby zrozumieć wersjonowanie protokołów tabel i co oznacza uaktualnienie wersji protokołu.
NOT NULL
Ustawianie ograniczenia w usłudze Azure Databricks
Podczas tworzenia tabeli należy określić NOT NULL
ograniczenia w schemacie. Możesz usunąć lub dodać NOT NULL
ograniczenia przy użyciu polecenia ALTER TABLE ALTER COLUMN
.
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;
Przed dodaniem NOT NULL
ograniczenia do tabeli usługa Azure Databricks sprawdza, czy wszystkie istniejące wiersze spełniają ograniczenie.
Jeśli określisz NOT NULL
ograniczenie dla kolumny zagnieżdżonej w obrębie struktury, struktura nadrzędna również nie może mieć wartości null. Kolumny zagnieżdżone w obrębie tablicy lub typów map nie akceptują NOT NULL
ograniczeń.
Zobacz CREATE TABLE [UŻYWAĆ] i ALTER TABLE ALTER COLUMN.
CHECK
Ustawianie ograniczenia w usłudze Azure Databricks
Zarządzasz CHECK
ograniczeniami za pomocą poleceń ALTER TABLE ADD CONSTRAINT
i ALTER TABLE DROP CONSTRAINT
.
ALTER TABLE ADD CONSTRAINT
Sprawdza, czy wszystkie istniejące wiersze spełniają ograniczenie przed dodaniem go do tabeli.
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;
Zobacz ALTER TABLE ADD CONSTRAINT i ALTER TABLE DROP CONSTRAINT.
CHECK
ograniczenia są widoczne jako właściwości tabeli w wyniku po wykonaniu poleceń DESCRIBE DETAIL
i SHOW TBLPROPERTIES
.
ALTER TABLE people10m ADD CONSTRAINT validIds CHECK (id > 1 and id < 99999999);
DESCRIBE DETAIL people10m;
SHOW TBLPROPERTIES people10m;
Wyłącz ograniczenia sprawdzania
W środowisku Databricks Runtime 15.4 LTS i nowszym można użyć polecenia DROP FEATURE
, aby usunąć ograniczenia z tabeli i obniżyć wersję protokołu tabeli.
Zobacz Funkcje usuwania tabeli Delta.
Deklarowanie relacji klucza podstawowego i klucza obcego
Uwaga
- Ograniczenia klucza podstawowego i klucza obcego są dostępne w środowisku Databricks Runtime 11.3 LTS lub nowszym oraz są w pełni dostępne w środowisku Databricks Runtime 15.2 lub nowszym.
- Ograniczenia klucza podstawowego i obcego wymagają Unity Catalog i Delta Lake.
Możesz używać relacji klucza podstawowego i klucza obcego w polach tabel w Unity Catalog. Klucze podstawowe i obce są tylko informacyjne i nie są wymuszane. Klucze obce muszą odwoływać się do klucza podstawowego w innej tabeli.
Klucze podstawowe i klucze obce można zadeklarować jako część klauzuli specyfikacji tabeli podczas tworzenia tabeli. Ta klauzula nie jest dozwolona podczas wykonywania instrukcji CTAS. Możesz również dodać ograniczenia do istniejących tabel.
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);
Możesz wykonać zapytanie information_schema
lub użyć DESCRIBE
, aby uzyskać szczegółowe informacje na temat sposobu stosowania ograniczeń w danym katalogu.
Zobacz: