Topik ini menjelaskan cara menggunakan fungsi JSON_TUPLE untuk mengekstrak nilai dari sebuah string JSON dengan menentukan path.
Batasan
Fungsi JSON_TUPLE hanya didukung di Ververica Runtime (VVR) 3.0.0 dan versi yang lebih baru.
Sintaksis
JSON_TUPLE(str, path1, path2 ..., pathN) Parameter input
Parameter | Tipe data | Deskripsi |
str | VARCHAR | Sebuah string JSON. |
path1 hingga pathN | VARCHAR | Sebuah string yang merepresentasikan path. Jangan sertakan |
Contoh
Data uji
Tabel 1. T1
d(VARCHAR)
s(VARCHAR)
{"qwe":"asd","qwe2":"asd2","qwe3":"asd3"}
qwe3
{"qwe":"asd4","qwe2":"asd5","qwe3":"asd3"}
qwe2
Pernyataan uji
SELECT d, v FROM T1, lateral table(JSON_TUPLE(d, 'qwe', s)) AS T(v);Hasil uji
d(VARCHAR)
v(VARCHAR)
{"qwe":"asd","qwe2":"asd2","qwe3":"asd3"}
asd
{"qwe":"asd","qwe2":"asd2","qwe3":"asd3"}
asd3
{"qwe":"asd4","qwe2":"asd5","qwe3":"asd3"}
asd4
{"qwe":"asd4","qwe2":"asd5","qwe3":"asd3"}
asd5
Perubahan perilaku penanganan nilai NULL
Perbandingan perilaku
Asumsikan Anda memanggil fungsi tersebut dalam kueri json_tuple(CAST(NULL AS STRING), 'a', 'b'), di mana parameter input `str` bernilai NULL.
SELECT * FROM (VALUES (1), (2)) AS v(x)
, LATERAL TABLE(
json_tuple(CAST(NULL AS STRING), 'a', 'b')
) AS T;
-- Setiap baris input menghasilkan dua baris dengan NULL. Total: 4 baris — (1,null), (1,null), (2,null), (2,null)Sebelum VVR 11.0 (perilaku lama)
Hasil: Empat baris.
Konten: Setiap baris berisi satu kolom
NULL.
VVR 11.0 dan versi yang lebih baru (perilaku baru)
Hasil: Nol baris (himpunan kosong).
Konten: Tidak ada.