从Hive中选择列(如果存在)

时间:2019-02-07 02:34:57

标签: hive hiveql

是否只有在Hive中存在该列时,才有条件地选择每个列?

这是我的伪hql:

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

如果表中存在attr1和attr3,但是attr2不存在,这应该返回给我attr1和attr3的所有行,而不会抱怨缺少attr2。这种语法不起作用,并且Hive对内部查询也有严格的限制,因此除非必要,否则我不想走那条路。

1 个答案:

答案 0 :(得分:0)

没有直接的方法来执行单个查询。 但是您可以在下面进行以下任一操作,并开发一种逻辑以利用从中获得的结果:

1)Hive Metastore客户端(HiveMetastoreClient.getFields)来获取字段。

2)描述表格并获取描述。

从以上任何一项获取结果后,遍历结果以检查查询中的字段是否存在于结果中。如果是,则执行整个查询。或者跳过不存在的那些。