Validasi skema Delta Lake

Delta Lake secara otomatis memvalidasi bahwa skema DataFrame yang sedang ditulis kompatibel dengan skema tabel. Delta Lake menggunakan aturan berikut untuk menentukan apakah penulisan dari DataFrame ke tabel kompatibel:

  • Semua kolom DataFrame harus ada dalam tabel target. Jika ada kolom dalam DataFrame yang tidak ada dalam tabel, pengecualian akan dimunculkan. Kolom yang ada dalam tabel tetapi tidak dalam DataFrame diatur ke null.
  • Jenis data kolom DataFrame harus cocok dengan jenis data kolom dalam tabel target. Jika tidak cocok, pengecualian akan dimunculkan.
  • Nama kolom DataFrame tidak dapat berbeda hanya menurut kasus. Ini berarti Bahwa Anda tidak dapat memiliki kolom seperti "Foo" dan "foo" yang ditentukan dalam tabel yang sama. Meskipun Anda dapat menggunakan Spark dalam mode peka huruf besar/kecil atau tidak sensitif (default), Parquet peka huruf besar/kecil saat menyimpan dan mengembalikan informasi kolom. Delta Lake mempertahankan kasus tetapi tidak peka saat menyimpan skema dan memiliki batasan ini untuk menghindari potensi kesalahan, kerusakan data, atau masalah kehilangan.

Delta Lake mendukung DDL untuk menambahkan kolom baru secara eksplisit dan kemampuan untuk memperbarui skema secara otomatis.

Jika Anda menentukan opsi lain, seperti partitionBy, dalam kombinasi dengan mode penampan, Delta Lake memvalidasi bahwa opsi tersebut cocok dan melemparkan kesalahan untuk ketidakcocokan apa pun. Ketika partitionBy tidak ada, penambahan secara otomatis mengikuti pemartisian data yang ada.

Catatan

INSERT sintaks menyediakan penegakan skema dan mendukung evolusi skema. Jika jenis data kolom tidak dapat dilemparkan dengan aman ke jenis data tabel Delta Lake Anda, maka pengecualian runtime dilemparkan. Jika evolusi skema diaktifkan, kolom baru dapat ada sebagai kolom terakhir skema Anda (atau kolom berlapis) agar skema berkembang.

Validasi skema untuk penggabungan Delta Lake

merge secara otomatis memvalidasi bahwa skema data yang dihasilkan oleh ekspresi sisipkan dan perbarui kompatibel dengan skema tabel. Ini menggunakan aturan berikut untuk menentukan apakah merge operasi kompatibel:

  • Untuk update tindakan dan insert , kolom target yang ditentukan harus ada dalam tabel Delta target.
  • Untuk updateAll tindakan dan insertAll , himpunan data sumber harus memiliki semua kolom tabel Delta target. Himpunan data sumber dapat memiliki kolom tambahan dan diabaikan.
  • Untuk semua tindakan, jika jenis data yang dihasilkan oleh ekspresi yang menghasilkan kolom target berbeda dari kolom terkait dalam tabel Delta target, merge mencoba mentransmisikannya ke jenis dalam tabel.

Lihat Evolusi skema otomatis untuk penggabungan Delta Lake.