sql - Presto:将 array<struct<key:string,value:array<string>>> 转换为 map<string,array<string>>

标签 sql hive presto

我有一张像

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>>

使用快速。有lateral view inline但它在 presto 中并没有真正起作用。我怎样才能做到这一点?

最佳答案

根据提供的信息,您基本上需要两件事:

  • 升级到更新的版本——来自 Maven Central/Github 的最新版本,或来自 https://www.starburstdata.com/starburst-presto-sql/ 的 Starburst 支持(免费)发行版(免责声明:我来自Starburst)。
    0.175 确实有点过时了。
  • 使用 map_from_entries(one_key_value) (文档:https://trino.io/docs/current/functions/map.html#map_from_entries)
  • 关于sql - Presto:将 array<struct<key:string,value:array<string>>> 转换为 map<string,array<string>>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52993499/

    相关文章:

    SQLServerAgent 当前未运行,因此无法通知此操作

    hadoop - 如果表包含重复行,则返回 bool 值(1 或 0)

    sql - 日期之间(开始和现在)

    MySQL计算邮政编码之间的距离更快更准确?

    php - MySQL查询帮助计数请

    mysql - 根据条件计算值的 SQL 查询

    hadoop - 使用函数替换 NULL

    hive - 使用 Apache Hive session 化我的日志数据的更好方法?

    sql - 有没有办法从 SQL 中的 map(varchar, varchar) 列中提取数据?

    sql - 从 presto 中删除完全重复的行