2015-10-19 2 views
4

Апачи улой таблицы следующее определение столбца:Фильтра Массив в улье

myvars:array<struct<index:bigint,value:string>> 

Пример соответствующих данные:

"myvars":[ 
    {"index":2,"value":"value1"} 
    , {"index":1,"value":"value2"} 
    , {"index":2,"value":"value3"} 
] 

Как этот массив быть отфильтрован ко всем элементам, где " индекс "== 2.

В JavaScript я хотел бы сделать что-то вроде следующего:

myvars.filter(function(d){return d.index==2;}) 

Как тот же результат может быть достигнут с помощью Apache Hive QL, предпочтительно без боковых взглядов?

+0

Дубликат: http://stackoverflow.com/questions/26774332/ hive-check-elements-in-array – kecso

+0

У меня тоже есть вопрос, вы можете найти решение для этого? дайте мне знать, https://stackoverflow.com/questions/47280628/how-to-filter-on-map-value-in-hive-arraymapstring-string – reihaneh

ответ

0

В улья у вас есть набор Коллекция функций:

Collection 
    array_contains(Array<T> a, val) 
    array<K.V> map_keys(Map<K.V> a) 
    array<K.V> map_values(Map<K.V> a) 
    size(Map<K.V>|Array<T> a) 
    sort_array(Array<T> a) 

в вашем использовании запроса

... 
WHERE 
array_contains(myvars,2) 
Смежные вопросы