如何解决雅典娜汇总列表结构字符串字符串转换为字符串列表
我有一个类型为array<struct<string,string>>
的聚合数组,我想将其转换为array<struct<string,array<string>>>
更准确地说,我有一个这样的列表
[{'a','b'},{'a','c'},{'d','e'}]
我想像这样汇总它
[{'a',['b','c']},['e']}]
如何在Athena中将其转换为这样?
解决方法
函数multimap_from_entries
完全可以满足您的需求。
请参见函数的doc。
编辑:
虽然aws决定更新presto :-),但这是一种解决方法:
SELECT map_filter(reduce(array[cast(('a','b') AS row(one varchar,two varchar)),cast(('a','c') AS row(one varchar,cast(('d','e') AS row(one varchar,two varchar))],map(array[cast('' as varchar)],array[array[cast('' as varchar)]]),(s,x)-> if(s[x.one] is null,map_concat(s,map(array[x.one],array[array[x.two]])),array[s[x.one] || array[x.two]]))),s->s),(k,v)->k <> '')
-- {a=[b,c],d=[e]}
想法是通过插入新的键,值对(如果键是新键)或扩展具有新值的值数组来遍历数组并构造地图。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。