从配置单元中选择列(如果存在)

e3bfsja2  于 2021-06-27  发布在  Hive
关注(0)|答案(1)|浏览(388)

有没有办法只在列存在于配置单元中时才有条件地选择每个列?
以下是我的伪hql:

SELECT attr1 IF EXISTS, attr2 IF EXISTS, attr3 IF EXISTS
FROM some_table;

如果表中存在attr1和attr3,但attr2不存在,则应该将attr1和attr3中的所有行返回给我,而不必抱怨没有attr2。这种语法不起作用,而且配置单元对内部查询的限制也非常严格,所以除非必要,否则我不想走这种路线。

qnzebej0

qnzebej01#

没有直接的方法可以用一个查询来完成。但您可以执行以下任一操作,并开发一个逻辑来利用从中获得的结果:
1) 配置单元metastore客户端(hivemetastoreclient.getfields)以获取字段。
2) 描述表格并获取描述。
在获得结果(从上面的任何一个)之后,遍历结果以检查查询中的字段是否存在于结果中。如果是,则执行整个查询。或者跳过那些不存在的。

相关问题