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.
Membersihkan dan memvalidasi data sangat penting untuk memastikan kualitas aset data di lakehouse. Artikel ini menguraikan penawaran produk Azure Databricks yang dirancang untuk memfasilitasi kualitas data, serta memberikan rekomendasi untuk menentukan logika bisnis untuk menerapkan aturan kustom.
Penerapan skema di Azure Databricks
Delta Lake menyediakan semantik untuk memberlakukan pemeriksaan skema dan batasan selama penulisan data, yang memberikan jaminan terkait dengan kualitas data untuk tabel-tabel di lakehouse.
Penegakan skema memastikan bahwa data yang ditulis ke tabel mematuhi skema yang telah ditentukan sebelumnya. Aturan validasi skema bervariasi menurut operasi. Lihat penerapan Skema.
Untuk menangani evolusi skema, Delta menyediakan mekanisme untuk membuat perubahan skema dan mengembangkan tabel. Penting untuk mempertimbangkan dengan cermat kapan menggunakan evolusi skema untuk menghindari bidang yang hilang atau alur kerja yang gagal. Untuk detail tentang memperbarui skema secara manual atau otomatis, lihat Memperbarui skema tabel.
Keterbatasan tabel
Batasan dapat berupa kunci primer informasi dan batasan kunci asing, atau batasan yang diberlakukan. Lihat klausa ADD CONSTRAINT.
Batasan tabel di Azure Databricks dapat ditegakkan atau bersifat informatif.
Batasan yang diberlakukan termasuk batasan NOT NULL dan CHECK.
Batasan informasi termasuk kunci primer dan batasan kunci asing.
Lihat Batasan di Azure Databricks.
Menangani nilai kosong atau hilang
NOT NULL dapat diberlakukan pada tabel Delta. Ini hanya dapat diaktifkan pada tabel yang ada jika tidak ada rekaman yang ada di kolom null, dan mencegah rekaman baru dengan nilai null dimasukkan ke dalam tabel.
Penerapan pola
Ekspresi reguler (regex) dapat digunakan untuk menerapkan pola yang diharapkan dalam bidang data. Ini sangat berguna saat berhadapan dengan data tekstual yang perlu mematuhi format atau pola tertentu.
Untuk menerapkan pola menggunakan regex, Anda dapat menggunakan REGEXP fungsi atau RLIKE di SQL. Fungsi-fungsi ini memungkinkan Anda mencocokkan bidang data dengan pola regex tertentu.
Berikut adalah contoh cara menggunakan CHECK batasan dengan regex untuk penerapan pola di SQL:
CREATE TABLE table_name (
column_name STRING CHECK (column_name REGEXP '^[A-Za-z0-9]+$')
);
Penegakan nilai
Batasan dapat digunakan untuk memberlakukan rentang nilai pada kolom dalam tabel. Ini memastikan bahwa hanya nilai yang valid dalam rentang yang ditentukan yang diizinkan untuk dimasukkan atau diperbarui.
Untuk memberlakukan batasan rentang nilai, Anda dapat menggunakan batasan CHECK di SQL. Batasan CHECK memungkinkan Anda menentukan kondisi yang harus benar untuk setiap baris dalam tabel.
Berikut adalah contoh cara menggunakan CHECK batasan untuk memberlakukan rentang nilai pada kolom:
CREATE TABLE table_name (
column_name INT CHECK (column_name >= 0 AND column_name <= 100)
);
Tentukan dan konfigurasikan harapan menggunakan Alur Deklaratif Lakeflow Spark.
Alur Deklaratif Lakeflow Spark memungkinkan Anda menentukan harapan saat mendeklarasikan tampilan materialisasi atau tabel streaming. Anda dapat memilih untuk mengatur harapan guna memperingatkan Anda tentang pelanggaran, menghapus catatan yang melanggar, atau menghentikan beban kerja berdasarkan pelanggaran. Lihat Pengelolaan kualitas data dengan harapan alur kerja.
Pemantauan data
Azure Databricks menyediakan layanan pemantauan kualitas data, yang memungkinkan Anda memantau properti statistik dan kualitas data di semua tabel di akun Anda. Lihat Pembuatan profil data.
Konversi jenis data
Saat menyisipkan atau memperbarui data dalam tabel, Azure Databricks mengonversi jenis data apabila dapat dilakukan dengan aman tanpa kehilangan informasi.
Lihat artikel berikut untuk detail lebih lanjut tentang perilaku casting:
Logika bisnis kustom
Anda dapat menggunakan filter dan klausa WHERE untuk menentukan logika kustom yang mengkarantina rekaman buruk dan mencegahnya menyebar ke tabel hilir.
CASE WHEN ... OTHERWISE klausul memungkinkan Anda untuk menentukan logika kondisional untuk menerapkan logika bisnis dengan anggun ke rekaman yang melanggar ekspektasi dengan cara yang dapat diprediksi.
DECLARE current_time = now()
INSERT INTO silver_table
SELECT * FROM bronze_table
WHERE event_timestamp <= current_time AND quantity >= 0;
INSERT INTO quarantine_table
SELECT * FROM bronze_table
WHERE event_timestamp > current_time OR quantity < 0;
Catatan
Databricks merekomendasikan untuk selalu memproses data yang difilter sebagai operasi tulis terpisah, terutama saat menggunakan Streaming Terstruktur. Menggunakan .foreachBatch untuk menulis ke beberapa tabel dapat menyebabkan hasil yang tidak konsisten.
Misalnya, Anda mungkin memiliki sistem hulu yang tidak mampu mengodekan NULL nilai, sehingga nilai penampung -1 digunakan untuk mewakili data yang hilang. Daripada menulis logika khusus untuk semua kueri hilir di Azure Databricks agar mengabaikan rekaman yang berisi -1, Anda dapat menggunakan pernyataan 'case when' untuk mengganti rekaman ini secara dinamis dalam bentuk transformasi.
INSERT INTO silver_table
SELECT
* EXCEPT weight,
CASE
WHEN weight = -1 THEN NULL
ELSE weight
END AS weight
FROM bronze_table;