全部产品
Search
文档中心

Realtime Compute for Apache Flink:MULTI_KEYVALUE

更新时间:Jun 19, 2025

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.

null

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