2015-10-19 216 views
4

一個Apache蜂巢表具有以下列定義:濾波器陣列

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蜂巢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)