MULTI_KEYVALUE
本文中含有需要您注意的重要提示信息,忽略該信息可能對(duì)您的業(yè)務(wù)造成影響,請(qǐng)務(wù)必仔細(xì)閱讀。
本文為您介紹如何使用MULTI_KEYVALUE函數(shù),將目標(biāo)字符串中拆分為Key-Value(KV)對(duì),匹配split1和split2的KV對(duì),并返回key_name1和key_name2對(duì)應(yīng)的Value值。
使用限制
僅實(shí)時(shí)計(jì)算引擎VVR 3.0.0及以上版本支持MULTI_KEYVALUE函數(shù)。
在實(shí)時(shí)計(jì)算引擎VVR 8.0.7及下版本,為避免MULTI_KEYVALUE函數(shù)解析結(jié)果錯(cuò)誤,在遇到以下場(chǎng)景時(shí),請(qǐng)改用KEYVALUE函數(shù):
MULTI_KEYVALUE對(duì)應(yīng)的split1、split2分隔符和所有key_name都使用了常量字符串。
同一個(gè)項(xiàng)目空間下的同一個(gè)引擎版本中,如果存在多個(gè)MULTI_KEYVALUE函數(shù)調(diào)用,且它們使用了不同的split1、split2分隔符(無(wú)論是單個(gè)作業(yè)內(nèi)多次重復(fù)使用還是多個(gè)作業(yè)中分別使用)。
使用KEYVALUE函數(shù),在對(duì)同一字段中不同key_name進(jìn)行多次解析時(shí),實(shí)時(shí)計(jì)算引擎會(huì)嘗試復(fù)用中間解析結(jié)果,并且通過(guò)字符串二進(jìn)制解析機(jī)制,整體處理效率通常會(huì)更優(yōu)。但KEYVALUE函數(shù)是標(biāo)量函數(shù),解析多個(gè)字段需要使用多個(gè)KEYVALUE函數(shù)分別表示。
語(yǔ)法
MULTI_KEYVALUE(VARCHAR str, VARCHAR split1, VARCHAR split2, VARCHAR key_name1, VARCHAR key_name2, ...)
入?yún)?/h2>
參數(shù) | 數(shù)據(jù)類型 | 說(shuō)明 |
str | VARCHAR | 目標(biāo)字符串。 |
split1 | VARCHAR | KV對(duì)的分隔符。 當(dāng)split1為NULL時(shí),表示按照空格作為KV對(duì)的分割符。當(dāng)split1的長(zhǎng)度>1時(shí),split1僅表示分隔符的集合,每個(gè)字符都表示一個(gè)有效的分隔符。 |
split2 | VARCHAR | KV的分隔符。 當(dāng)split2為NULL時(shí),表示按照空格作為KV的分割符。當(dāng)split2的長(zhǎng)度>1時(shí),split2僅表示分隔符的集合,每個(gè)字符都表示一個(gè)有效的分隔符。 |
key_name1, key_name2, ... | VARCHAR | 需要獲取Value的Key值列表。 |
示例
測(cè)試數(shù)據(jù)
表 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
測(cè)試語(yǔ)句
SELECT c1, c2 FROM T1, lateral table(MULTI_KEYVALUE(str, split1, split2, key1, key2)) as T(c1, c2);
測(cè)試結(jié)果
c1(VARCHAR)
c2(VARCHAR)
v1
v2
NULL
NULL
v1
NULL
NULL
NULL
NULL
NULL
v1
NULL
v1
v2
v1
v2
v1
v2
v1
v2