蜂巢订单不工作
Posted
技术标签:
【中文标题】蜂巢订单不工作【英文标题】:Hive Order by Not working 【发布时间】:2015-01-07 09:59:58 【问题描述】:查询:
没有功能的列:
从表排序 ACCOUNTID中选择ACCOUNTID;
(上面的查询在 HIVE 和 mysql 中都能正常工作)
功能栏:
从表order by ACCOUNTID中选择concat('test_',ACCOUNTID);
在 mysql 中,上面的查询工作正常。
在 hive 中,抛出以下异常
失败:SemanticException [错误 10004]: 第 1:59 行无效的表别名或列引用“ACCOUNTID”: (可能的列名是:_c0)
Mysql:
排序方式与函数中涉及的列一起工作
蜂巢:
Order by 不与函数中涉及的列一起使用
临时解决方案:
从表 order by tempcolumn 中选择 concat('test_',ACCOUNTID) as tempColumn;
如果不将 column 指定为 tempcolumn ,是否有任何可用的解决方案?
注意:
我只想要连接结果(test_ACCOUNTID).. 而不将 ACCOUNTID 暴露为另一列
【问题讨论】:
【参考方案1】:也许你也可以选择 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;
【讨论】:
【参考方案2】:取决于您要达到的目标。如果您希望您的串联结果按 account id 的顺序出现,那么您可以在投影列表中公开 ACCOUNTID
SELECT concat('test_',ACCOUNTID), ACCOUNTID FROM <table> ORDER BY ACCOUNTID
【讨论】:
我只想要连接结果(test_ACCOUNTID).. 而不将 ACCOUNTID 暴露为另一列。【参考方案3】:据我所知,这是将别名用于函数表达式并使用“分组依据”、“排序依据”、“排序依据”等子句的唯一方法。
【讨论】:
以上是关于蜂巢订单不工作的主要内容,如果未能解决你的问题,请参考以下文章