Spark CASE WHEN 写法案例
一、前言
用过大数据的同事都熟悉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 写法案例相关推荐
- Spark Streaming 图片处理案例介绍
Spark Streaming 图片处理案例介绍 本文首先介绍了流式处理框架的设计原理.Spark Streaming 的工作原理,然后通过一个基于 Spark Streaming 编写的读取.分析. ...
- 【原创 HadoopSpark 动手实践 6】Spark 编程实例与案例演示
[原创 Hadoop&Spark 动手实践 6]Spark 编程实例与案例演示 Spark 编程实例和简易电影分析系统的编写 目标: 1. 掌握理论:了解Spark编程的理论基础 2. 搭建 ...
- Spark编写UDF函数案例
Spark编写UDF函数案例 一.前述 二.UDF函数 需求:将orders表中 order_dow和order_number进行求和 一.前述 SparkSql中自定义函数包括UDF和UDAF UD ...
- SQL语句--CASE函数写法的简单举例,及应用
SQL语句–CASE函数写法的简单举例,及应用 ---case函数的基本结构:case when...then...else... ----可以写也可以不写,按实际需求end [举个栗子_1] eg1 ...
- Spark的性能优化案例分析(下)
前言 Spark的性能优化案例分析(上),介绍了软件性能优化必须经过进行性能测试,并在了解软件架构和技术的基础上进行.今天,我们通过几个 Spark 性能优化的案例,看一看所讲的性能优化原则如何落地. ...
- SequoiaDB Spark Yarn部署及案例演示
1. 背景 由于MRv1在扩展性.可靠性.资源利用率和多框架等方面存在明显的不足,在Hadoop MRv2中引入了资源管理和调度系统YARN.YARN是 Hadoop MRv2计算机框架中构建的一个独 ...
- Spark快速上手-WordCount案例
在此之前,我已经用MapReduce 框架实现了WordCount案例,接下来,我开始学习数据处理的另外一个非常重要的方法:Spark.首先,使用WordCount案例实现Spark快速上手. 创建M ...
- 左外连接Left-Outer-Join的基于SQL,MapReduce,sparkRDD,sparkDataFrame以及spark SQL的实现案例及对比
提示:阅读本文需要部分java,scala,spark,sql的基础. 文章目录 前言 一.什么是join操作? 二.有那些常见的join的类型? 三.使用SQL实现左外连接: 1.数据准备 2.实现 ...
- spark 随机森林算法案例实战
随机森林算法 由多个决策树构成的森林,算法分类结果由这些决策树投票得到,决策树在生成的过程当中分别在行方向和列方向上添加随机过程,行方向上构建决策树时采用放回抽样(bootstraping)得到训练数 ...
- 日期:年月日的写法 / 倒计时写法 /获得date总的毫秒数方式date.valueOf()/date.getTime()/+new Date()/Date.now()/及多种写法案例
1.index.html代码: <!DOCTYPE html> <html lang="en"> <head><meta charset= ...
最新文章
- Android中自定义checkbox样式
- break continue 016
- 字符串MD5加密和产生一个随机密码的方法
- ROS初级教程1---官方ROS文件系统导览
- Oracle私房菜之安装Oracle 11g
- Tensorflow Probability 与 TensorFlow 的版本依赖关系
- 深入理解Linux IO复用之epoll
- Doc2Vec,Word2Vec文本相似度 初体验。
- dubbo与springmvc的简单使用
- c语言字体属性,【C】 5_变量属性
- linux 的那些hung 检测机制
- NB-IOT(6)---NB-IoT物联网行业解决方案
- python的书写格式_python 快速写作技巧,格式
- STM32F4UCOSII移植
- 京东物流系统架构演进中的最佳实践
- poj3580:SuperMemo(块状链表/Splay)
- c语言编程线性规划,使用C语言实现单纯形法求解线性规划问题.doc
- SpringBoot基础学习之整合Swagger框架(上篇)
- Infortrend混合存储推动大体量血站IT系统全面升级
- 5款电子书阅读APP,看小说的必备神器