Улей - извлекать массивы дианмически - PullRequest
0 голосов
/ 24 января 2019

У меня есть данные JSON, как показано ниже.

{
  "userid": null,
  "appnumber": "9",
  "trailid": "1547383536",
  "visit": [{
      "visitNumber": "1",
      "time": "0",
      "hour": "18",
      "minute": "15"
    },
    {
      "visitNumber": "2",
      "time": "2942",
      "hour": "18",
      "minute": "15"
    }
  ]
}

Я хочу извлечь значения массива посещений динамически.

Как показано ниже: (колонна с трубой)

userid,appnumber| trailid | 
visit.visitnumber | visit.time | visit.hour | visit.minute | 
visit.visitnumber | visit.time | visit.hour | visit.minute

Если вы видите, у меня есть 2 элемента json внутри массива посещения. Поэтому я хочу динамически извлекать количество посещений, время, часы, минуты. Иногда у меня может быть 3 или 5 значений внутри массива, поэтому он должен автоматически извлечь все 3 или 5 json (я имею в виду динамически).

Я собираюсь запустить это на AWS Athena или, возможно, в Pig Cluster.

Может ли кто-нибудь помочь мне с экзактными запросами?

1 Ответ

0 голосов
/ 24 января 2019

Вы можете использовать следующий подход, но даже в этом случае все записи массива будут частью разных строк.

select
userid,
appnumber,
trailid,
d.visitnumber,
d.time, 
d.hour ,
d.minute
FROM table t1
LATERAL VIEW OUTER EXPLODE (visit) collection as d;
...