Hive - разделение и подсчет значений по разделителю - боковой вид - PullRequest
1 голос
/ 23 апреля 2020

У меня есть следующая таблица Hive

CustID    item_val

 10        sb1|sb2  
 11        sb2|sb3
 12        sb1|sb4
 13        sb2|sb3|sb5
 14        None
 15        sb1

Мне нужно разделить и получить значения счетчиков для каждого элемента в столбце item_val

Ожидаемый результат

Item   count
sb1     3
sb2     2
sb3     2
sb4     1
sb5     1
None    1

Я устал ниже количества, но значения не разделяются должным образом.

 SELECT msg, count(*) FROM (SELECT distinct split(item_val,'\\|') AS msg FROM hive_table) t GROUP BY msg;

Пожалуйста, помогите!

1 Ответ

1 голос
/ 23 апреля 2020

В Hive одним из вариантов является использование синтаксиса lateral view:

select item, count(*) cnt
from mytable 
lateral view explode(split(item_val, '|')) item_val as item  
group by item
...