我有一个蜂巢表"记录"具有以下结构:
recordid int
addresses array<map<string,string>>
knownnames array<map<string,string>>
地址数组包含地址的标准部分(门牌号,街道名称,城市,州),并且可能包含多个这些元素(如果记录有多个地址)。已知名称arrary包含名字,中间名和姓氏,并且可以包含多个(如果记录具有akas)。
如何查询我的&#34;记录&#34;表格中包含CA中任何地址且姓氏为#34; Smith&#34;?
的所有记录我试过爆炸两个阵列,但看起来hive不喜欢在where子句中使用来自2个不同数组的元素....
答案 0 :(得分:0)
既然你完全改变了我不确定的问题;我得测试一下。
select recordid, cities, last_names
from (
select recordid, cities
, knownname.last_name as last_names
from (
select recordid, knownnames
, address.city as cities
from db.table
lateral view explode(addresses) exptbl1 as address ) x
lateral view explode(knownnames) exptbl2 as knownname
where cities='CA' ) y
where last_names='Smith'