Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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.
Potoki deklaratywne Lakeflow Spark mają podobną koncepcję znaną jako "expectations". 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 zgodność funkcji usługi Delta Lake i protokoły aby zrozumieć wersjonowanie protokołu tabel i co to znaczy zaktualizować wersję 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 Usuwanie funkcji tabeli Delta Lake i obniżanie poziomu protokołu tabeli.
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. Kluczowe ograniczenia informacyjne mogą zwiększyć wydajność, obsługując optymalizacje zapytań .
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: