配置单元有条件地选择列名

lhcgjxsq  于 2021-06-24  发布在  Hive
关注(0)|答案(1)|浏览(305)

我有多个具有非常相似模式的表,只有一列可以有不同的名称。我想做一些复杂的计算使用配置单元,并希望有一个可能的参数化所有表的代码。由于某些原因,我无法使用python、scala等语言对查询进行参数化,所以决定使用纯hivesql。
我想有条件地选择适当的列,但似乎hive会计算条件表达式/语句的所有部分,而不考虑条件。我做错什么了?

DROP TABLE IF EXISTS `so_sample`;
CREATE TABLE `so_sample` (
  `app_version` string
);
SELECT
  if (true, app_version, software_version) AS firmware
FROM so_sample
;

输出:
错误:编译语句时出错:失败:semanticexception[error 10004]:行2:25无效的表别名或列引用“software\u version”:(可能的列名为:app\u version)(state=42000,code=10004)
向帕维尔问好

wrrgggsh

wrrgggsh1#

尝试使用regex选择具有不同名称的列,有关更多信息,请参阅手册,不要忘记

set hive.support.quoted.identifiers=none;

相关问题