Hive Order by 不工作

Hive Order by Not working

查询:

没有函数的列:

SELECT ACCOUNTID from table order by ACCOUNTID;

(以上查询在 HIVE 和 MYSQL 中都工作正常)

具有以下功能的列:

SELECT concat('test_',ACCOUNTID) from table order by ACCOUNTID;

在 mysql 中,上面的查询工作正常。

在配置单元中,抛出以下异常

失败:SemanticException [错误 10004]: 行 1:59 无效 table 别名或列引用 'ACCOUNTID': (可能的列名是:_c0)

Mysql :

Order by 可以很好地处理函数中涉及的列

蜂巢:

Order by处理函数中涉及的列

临时解决方案:

SELECT concat('test_',ACCOUNTID) as tempColumn from table order by tempcolumn;

有没有不用将列指定为临时列的解决方案?

注意:

我想要单独的连接结果(test_ACCOUNTID)..而不将 ACCOUNTID 暴露为另一列

取决于您要实现的目标。如果您希望您的串联结果以 account id 的顺序出现,那么您可以在投影列表

中公开 ACCOUNTID
SELECT concat('test_',ACCOUNTID), ACCOUNTID FROM <table> ORDER BY ACCOUNTID

据我所知,这是为函数表达式使用别名并使用该别名使用 'Group By'、'Order By'、'Sort By' 等子句的唯一方法。

也许你也可以select accountid 列进行排序。

SELECT accountid,concat('test_',ACCOUNTID) from table order by accountid;

或者,将 "concat('test_', accountid) " 重命名为 accountid,如下所示:

SELECT concat('test_',ACCOUNTID) accountid from table order by accountid;