【问题标题】:Select column from Hive if exists如果存在,则从 Hive 中选择列
【发布时间】:2019-02-07 02:34:57
【问题描述】:

只有当 Hive 中存在列时,是否有条件选择每一列?

这是我的伪 hql:

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

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

【问题讨论】:

    标签: hive hiveql


    【解决方案1】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2017-09-20
      • 2020-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-22
      • 2013-06-01
      • 2014-10-24
      • 2014-02-21
      • 1970-01-01
      相关资源
      最近更新 更多