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 , int , long , decimal , double |
short |
int , long , decimal , double |
int |
long , , decimal double |
long |
decimal |
float |
double |
decimal |
decimal dengan lebih presisi dan dalam 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
, int
, atau 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 jenis byte
, short
, dan int
adalah decimal(10,0)
. Target minimum untuk long
adalah decimal(20,0)
.
Jika Anda ingin menambahkan dua tempat desimal ke bidang dengan decimal(10,1)
, target minimum 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-preview
tabel , 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
atauMERGE 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.