Bagikan melalui


Pelesiran jenis

Penting

Fitur ini ada di Pratinjau Umum di Databricks Runtime 15.2 ke atas.

Tabel dengan pelesiran tipe diaktifkan memungkinkan Anda mengubah jenis data kolom ke jenis yang lebih luas tanpa menulis ulang file data yang mendasar. Anda dapat mengubah jenis kolom secara manual atau menggunakan evolusi skema untuk mengembangkan jenis kolom.

Pelesiran jenis memerlukan Delta Lake. Semua tabel terkelola Unity Catalog menggunakan Delta Lake secara default.

Perubahan jenis yang didukung

Anda dapat melebarkan jenis sesuai dengan aturan berikut:

Jenis sumber Jenis yang lebih luas yang didukung
byte short, , intlong, , decimal,double
short int, , longdecimal,double
int long, , decimaldouble
long decimal
float double
decimal decimal dengan presisi dan skala yang lebih besar
date timestampNTZ

Untuk menghindari promosi nilai bilangan bulat yang tidak disengaja ke desimal, Anda harus menerapkan perubahan jenis secara manual dari byte, , short, intatau long ke decimal atau double.

Catatan

Saat mengubah jenis numerik apa pun menjadi decimal, presisi total harus sama dengan atau lebih besar dari presisi awal. Jika Anda juga meningkatkan skala, total presisi harus meningkat dengan jumlah yang sesuai.

Target minimum untuk byte, , dan int jenis adalah decimal(10,0)short. Target minimum untuk long adalah decimal(20,0).

Jika Anda ingin menambahkan dua tempat desimal ke bidang dengan decimal(10,1), target minimumnya adalah decimal(12,3).

Perubahan jenis didukung untuk kolom dan bidang tingkat atas yang ditumpuk di dalam struktur, peta, dan array.

Aktifkan pelesiran jenis

Anda dapat mengaktifkan pelesiran jenis pada tabel yang ada dengan mengatur delta.enableTypeWidening properti tabel ke true:

  ALTER TABLE <table_name> SET TBLPROPERTIES ('delta.enableTypeWidening' = 'true')

Anda juga dapat mengaktifkan pelesiran jenis selama pembuatan tabel:

  CREATE TABLE T(c1 INT) TBLPROPERTIES('delta.enableTypeWidening' = 'true')

Penting

Saat Anda mengaktifkan pelesiran jenis, ini mengatur fitur typeWidening-previewtabel , yang meningkatkan protokol pembaca dan penulis. Anda harus menggunakan Databricks Runtime 15.2 atau lebih tinggi untuk berinteraksi dengan tabel dengan pelebar jenis diaktifkan. Jika klien eksternal juga berinteraksi dengan tabel, verifikasi bahwa klien tersebut mendukung fitur tabel ini. Lihat Bagaimana Azure Databricks mengelola kompatibilitas fitur Delta Lake?.

Menerapkan perubahan jenis secara manual

ALTER COLUMN Gunakan perintah untuk mengubah jenis secara manual:

ALTER TABLE <table_name> ALTER COLUMN <col_name> TYPE <new_type>

Operasi ini memperbarui skema tabel tanpa menulis ulang file data yang mendasar.

Melebarkan jenis dengan evolusi skema otomatis

Evolusi skema berfungsi dengan pelebaran jenis untuk memperbarui jenis data dalam tabel target agar sesuai dengan jenis data masuk.

Catatan

Tanpa pelebaran jenis diaktifkan, evolusi skema selalu mencoba menurunkan data dengan aman untuk mencocokkan jenis kolom dalam tabel target. Jika Anda tidak ingin secara otomatis melebarkan jenis data dalam tabel target Anda, nonaktifkan pelesiran jenis sebelum Anda menjalankan beban kerja dengan evolusi skema diaktifkan.

Untuk menggunakan evolusi skema untuk memperlebar jenis data kolom, Anda harus memenuhi kondisi berikut:

  • Perintah menggunakan INSERT atau MERGE INTO.
  • Perintah berjalan dengan evolusi skema otomatis diaktifkan.
  • Tabel target mengaktifkan pelesiran jenis.
  • Jenis kolom sumber lebih lebar dari jenis kolom target.
  • Pelesiran jenis mendukung perubahan jenis.

Ketidakcocokan jenis yang tidak memenuhi semua kondisi ini mengikuti aturan penegakan skema normal. Lihat Penegakan skema.

Menonaktifkan fitur tabel pelesiran jenis

Anda dapat mencegah pelesiran jenis yang tidak disengaja pada tabel yang diaktifkan dengan mengatur properti ke false:

  ALTER TABLE <table_name> SET TBLPROPERTIES ('delta.enableTypeWidening' = 'false')

Pengaturan ini mencegah perubahan jenis di masa mendatang pada tabel, tetapi tidak menghapus fitur tabel pelesiran jenis atau mengurungkan jenis yang telah berubah.

Jika Anda perlu menghapus sepenuhnya fitur tabel pelesiran jenis, Anda dapat menggunakan perintah seperti yang DROP FEATURE ditunjukkan dalam contoh berikut:

 ALTER TABLE <table-name> DROP FEATURE 'typeWidening-preview' [TRUNCATE HISTORY]

Saat melebarkan jenis, semua file data yang tidak sesuai dengan skema tabel saat ini ditulis ulang. Lihat Menghilangkan fitur tabel Delta.