我有一张像这样的table
name string
address string
timezone string
one_key_value array<struct<key:string,value:array<string>>
two_key_value array<struct<key:string,value:array<string>>
想把它转换成
name string
address string
timezone string
one_key_value map<string,array<string>>
two_key_value map<string,array<string>>
使用presto。有 lateral view inline
但它在普雷斯托不起作用。我该怎么做?
2条答案
按热度按时间qqrboqgw1#
我没有试过思考,但下面的表达应该会有所帮助:
根据presto 0.175文件:
Map(数组,数组)→ map返回使用给定的键/值数组创建的Map。
选择Map(数组[1,3],数组[2,4]);--{1 -> 2, 3 -> 4}
我们可以使用数组转换函数从输入字段(
array<struct<key:string,value:array<string>>
)变换(数组、函数)→ 数组返回一个数组,该数组将函数应用于数组的每个元素
f0brbegy2#
根据提供的信息,您基本上需要两件事:
从maven central/github升级到最近的版本,或者从https://www.starburstdata.com/starburst-presto-sql/ (免责声明:我来自星暴)。0.175真的有点过时了。
使用
map_from_entries(one_key_value)
(文件:https://prestosql.io/docs/current/functions/map.html#map_from_entries)