文档章节

关于spark聚合函数与lag窗口函数同时使用的一个问题

苗永超
 苗永超
发布于 2017/09/17 22:10
字数 308
阅读 74
收藏 0

有这样一个sql语句:

SELECT
    订单号, 
    unify_date(concat(year(支付时间), " ", month(支付时间), " ", day(支付时间))),
    用户优惠券表用户UID,
    lag(max_date(支付时间), 1) over (partition by 用户优惠券表用户UID order by (支付时间))                  
FROM
    优惠券表            
GROUP BY
    订单号, year(支付时间), month(支付时间), day(支付时间), 用户优惠券表用户UID 
limit 1000

执行后会报错:

expression '支付时间' is neither present in the group by, nor is it an aggregate function. Add to group by or wrap in first() (or first_value) if you don't care which value you get.;

    通过在lag窗口函数中的order by里加 first函数的方式,让这个语句能够查询出结果。但是我研究了很久,没有研究明白这么做是为什么。

    我猜测,支付时间这个字段用在了聚合函数中,但是它本身却不是group by里面的任意一个维度,添加first函数是为了忽略掉`支付时间`的排序,随便取一个数值显示罢了。

    暂时只研究了这么多,待以后研究透了再来修改blog。

    

 

 

 

 

© 著作权归作者所有

共有 人打赏支持
苗永超
粉丝 15
博文 57
码字总数 14075
作品 0
海淀
后端工程师
私信 提问
Apache Spark 2.4 正式发布,重要功能详细介绍

美国时间 2018年11月08日 正式发布了。一如既往,为了继续实现 Spark 更快,更轻松,更智能的目标,Spark 2.4 带来了许多新功能,如下: 添加一种支持屏障模式(barrier mode)的调度器,以便...

Spark
2018/11/10
0
0
Spark Structured Streaming特性介绍

为帮助开发者更深入的了解这三个大数据开源技术及其实际应用场景,9月8日,InfoQ联合华为云举办了一场实时大数据Meetup,集结了来自Databricks、华为及美团点评的大咖级嘉宾前来分享。 作为S...

Spark
2018/09/21
0
0
怎样给Spark传递函数—怎样让你的Spark应用更高效更健壮

相信很多人在开始用Spark的时候一定会遇到 Task not serializable的问题,这种问题大多数都是在RDD的算子中调用了不能序列化的对象引起的。为什么传入算子中的对象一定要能够序列化呢?这就要...

miaosu
2015/08/16
0
0
Spark Streaming流式处理

Spark Streaming介绍 Spark Streaming概述 Spark Streaming makes it easy to build scalable fault-tolerant streaming applications. 它可以非常容易的构建一个可扩展、具有容错机制的流式......

jiFeng丶
2018/07/26
0
0
Spark 从零到开发(五)初识Spark SQL

Spark SQL是用于结构化数据处理的Spark模块。 与基本的Spark RDD API不同,Spark SQL提供的接口为Spark提供了有关数据结构和正在执行的计算的更多信息。 在内部,Spark SQL使用此额外信息来执...

一个入门攻城狮
2018/11/20
0
0

没有更多内容

加载失败,请刷新页面

加载更多

合理设置线程池大小

要想合理的配置线程池的大小,首先得分析任务的特性,可以从以下几个角度分析: 任务的性质:CPU密集型任务、IO密集型任务、混合型任务。 任务的优先级:高、中、低。 任务的执行时间:长、中...

飓风2000
22分钟前
3
0
git checkout命令详解

在实际应用中,git checkout是最为常见命令之一。 此命令参数众多,功能多样,但有些功能可能整个职业生涯都不会用到,所以本文只介绍最为实用的部分。 如果想要了git checkout命令所有功能,...

天王盖地虎626
22分钟前
2
0
jquery中处理ajax跨域的三大方式

之前mui项目开发过程遇到过跨域问题,搜集了下关于相关跨域的解决方案: 一、处理跨域的方式: 1.代理 2.XHR2 HTML5中提供的XMLHTTPREQUEST Level2(及XHR2)已经实现了跨域访问。但ie10以下...

ZhangLG
23分钟前
1
0
HTTP访问控制(CORS)

HTTP访问控制(CORS)

gdxz110
25分钟前
1
0
11g DG中的参数

11g DG中的SEC_CASE_SENSITIVE_LOGON参数 在一次配置dg完成后,备库会时不时的无法自动应用日志,后台日志报错如下: 期间排除了修改sys密码问题、网络问题、参数_system_trig_enabled问题(...

突突突酱
29分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部