表生成函数
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"]