Получить правильное значение из массива в Hive QL - PullRequest
0 голосов
/ 26 сентября 2018

У меня есть Wrapped Array, и я хочу получить соответствующее значение структуры , когда я запрашиваю с LATERAL VIEW EXPLODE .

СТРУКТУРА ОБРАЗЦА:

ИМЯ КОЛОННЫ: theARRAY

WrappedArray([null,theVal,valTags,[123,null,null,null,null,null],false], [null,theVar,varTags,[abc,null,null,null,null,null],false])

Схема

array<struct<id:string,name:string,type:string,value:struct<member0:string,member1:bigint,member2:int,member3:double,member4:float,member5:boolean>,shouldIndex:boolean>>

Мой запрос:

SELECT DISTINCT theName, allValues
FROM table 
LATERAL VIEW EXPLODE(column.name) theTab1 AS theName
LATERAL VIEW EXPLODE(column.value.member0) theTab2 AS allValues
WHERE theName = 'theVal'

Мой результат:

___________________________
|**theName**|**allValues**|
___________________________
|theVal     |     123     |
___________________________
| theVal    |     abc     |
___________________________

Мне нужно:

___________________________
|**theName**|**allValues**|
___________________________
|theVal     |     123     |
___________________________

Как исправить мой запрос, чтобы получить результат, как указано выше?

1 Ответ

0 голосов
/ 26 сентября 2018

Ваш дополнительный взрыв на вершине структуры не требуется.Вы должны быть в состоянии выполнить это так

SELECT DISTINCT theName, column.value.member0
FROM table 
LATERAL VIEW EXPLODE(column.name) theTab1 AS theName
WHERE theName = 'theVal'
...