1

按照办公文档https://trino.io/docs/current/functions/map.html。我使用“map_entries”将映射分解为数组(行(K,V))结构。我的问题是如何从行对象中提取 K 和 V 值?目前我必须将它重铸为我定义的 Row 对象。

select 
    type.n , type.b
from
    (select  
         CAST(type AS ROW(n VARCHAR, b VARCHAR)) as type
     from 
         search.yli_tmp_trevi_requests_mini
     cross join 
         unnest (map_entries(cast(json_extract(req, '$.types') as MAP<VARCHAR, VARCHAR>))) t (type)
    ) t
where 
    type.n = 'apple'
4

1 回答 1

2

您正在运行哪个版本的 Presto?最新版本的 Presto ( 0.207+ ) 修复了一个问题,使 UNNEST 在取消嵌套行数组时返回多列,正如 SQL 规范所期望的那样。

这是您在当前版本的 Presto 中执行此操作的方式:

SELECT t.n, t.b
FROM <table>, UNNEST (map_entries(...)) t(n, b)
WHERE t.n = 'apple'
于 2019-05-14T22:45:12.420 回答