date
и user
- зарезервированные слова в Hive, используйте обратную галочку. Также (посмотрите мой пример) вид сбоку должен иметь псевдоним (u), столбец взорвал псевдоним user
:
with your_data as (--use your table instead of this
select stack(1, '2019-01-01', array("U00001","U00002","U00002")) as(`date`, users)
)
select t.`date`, u.`user`
from your_data t --use your table instead
lateral view explode(t.users) u as `user` ;
Если пользователи имеют тип STRING, то удалите квадратные скобки и двойные кавычки, затем разделить и взорвать:
with your_data as (--use your table instead of this
select stack(1, '2019-01-01', '["U00001","U00002","U00002"]') as (`date`, users)
)
select t.`date`, u.`user`
from your_data t --use your table instead
lateral view explode(split(regexp_replace(t.users,'\\[|\\]|\\"',''),',')) u as `user` ;
Результат:
t.date u.user
2019-01-01 U00001
2019-01-01 U00002
2019-01-01 U00002