有没有办法只在列存在于配置单元中时才有条件地选择每个列?以下是我的伪hql:
SELECT attr1 IF EXISTS, attr2 IF EXISTS, attr3 IF EXISTS FROM some_table;
如果表中存在attr1和attr3,但attr2不存在,则应该将attr1和attr3中的所有行返回给我,而不必抱怨没有attr2。这种语法不起作用,而且配置单元对内部查询的限制也非常严格,所以除非必要,否则我不想走这种路线。
qnzebej01#
没有直接的方法可以用一个查询来完成。但您可以执行以下任一操作,并开发一个逻辑来利用从中获得的结果:1) 配置单元metastore客户端(hivemetastoreclient.getfields)以获取字段。2) 描述表格并获取描述。在获得结果(从上面的任何一个)之后,遍历结果以检查查询中的字段是否存在于结果中。如果是,则执行整个查询。或者跳过那些不存在的。
1条答案
按热度按时间qnzebej01#
没有直接的方法可以用一个查询来完成。但您可以执行以下任一操作,并开发一个逻辑来利用从中获得的结果:
1) 配置单元metastore客户端(hivemetastoreclient.getfields)以获取字段。
2) 描述表格并获取描述。
在获得结果(从上面的任何一个)之后,遍历结果以检查查询中的字段是否存在于结果中。如果是,则执行整个查询。或者跳过那些不存在的。