SparkSQL学习中SQL分析函数的使用

本文介绍了SparkSQL中SQL分析函数的使用,包括如何计算分组内第一行到当前行pv的合计值,分析函数的一般语法结构,window子句,rows和range的区别,以及排名函数和行函数的应用。
摘要由CSDN通过智能技术生成

SparkSQL/Hive 提供了许多的分析函数,用于完成复杂统计分析。
sum、avg、min、max,分别用于计算分组内相关统计信息。

1、用SQL实现下面的操作

测试数据:
±-------±------------------±–+
|cookieid| createtime| pv|
±-------±------------------±–+
| cookie1|2015-04-10 00:00:00| 1|
| cookie1|2015-04-11 00:00:00| 5|
| cookie1|2015-04-12 00:00:00| 7|
| cookie1|2015-04-13 00:00:00| 3|
| cookie1|2015-04-14 00:00:00| 2|
| cookie1|2015-04-15 00:00:00| 4|
| cookie1|2015-04-16 00:00:00| 4|
| cookie2|2015-04-10 00:00:00| 2|
| cookie2|2015-04-11 00:00:00| 3|
| cookie2|2015-04-12 00:00:00| 5|
| cookie2|2015-04-13 00:00:00| 6|
| cookie2|2015-04-14 00:00:00| 3|
| cookie2|2015-04-15 00:00:00| 9|
| cookie2|2015-04-16 00:00:00| 7|
±-------±------------------±–+
根据以下要求实现新的列:
根据cookieid分组,按照createtime排序,新列的值为第一行到当前行pv的合计值
SQL实现:

val sql =
      """select cookieid,createtime,pv,
        |sum(pv) over(partition by cookieid order by createtime) as pv1
        |from t1""".stripMargin

    spark.sql(sql).show()

结果:
在这里插入图片描述
计算方式:sum(pv)
分组方式:partition by cookieid
排序方式:order by createtime
计算范围:未指定,默认第一行到当前行
SQL实现pv2列指定计算范围:

val sql =
      """select cookieid,createtime,pv,
        |sum(pv) over(partition by cookieid order by createtime) as pv1,
        |sum(pv) over(partition by cookieid order by createtime
        |rows between unbounded preceding and current row) as pv2
        |from t1""".stripMargin
    
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值