This topic describes how to use the MULTI_KEYVALUE function. This function splits a string into key-value pairs based on the key-value pair delimiter specified by split1, splits a key-value pair based on the delimiter specified by split2, and returns the values of key_name1 and key_name2.

Limits

This function is supported only in Realtime Compute for Apache Flink that uses Ververica Runtime (VVR) 3.0.0 or later.

Syntax

MULTI_KEYVALUE(VARCHAR str, VARCHAR split1, VARCHAR split2, VARCHAR key_name1, VARCHAR key_name2, ...)

Input parameters

Parameter Data type Description
str VARCHAR The string that you want to split.
split1 VARCHAR The key-value pair delimiter.

If the value of split1 is NULL, spaces are used as key-value pair delimiters. If the length of split1 is greater than 1, split1 represents only a set of delimiters, in which each character represents a valid delimiter.

split2 VARCHAR The key-value delimiter.

If the value of split2 is NULL, spaces are used as key-value delimiters. If the length of split2 is greater than 1, split2 represents only a set of delimiters, in which each character represents a valid delimiter.

key_name1, key_name2, ... VARCHAR The list of keys whose values you want to obtain.

Example

  • Test data
    Table 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
  • Test statement
    SELECT c1, c2 
    FROM T1, lateral table(MULTI_KEYVALUE(str, split1, split2, key1, key2)) 
    as T(c1, c2);                
  • Test result
    c1(VARCHAR) c2(VARCHAR)
    v1 v2
    NULL NULL
    v1 NULL
    NULL NULL
    NULL NULL
    v1 NULL
    v1 v2
    v1 v2
    v1 v2
    v1 v2