Topik ini menjelaskan penggunaan fungsi MULTI_KEYVALUE. Fungsi ini memisahkan string menjadi pasangan kunci-nilai berdasarkan pemisah yang ditentukan oleh split1, membagi pasangan kunci-nilai menggunakan pemisah yang ditentukan oleh split2, dan mengembalikan nilai dari key_name1 dan key_name2.
Batasan
Fungsi ini hanya didukung di Realtime Compute for Apache Flink dengan Ververica Runtime (VVR) versi 3.0.0 atau lebih baru.
Di Realtime Compute for Apache Flink dengan VVR versi 8.0.7 atau lebih lama, Anda harus menggunakan fungsi KEYVALUE sebagai pengganti MULTI_KEYVALUE dalam skenario berikut untuk menghindari kesalahan penguraian:
String konstan digunakan dalam pemisah yang ditentukan oleh parameter split1 dan split2 serta nilai semua parameter key_name dari fungsi MULTI_KEYVALUE.
Dalam namespace Realtime Compute for Apache Flink pada versi mesin tertentu, fungsi MULTI_KEYVALUE dipanggil beberapa kali dengan pemisah berbeda yang ditentukan oleh parameter split1 dan split2 setiap kali fungsi dipanggil. Pemanggilan dapat dilakukan berulang kali dalam satu penyebaran atau secara terpisah dalam beberapa penyebaran.
Jika Anda menggunakan fungsi KEYVALUE untuk mengurai nilai key_name yang berbeda di bidang yang sama beberapa kali, Realtime Compute for Apache Flink akan menggunakan kembali hasil penguraian perantara dan menerapkan mekanisme penguraian biner untuk string. Hal ini mengoptimalkan efisiensi pemrosesan secara keseluruhan. Fungsi KEYVALUE adalah fungsi (skalar). Untuk mengurai beberapa bidang, fungsi KEYVALUE harus dipanggil beberapa kali.
Sintaksis
MULTI_KEYVALUE(VARCHAR str, VARCHAR split1, VARCHAR split2, VARCHAR key_name1, VARCHAR key_name2, ...)Parameter input
Parameter | Tipe data | Deskripsi |
str | VARCHAR | String yang ingin Anda bagi. |
split1 | VARCHAR | Pemisah pasangan kunci-nilai. Jika nilai split1 adalah NULL, spasi digunakan sebagai pemisah pasangan kunci-nilai. Jika panjang split1 lebih besar dari 1, split1 hanya mewakili sekumpulan pemisah, di mana setiap karakter mewakili pemisah yang valid. |
split2 | VARCHAR | Pemisah kunci-nilai. Jika nilai split2 adalah NULL, spasi digunakan sebagai pemisah kunci-nilai. Jika panjang split2 lebih besar dari 1, split2 hanya mewakili sekumpulan pemisah, di mana setiap karakter mewakili pemisah yang valid. |
key_name1, key_name2, ... | VARCHAR | Daftar kunci yang nilainya ingin Anda peroleh. |
Contoh
Data Uji
Tabel 1 T1
str(VARCHAR)
split1(VARCHAR)
split2(VARCHAR)
key1(VARCHAR)
key2(VARCHAR)
k1=v1;k2=v2
;
=
k1
k2
NULL
;
=
k1
k2
k1:v1;k2:v2
;
:
k1
k3
k1:v1;k2:v2
;
=
k1
k2
k1:v1;k2:v2
,
:
k1
k2
k1:v1;k2=v2
;
:
k1
k2
k1:v1abck2:v2
abc
:
k1
k2
k1:v1;k2=v2
;
:=
k1
k2
k1:v1 k2:v2
NULL
:
k1
k2
k1 v1;k2 v2
;
NULL
k1
k2
Pernyataan Uji
SELECT c1, c2 FROM T1, lateral table(MULTI_KEYVALUE(str, split1, split2, key1, key2)) as T(c1, c2);Hasil Uji
c1(VARCHAR)
c2(VARCHAR)
v1
v2
NULL
NULL
v1
NULL
NULL
NULL
NULL
NULL
v1
NULL
v1
v2
v1
v2
v1
v2
v1
v2