一零二六、sql语句报错

举报
托马斯-酷涛 发表于 2022/09/25 00:49:04 2022/09/25
【摘要】 Exception in thread "main" org.apache.spark.sql.AnalysisException: cannot resolve '`abc`' given input columns: [该订单接单时效, city_name, first_auditor_id, 客户取消数, second_au...

Exception in thread "main" org.apache.spark.sql.AnalysisException: cannot resolve '`abc`' given input columns: [该订单接单时效, city_name, first_auditor_id, 客户取消数, second_auditor_role, request_id, min_distance_after_edit, updated_at,

前景报错

今天在一句sql中报错了半天,一直看不出来有什么错,sql语句如下:

select count(*),area(area_after_edit) as one from tab group by one order by one
spark.udf.register("area", (area_after_edit: Long) => {
      var res = "0"
      if (area_after_edit >= 30000000) res = "4"
      else if (area_after_edit >= 20000000) res = "3"
      else if (area_after_edit >= 10000000) res = "2"
      else if (area_after_edit >= 0) res = "1"
      res
    })
    data.createOrReplaceTempView("tab")

    val sql4: DataFrame = spark.sql("select count(*),area(area_after_edit) as one from tab group by one order by one")
    sql4.show()

左看右看感觉没毛病,但就是报错(。。。。)

报错排查

实在无奈,去排查了一下

select area_after_edit from tab

字段是没有问题的,但写成我的查询语句就出问题,我的第一感觉就是group by 和 order by 这里的问题,后来去查了查 group by 和 order by 同时使用的问题,果然不知道的冷知识又增加了,group by 不能使用别名 这里涉及到sql语句的执行顺序了:

Sql语句执行顺序

(7)    SELECT

(8)    DISTINCT <select_list>

(1)    FROM <left_table>

(3)    <join_type> JOIN <right_table>

(2)    ON <join_condition>

(4)    WHERE <where_condition>

(5)    GROUP BY <group_by_list>

(6)    HAVING <having_condition>

(9)    ORDER BY <order_by_condition>

(10)   LIMIT <limit_number>

Group by不能用别名的原因,因为执行到groupby(5)时,还没执行到select中的别名,所以别名还没生效。所以别名只能放到(7)之后,比如order中,distinct中。

问题解决

select count(*),area(area_after_edit) as one from tab group by area(area_after_edit) order by one

group by 之后依旧使用字段名,order by之后使用别名

 


 去补sql了。。。

文章来源: tuomasi.blog.csdn.net,作者:托马斯-酷涛,版权归原作者所有,如需转载,请联系作者。

原文链接:tuomasi.blog.csdn.net/article/details/126794474

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。