Membuat MAP dari dua array: satu untuk kunci dan satu untuk nilai.
Sintaksis
map<K, V> map_from_arrays([string <mapDupKeyPolicy>,] array<K> <a>, array<V> <b>))Parameter
| Parameter | Wajib | Tipe | Deskripsi |
|---|---|---|---|
mapDupKeyPolicy | Tidak | STRING | Cara menangani kunci duplikat. Nilai yang valid: exception (mengembalikan error) dan last_win (kemunculan terakhir menggantikan yang sebelumnya). Default-nya adalah last_win jika parameter ini maupun odps.sql.map.key.dedup.policy tidak diatur. |
a | Ya | array<K> | Array kunci. K dapat berupa tipe data apa pun. |
b | Ya | array<V> | Array nilai. V dapat berupa tipe data apa pun. |
Nilai kembali
Mengembalikan nilai bertipe MAP.
Jika
aataubbernilai null, mengembalikan null.Jika panjang
adanbberbeda, mengembalikan error.Jika
aberisi elemen null, mengembalikan error.
Catatan penggunaan
Kebijakan kunci duplikat
Dua mekanisme mengatur cara MAP_FROM_ARRAYS menangani kunci duplikat, diterapkan dalam urutan berikut:
Parameter
mapDupKeyPolicydalam pemanggilan fungsi.Pengaturan tingkat session
odps.sql.map.key.dedup.policy, yang digunakan ketikamapDupKeyPolicytidak ditentukan.
Jika keduanya tidak diatur, kebijakan default-nya adalah last_win.
Untuk mengatur kebijakan tingkat session:
set odps.sql.map.key.dedup.policy=exception;Contoh
Penggunaan dasar
-- Mengembalikan {1:2, 3:4}
SELECT map_from_arrays(array(1.0, 3.0), array('2', '4'));Menangani kunci duplikat dengan `last_win`
Ketika array kunci berisi duplikat, last_win menyimpan nilai dari kemunculan terakhir.
-- Mengembalikan {1:2, 3:6}
-- Kunci 3 muncul dua kali; last_win menyimpan '6' dan mengabaikan '4'
SELECT map_from_arrays('last_win', array(1.0, 3.0, 3), array('2', '4', '6'));Fungsi terkait
MAP_FROM_ARRAYS merupakan fungsi tipe kompleks. Untuk informasi lebih lanjut tentang fungsi yang memproses data ARRAY, MAP, STRUCT, dan JSON, lihat Complex type functions.