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;
查询:
没有函数的列:
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 的顺序出现,那么您可以在投影列表
中公开 ACCOUNTIDSELECT 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;