testbook

表生成函数

explode, inline, json_tuple, parse_url_tuple, stack
函数名返回类型描述
explode(ARRAY) ; explode(MAP) 多行数据 把数组或者map中的元素生成表
说明:
       输入Array时,array中每个元素为生成表的一条记录;输入Map时,每个K-V对为一条记录。

举例:
select explode(array('Inceptor','Hyperbase','Streaming')) from src;
Result:
Inceptor
Hyperbase
Streaming


函数名返回类型描述
inline(ARRAY) 多行数据 生成表,每行一个struct
说明:
       生成表,每一个Struct作为一行。

举例:
Result:



函数名返回类型描述
json_tuple(ARRAY) 多行数据 用json中的元组生成表
说明:
       返回值的tuple。这是 'get_json_object' 的高效版。

举例:
select json_tuple('{"firstName":"Brett","lastName":"McLaughlin","email":"aaaa"}', 'firstName', 'email') from src;
Result:  Brett   aaaa


函数名返回类型描述
parse_url_tuple(url, partname1, partname2, ..., partnameN) 多行数据 根据url生成多行数据
说明:
       输入Array时,array中每个元素为生成表的一条记录;输入Map时,每个K-V对为一条记录。

举例:
SELECT parse_url_tuple('http://www.transwarp.io/news/detail?id=38', 'HOST', 'PATH', 'QUERY', 'PROTOCOL', 'FILE') as (ho, pa, pr, fi) from src a;
Result:
www.transwarp.io  /news/detail http /news/detail?id=38


函数名返回类型描述
stack(n, col1, col2...) 多行数据 把每个col分割为n份,生成为n行数据
说明:
       当n大于1的时候,col必须为集合类型,比如Array。

举例:
select stack(2, array('Transwarp',1), array('TDH',2)) from src;
Result:
["Transwarp","1"]
["TDH","2"]