全部產品
Search
文件中心

MaxCompute:KEYVALUE_TUPLE

更新時間:Feb 28, 2024

將字串str按照split1分成Key-Value對,並按split2將Key-Value對分開,返回多個key所對應的Value。

命令格式

KEYVALUE_TUPLE(str, split1, split2, key1, key2, ..., keyN)

參數說明

  • str:必填。STRING類型。待拆分的字串。

  • split1split2:必填。STRING類型。用於作為分隔字元的字串,按照指定的兩個分隔字元拆分源字串。當某個被split1拆分後的字串中有多個split2時,返回結果未定義。

  • key:必填。STRING類型。將字串按照split1split2拆分後,返回key值對應的Value。

傳回值說明

返回STRING類型。返回規則如下:

  • split1split2值為NULL時,返回NULL。

  • strkey值為NULL或沒有匹配的key時,返回NULL。

使用樣本

--建立表
create table mf_user (
user_id string,
user_info string
);
--插入資料
insert into mf_user values('1','age:18;genda:f;address:abc'),('2','age:20;genda:m;address:bcd');
--查詢
SELECT user_id,
KEYVALUE(user_info,';',':','age') as age,
KEYVALUE(user_info,';',':','genda') as genda,
KEYVALUE(user_info,';',':','address') as address
FROM mf_user;
--等同於使用KEYVALUE查詢
SELECT user_id,
age,
genda,
address
FROM mf_user LATERAL VIEW KEYVALUE_TUPLE(user_info,';', ':','age','genda','address') ui AS age,genda,address;

結果如下所示。

+------------+------------+------------+------------+
| user_id    | age        | genda      | address    |
+------------+------------+------------+------------+
| 1          | 18         | f          | abc        |
| 2          | 20         | m          | bcd        |
+------------+------------+------------+------------+

相關函數

KEYVALUE_TUPLE函數屬於字串函數,更多尋找字串、轉換字串格式的相關函數請參見字串函數