Разнесите массив JSON-объекта, затем извлеките поле из каждого json - PullRequest
0 голосов
/ 18 июня 2019

У меня следующий запрос в запросе Presto. Хотел бы преобразовать его в запрос HIVE. Я не могу найти Hive, эквивалентный «CAST (как ARRAY)», я видел людей, использующих регулярные выражения / строковые методы hive для извлечения контента из каждого элемента json ( Разбор массива JSON и загрузка в таблицу кустов ), но я не уверен, что это единственный способ, или Улей может сделать это так же аккуратно, как Престо.

структура "resp"

{
results:[{id:xx, source:xx},{id:xx, source:xx},...]
}

Presto Query

select
  cast(json_extract(feed, '$.source') as VARCHAR) as src, 
  cast(json_extract(feed, '$.id') as VARCHAR) as id
from my_tbl
CROSS JOIN UNNEST (CAST(json_extract(resp, '$.results') AS ARRAY<JSON>))  t (feed)
...