过滤配置单元表中的多个数组字段

时间:2015-07-17 21:58:24

标签: arrays hive

我有一个蜂巢表"记录"具有以下结构:

recordid int
addresses array<map<string,string>>
knownnames array<map<string,string>>

地址数组包含地址的标准部分(门牌号,街道名称,城市,州),并且可能包含多个这些元素(如果记录有多个地址)。已知名称arrary包含名字,中间名和姓氏,并且可以包含多个(如果记录具有akas)。

如何查询我的&#34;记录&#34;表格中包含CA中任何地址且姓氏为#34; Smith&#34;?

的所有记录

我试过爆炸两个阵列,但看起来hive不喜欢在where子句中使用来自2个不同数组的元素....

1 个答案:

答案 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'