一、前言

用过大数据的同事都熟悉hive和Spark,两者的语法是一样的,但是Spark的速度要比Hive快得多。今天才写一个Spark的大数据报表的时候,遇到一个group by结合Case When的语法问题,现将问题的详细经过记录下来,希望可以对有遇到这个问题伙伴一些帮助。

二、问题

运行报错详细如下截图:

很明显是case when的语句中错误导致,反复检查了几遍,如去掉多余的空格,增加空格,去掉括号,增加括号等。原SQL如下:

drop table temp_fin.cux_trx_vpk_order;
create table temp_fin.cux_trx_vpk_order as
select
l.org_id,l.period_name,(CASE WHEN l.line_type = 'SKU' THEN l.item_type ELSE l.description END),l.tax_code ,l.currency_code,
sum(l.line_amount ) line_amount,sum(l.acctd_line_amount ) acctd_line_amount,sum(l.net_amount ) net_amount,sum(l.tax_amount ) tax_amount
from temp_fin.cux_trx_line2 l
where l.is_deleted =0
group by l.org_id,l.period_name,(CASE WHEN l.line_type = 'SKU' THEN l.item_type ELSE l.description END),l.tax_code ,l.currency_code;

不细心的话很难发现问题,其根本原因是select 的时候,虽然case when 的语法是对的,case when 的用法逻辑是:如果符合某个条件,则用前者,否则用后者。但是最终需要一个查询结果的别称来承接这个字段结果值。

三、解决

正如报错截图中的提示,please use alias to rename it,意思是请使用字段别称来重新命名,这个是出现在Case When后面的使用语法,所以很简单,用as + 别称 即可解决问题:

原写法:CASE WHEN l.line_type = 'SKU' THEN l.item_type ELSE l.description END

改正:CASE WHEN l.line_type = 'SKU' THEN l.item_type ELSE l.description END as line_type

Spark CASE WHEN 写法案例相关推荐

  1. Spark Streaming 图片处理案例介绍

    Spark Streaming 图片处理案例介绍 本文首先介绍了流式处理框架的设计原理.Spark Streaming 的工作原理,然后通过一个基于 Spark Streaming 编写的读取.分析. ...

  2. 【原创 HadoopSpark 动手实践 6】Spark 编程实例与案例演示

     [原创 Hadoop&Spark 动手实践 6]Spark 编程实例与案例演示 Spark 编程实例和简易电影分析系统的编写 目标: 1. 掌握理论:了解Spark编程的理论基础 2. 搭建 ...

  3. Spark编写UDF函数案例

    Spark编写UDF函数案例 一.前述 二.UDF函数 需求:将orders表中 order_dow和order_number进行求和 一.前述 SparkSql中自定义函数包括UDF和UDAF UD ...

  4. SQL语句--CASE函数写法的简单举例,及应用

    SQL语句–CASE函数写法的简单举例,及应用 ---case函数的基本结构:case when...then...else... ----可以写也可以不写,按实际需求end [举个栗子_1] eg1 ...

  5. Spark的性能优化案例分析(下)

    前言 Spark的性能优化案例分析(上),介绍了软件性能优化必须经过进行性能测试,并在了解软件架构和技术的基础上进行.今天,我们通过几个 Spark 性能优化的案例,看一看所讲的性能优化原则如何落地. ...

  6. SequoiaDB Spark Yarn部署及案例演示

    1. 背景 由于MRv1在扩展性.可靠性.资源利用率和多框架等方面存在明显的不足,在Hadoop MRv2中引入了资源管理和调度系统YARN.YARN是 Hadoop MRv2计算机框架中构建的一个独 ...

  7. Spark快速上手-WordCount案例

    在此之前,我已经用MapReduce 框架实现了WordCount案例,接下来,我开始学习数据处理的另外一个非常重要的方法:Spark.首先,使用WordCount案例实现Spark快速上手. 创建M ...

  8. 左外连接Left-Outer-Join的基于SQL,MapReduce,sparkRDD,sparkDataFrame以及spark SQL的实现案例及对比

    提示:阅读本文需要部分java,scala,spark,sql的基础. 文章目录 前言 一.什么是join操作? 二.有那些常见的join的类型? 三.使用SQL实现左外连接: 1.数据准备 2.实现 ...

  9. spark 随机森林算法案例实战

    随机森林算法 由多个决策树构成的森林,算法分类结果由这些决策树投票得到,决策树在生成的过程当中分别在行方向和列方向上添加随机过程,行方向上构建决策树时采用放回抽样(bootstraping)得到训练数 ...

  10. 日期:年月日的写法 / 倒计时写法 /获得date总的毫秒数方式date.valueOf()/date.getTime()/+new Date()/Date.now()/及多种写法案例

    1.index.html代码: <!DOCTYPE html> <html lang="en"> <head><meta charset= ...

最新文章

  1. Android中自定义checkbox样式
  2. break continue 016
  3. 字符串MD5加密和产生一个随机密码的方法
  4. ROS初级教程1---官方ROS文件系统导览
  5. Oracle私房菜之安装Oracle 11g
  6. Tensorflow Probability 与 TensorFlow 的版本依赖关系
  7. 深入理解Linux IO复用之epoll
  8. Doc2Vec,Word2Vec文本相似度 初体验。
  9. dubbo与springmvc的简单使用
  10. c语言字体属性,【C】 5_变量属性
  11. linux 的那些hung 检测机制
  12. NB-IOT(6)---NB-IoT物联网行业解决方案
  13. python的书写格式_python 快速写作技巧,格式
  14. STM32F4UCOSII移植
  15. 京东物流系统架构演进中的最佳实践
  16. poj3580:SuperMemo(块状链表/Splay)
  17. c语言编程线性规划,使用C语言实现单纯形法求解线性规划问题.doc
  18. SpringBoot基础学习之整合Swagger框架(上篇)
  19. Infortrend混合存储推动大体量血站IT系统全面升级
  20. 5款电子书阅读APP,看小说的必备神器

热门文章

  1. c语言程序小时工资计算,C语言入门之工资计算
  2. 通过分析周榜前100名专家的博客文章 手把手教你写出爆款文章
  3. hardhat 教程及 hardhat-deploy 插件使用
  4. 我,阿里P7,找不到工作
  5. [SDOI2013]项链
  6. 《孙子兵法》帮你找到合格的管理者
  7. kinect v2 相机标定
  8. python抓取豆瓣电影
  9. WPF - 善用路由事件
  10. nginx的安装升级、常用配置(二)