全部產品
Search
文件中心

MaxCompute:KEYVALUE

更新時間:Feb 28, 2024

當您需要解析資料表格儲存體的索引值對字串,並提取出鍵對應的值時,MaxCompute支援使用KEYVALUE函數,將字串str按照split1分成Key-Value對,並按split2將Key-Value對分開,返回key所對應的Value。本文為您介紹KEYVALUE函數的說明和使用樣本。

命令格式

keyvalue(string <str>,[string <split1>,string <split2>,] string <key>)
keyvalue(string <str>,string <key>) 

參數說明

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

  • split1split2:可選。STRING類型。用於作為分隔字元的字串,按照指定的兩個分隔字元拆分源字串。如果運算式中沒有指定這兩項,預設split1";"split2":"。當某個被split1拆分後的字串中有多個split2時,返回結果未定義。

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

傳回值說明

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

  • split1split2值為NULL時,返回NULL。

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

  • 如果有多個Key-Value匹配,返回第一個匹配上的key對應的Value。

使用樣本

  • 樣本1:將字串0:1\;1:2拆分為Key-Value對,返回Key值1對應的Value。命令樣本如下。

    --返回2。
    select keyvalue('0:1\;1:2', 1);

    沒有指定split1split2,預設split1";"split2":"

    經過split1拆分後,Key-Value對為0:1\,1:2。經過split2拆分後變為如下。

    0 1/  
    1 2

    返回Key為1所對應的Value值2。

  • 樣本2:將字串“\;decreaseStore:1\;xcard:1\;isB2C:1\;tf:21910\;cart:1\;shipping:2\;pf:0\;market:shoes\;instPayAmount:0\;”按照“\;”拆分為Key-Value對,再按照":"將Key-Value分開,返回Key值tf對應的Value。命令樣本如下。

    --返回21910。
    select keyvalue("\;decreaseStore:1\;xcard:1\;isB2C:1\;tf:21910\;cart:1\;shipping:2\;pf:0\;market:shoes\;instPayAmount:0\;","\;",":","tf");

    “\;decreaseStore:1\;xcard:1\;isB2C:1\;tf:21910\;cart:1\;shipping:2\;pf:0\;market:shoes\;instPayAmount:0\;”按照“\;”拆分後,得出的Key-Value對如下所示。

    decreaseStore:1,xcard:1,isB2C:1,tf:21910,cart:1,shipping:2,pf:0,market:shoes,instPayAmount:0 

    按照":"拆分後,結果如下所示。

    decreaseStore 1  
    xcard 1  
    isB2C 1  
    tf 21910  
    cart 1  
    shipping 2  
    pf 0  
    market shoes  
    instPayAmount 0

    返回Key為tf對應的Value值21910。

相關函數

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