首页 > 社交 > 科普中国

大数据组件常用命令

常驻编辑 科普中国 2022-10-20 函数   组件   字符   元素   命令   参数   日期   类型   功能   文件   时间   常用命令   数据
Knu拜客生活常识网


Knu拜客生活常识网

SELECT movie,category_name 
FROM movie_info 
lateral VIEW
explode(split(category,",")) movie_info_tmp  AS category_name ;


Knu拜客生活常识网

测试结果Knu拜客生活常识网


Knu拜客生活常识网

《功勋》      记录
《功勋》      剧情
《战狼2》     战争
《战狼2》     动作
《战狼2》     灾难


Knu拜客生活常识网

窗口函数


Knu拜客生活常识网

(1)OVER()Knu拜客生活常识网


Knu拜客生活常识网

定分析函数工作的数据窗口大小,这个数据窗口大小可能会随着行的变而变化。Knu拜客生活常识网


Knu拜客生活常识网

(2)CURRENT ROW(当前行)Knu拜客生活常识网


Knu拜客生活常识网

n PRECEDING:往前n行数据

n FOLLOWING:往后n行数据


Knu拜客生活常识网

(3)UNBOUNDED(无边界)Knu拜客生活常识网


Knu拜客生活常识网

UNBOUNDED PRECEDING 前无边界,表示从前面的起点

UNBOUNDED FOLLOWING后无边界,表示到后面的终点


Knu拜客生活常识网

SQL案例:由起点到当前行的聚合Knu拜客生活常识网


Knu拜客生活常识网

select 
    sum(money) over(partition by user_id order by pay_time rows between UNBOUNDED PRECEDING and current row) 
from or_order;


Knu拜客生活常识网

SQL案例:当前行和前面一行做聚合Knu拜客生活常识网


Knu拜客生活常识网

select 
    sum(money) over(partition by user_id order by pay_time rows between 1 PRECEDING and current row) 
from or_order;


Knu拜客生活常识网

SQL案例:当前行和前面一行和后一行做聚合Knu拜客生活常识网


Knu拜客生活常识网

select 
    sum(money) over(partition by user_id order by pay_time rows between 1 PRECEDING AND 1 FOLLOWING )
from or_order;


Knu拜客生活常识网

SQL案例:当前行及后面所有行Knu拜客生活常识网


Knu拜客生活常识网

select 
    sum(money) over(partition by user_id order by pay_time rows between current row and UNBOUNDED FOLLOWING  )
from or_order;


Knu拜客生活常识网

(4)LAG(col,n,default_val)Knu拜客生活常识网


Knu拜客生活常识网

往前第n行数据,没有的话default_valKnu拜客生活常识网


Knu拜客生活常识网

(5)LEAD(col,n, default_val)Knu拜客生活常识网


Knu拜客生活常识网

往后第n行数据,没有的话default_valKnu拜客生活常识网


Knu拜客生活常识网

SQL案例:查询用户购买明细以及上次的购买时间和下次购买时间Knu拜客生活常识网


Knu拜客生活常识网

select 
	user_id,,pay_time,money,
	
	lag(pay_time,1,'1970-01-01') over(PARTITION by name order by pay_time) prev_time,
	
	lead(pay_time,1,'1970-01-01') over(PARTITION by name order by pay_time) next_time
from or_order;


Knu拜客生活常识网

(6)FIRST_VALUE(col,true/false)Knu拜客生活常识网


Knu拜客生活常识网

当前窗口下的第一个值,第二个参数为true,跳过空值。Knu拜客生活常识网


Knu拜客生活常识网

(7)LAST_VALUE (col,true/false)Knu拜客生活常识网


Knu拜客生活常识网

当前窗口下的最后一个值,第二个参数为true,跳过空值。Knu拜客生活常识网


Knu拜客生活常识网

SQL案例:查询用户每个月第一次的购买时间 和 每个月的最后一次购买时间Knu拜客生活常识网


Knu拜客生活常识网

select
	FIRST_VALUE(pay_time) 
	    over(
	        partition by user_id,month(pay_time) order by pay_time 
	        rows between UNBOUNDED PRECEDING and UNBOUNDED FOLLOWING
	        ) first_time,
	
	LAST_VALUE(pay_time) 
	    over(partition by user_id,month(pay_time) order by pay_time rows between UNBOUNDED PRECEDING and UNBOUNDED FOLLOWING
	    ) last_time
from or_order;


Knu拜客生活常识网

(8)NTILE(n)Knu拜客生活常识网


Knu拜客生活常识网

把有序窗口的行分发到指定数据的组中,各个组有编号,编号从1开始,对于每一行,NTILE返回此行所属的组的编号。(用于将分组数据按照顺序切分成n片,返回当前切片值)Knu拜客生活常识网


Knu拜客生活常识网

SQL案例:查询前25%时间的订单信息Knu拜客生活常识网


Knu拜客生活常识网

select * from (
    select User_id,pay_time,money,
    
    ntile(4) over(order by pay_time) sorted
    
    from or_order
) t
where sorted = 1;    

相关阅读:

  • tan30度等于多少(三角函数必背公式)
  • cos30度是多少(三角函数所有公式大全)
  • 如何插入函数(将多个单元格内容合并)
  • 怎么定义函数(matlab中script和function区别)
  • excel怎么用函数 电脑表格怎样设置函数公式?
  • 函数图像怎么画 二次函数图像生成器?
  • C++|深入理解智能指针
  • typescript4.7
  • 「技术干货」Linux内核代码追踪之UDP调用过程
  • 单片机时间片轮询任务调度的实现方法
    • 网站地图 |
    • 声明:登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述。文章内容仅供参考,不做权威认证,如若验证其真实性,请咨询相关权威专业人士。