如何编写Impala查询以获取包含struct列的结果集
Impala查询获取包含复杂类型的结果集方案
针对你的address表(id为int类型,country是struct<name:string,city:array>类型),要让Java程序能获取到id和完整的country结构体对象,你可以使用以下SQL查询:
SELECT a.id, a.country FROM address a CROSS JOIN UNNEST(a.country.city) AS dummy(city) GROUP BY a.id, a.country
关键说明:
- 按照Impala的规则,复杂类型必须通过join操作"解包"才能被查询返回,这里用
CROSS JOIN UNNEST拆解country结构体里的city数组字段,满足Impala的查询要求 - 拆解数组后会生成重复的行记录,通过
GROUP BY a.id, a.country可以将这些重复行合并,还原回原表中每行id对应的完整country结构体 - 执行这个查询后,结果集就能同时包含id标量值和country结构体对象,Java程序可以通过JDBC对应的类型映射正常读取该结构体
内容的提问来源于stack exchange,提问作者fahd
相关产品推荐
相关产品推荐

