Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Azure Databricks mendukung klausul manajemen batasan SQL standar:
- Batasan yang diberlakukan memverifikasi integritas data sebelum menambahkan baris ke tabel.
- Kunci primer informasi dan batasan kunci asing menentukan hubungan antara bidang dalam tabel dan tidak diberlakukan.
Semua batasan di Azure Databricks memerlukan Delta Lake.
Untuk konsep terkait dalam Alur Deklaratif Lakeflow Spark, lihat Mengelola kualitas data dengan ekspektasi pipeline.
Batasan yang Diterapkan pada Azure Databricks
Ketika batasan dilanggar, transaksi gagal dengan kesalahan. Azure Databricks mendukung dua jenis batasan:
-
NOT NULL: menunjukkan bahwa nilai dalam kolom tertentu tidak boleh null. -
CHECK: menunjukkan bahwa ekspresi boolean tertentu harus benar untuk setiap baris input.
Penting
Saat Anda menambahkan batasan, Azure Databricks secara otomatis meningkatkan versi protokol penulis tabel jika versi penulis sebelumnya kurang dari 3. Lihat Kompatibilitas dan protokol fitur Delta Lake untuk memahami versi protokol tabel dan apa artinya melakukan upgrade versi protokol.
Mengatur batasan NOT NULL di Azure Databricks
Saat Anda membuat tabel, tentukan NOT NULL batasan dalam skema. Untuk menghilangkan atau menambahkan NOT NULL batasan, gunakan ALTER TABLE ... ALTER COLUMN perintah :
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;
Azure Databricks memverifikasi bahwa semua baris yang ada memenuhi batasan sebelum menambahkan batasan NOT NULL ke tabel.
Jika Anda menentukan batasan NOT NULL pada kolom yang berada dalam struct, maka struct induk juga harus tidak boleh null. Kolom yang ditumpuk dalam jenis array atau peta tidak menerima NOT NULL batasan.
Lihat CREATE TABLE [USING] dan ALTER TABLE ALTER COLUMN.
Mengatur batasan CHECK di Azure Databricks
Kelola CHECK batasan dengan perintah ALTER TABLE ADD CONSTRAINT dan ALTER TABLE DROP CONSTRAINT.
ALTER TABLE ADD CONSTRAINT memverifikasi bahwa semua baris yang ada memenuhi batasan sebelum menambahkan batasan ke tabel.
Pembatasan berikut berlaku untuk memeriksa batasan:
-
CHECKEkspresi batasan dapat menggunakan fungsi SQL apa pun di Spark yang selalu mengembalikan hasil yang sama saat diberi nilai argumen yang sama, kecuali jenis fungsi berikut:- Fungsi yang ditentukan pengguna.
- Fungsi agregat.
- Fungsi jendela.
- Fungsi yang mengembalikan beberapa baris.
Tambahkan ke tabel yang sudah ada
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;
Lihat ALTER TABLE ADD CONSTRAINT dan ALTER TABLE DROP CONSTRAINT.
Lihat properti tabel batasan pemeriksaan
Gunakan perintah DESCRIBE DETAIL dan SHOW TBLPROPERTIES untuk melihat batasan CHECK tabel.
ALTER TABLE people10m ADD CONSTRAINT validIds CHECK (id > 1 and id < 99999999);
DESCRIBE DETAIL people10m;
SHOW TBLPROPERTIES people10m;
Menghapus batasan pemeriksaan
Di Databricks Runtime 15.4 LTS ke atas, gunakan DROP FEATURE perintah untuk menghapus batasan pemeriksaan dari tabel dan menurunkan tingkat protokol tabel.
Lihat Menghilangkan fitur tabel Delta Lake dan menurunkan protokol tabel.
Mendeklarasikan kunci primer dan hubungan kunci asing
Batasan kunci utama dan kunci asing tersedia untuk tabel Unity Catalog dan Delta Lake di Databricks Runtime 13.3 LTS ke atas, dan merupakan GA dalam Databricks Runtime 15.2 ke atas.
Kunci primer dan asing hanya untuk tujuan informasi saja dan tidak diberlakukan. Kunci asing harus mengacu pada kunci primer dalam tabel lain. Batasan kunci informasi dapat meningkatkan performa dengan pengoptimalan kueri.
Kueri atau information_schema gunakan DESCRIBE untuk mendapatkan detail tentang bagaimana batasan diterapkan di seluruh katalog tertentu.
Tambahkan ke tabel baru
Deklarasikan kunci primer dan kunci asing sebagai bagian dari klausul spesifikasi tabel selama pembuatan 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);
Pernyataan CTAS tidak mendukung klausul batasan ini.
Tambahkan ke tabel yang sudah ada
Untuk menambahkan batasan ke tabel yang sudah ada:
ALTER TABLE T ADD CONSTRAINT t_pk PRIMARY KEY(pk1, pk2);
ALTER TABLE S ADD CONSTRAINT s_t_fk FOREIGN KEY(fk1, fk2) REFERENCES T;