Извлечь значение из объекта Row - PullRequest
1 голос
/ 15 мая 2019

Следуя офисной документации https://prestosql.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'

1 Ответ

2 голосов
/ 15 мая 2019

Какую версию Presto вы используете?В последних версиях Presto ( 0.207 + ) исправлена ​​ошибка, из-за которой UNNEST возвращал несколько столбцов при развертывании массивов строк, как того требует спецификация SQL.

Это делается так, как в текущая версия Presto:

SELECT t.n, t.b
FROM <table>, UNNEST (map_entries(...)) t(n, b)
WHERE t.n = 'apple'
...