Rows Over Window与Range Over Window的区别
版本
组件 | 版本 |
Flink | 1.12 |
Ubuntu | 20.04 |
概述
本文是对[1]的复现,[1]中的一些实验结果是错误的,不要迷信,一定要自己实际操作和验证.
完整操作
https://gitee.com/appleyuchi/Flink_Code/blob/master/sql_api/over.sql
解析
ROWS OVER Window
具体操作是:
SELECTitemID,itemType,onSellTime,price, MAX(price) OVER (PARTITION BY itemType ORDER BY onSellTime ROWS BETWEEN 2 preceding AND CURRENT ROW) AS maxPriceFROM tmall_item;
实验结果是:
itemID | itemType | onSellTime | price | maxPrice |
---|---|---|---|---|
ITEM001 | Electronic |
2017-11-11 10:01:00
|
20 | 20 |
ITEM002 | Electronic |
2017-11-11 10:02:00
|
50 | 50 |
ITEM003 | Electronic |
2017-11-11 10:03:00
|
30 | 50 |
ITEM004 | Electronic |
2017-11-11 10:03:00
|
60 | 60 |
ITEM005 | Electronic |
2017-11-11 10:05:00
|
40 | 60 |
ITEM006 | Electronic |
2017-11-11 10:06:00
|
20 | 60 |
ITEM007 | Electronic |
2017-11-11 10:07:00
|
70 | 70 |
ITEM008 | Clothes |
2017-11-11 10:08:00
|
20 | 20 |
详细计算
max{20}=20
max{20,50}=50
max{20,50,30}=50
max{50,30,60}=60
max{30,60,40}=60
max{60,40,20}=60
max{40,20,70}=70
max{20}=20(因为更换ItemType了)
RANGE OVER Window
具体操作是:
SELECT itemID,itemType, onSellTime, price, MAX(price) OVER (PARTITION BY itemType ORDER BY onSellTime RANGE BETWEEN INTERVAL '2' MINUTE preceding AND CURRENT ROW) AS maxPriceFROM tmall_item;
这里的INTERVAL '2' MINUTE preceding指的是闭区间
实验结果是:
itemID | itemType | onSellTime | price | maxPrice |
---|---|---|---|---|
ITEM001 | Electronic |
2017-11-11 10:01:00
|
20 | 20 |
ITEM002 | Electronic |
2017-11-11 10:02:00
|
50 | 50 |
ITEM003 | Electronic |
2017-11-11 10:03:00
|
30 | 60 |
ITEM004 | Electronic |
2017-11-11 10:03:00
|
60 | 60 |
ITEM005 | Electronic |
2017-11-11 10:05:00
|
40 | 60 |
ITEM006 | Electronic |
2017-11-11 10:06:00
|
20 | 40 |
ITEM007 | Electronic |
2017-11-11 10:07:00
|
70 | 70 |
ITEM008 | Clothes |
2017-11-11 10:08:00
|
20 | 20 |
max{20}=20
max{20,50}=50
max{20,50,30,60}=60(这个地方是按照时间范围interval在扫描该时间范围内的数据)
max{50,30,60}=60
max{30,60,40}=60(这个地方的结果体现了INTERVAL '2' MINUTE preceding指的是闭区间,因为刚好差了2分钟)
max{40,20}=40
max{40,20,70}=70
max{20}=20(因为更换ItemType了)
Reference:
[1]OVER窗口
Rows Over Window与Range Over Window的区别相关推荐
- window.location.Reload()和window.location.href 区别
首先介绍两个方法的语法: reload 方法,该方法强迫浏览器刷新当前页面. 语法:location.reload([bForceGet])参数: bForceGet, 可选参数, 默认为 false ...
- jquery插件开发;(function ( $, window, document, undefined ){}(jQuery, window,document)分析
经常看到许多jquery插件是这种形式: ;(function( $, window, document, undefined ){}){//...code }(jquery,window,docum ...
- html window 属性,html中window对象top 、self 、parent 等属性
top 属性返回最顶层的先辈窗口. 该属性返回对一个顶级窗口的只读引用.如果窗口本身就是一个顶级窗口,top 属性存放对窗口自身的引用.如果窗口是一个框架,那么 top 属性引用包含框架的顶层窗口. ...
- window.location.href和window.location.replace
说到这两个的使用区别,就得结合window.history.go(-1);wondow.history.back();这两个方法的机制了. 这两个方法是根据服务器记录的请求决定该跳到哪个页面. win ...
- window.onload()方法和window.onscroll()方法
也许你想成为太阳,可你却只是一颗星辰:也许你想成为大树,可你却是一棵小草.于是,你有些自卑.其实,你和别人一样,也是一片风景:做不了太阳,就做星辰,在自己的星座发光发热:做不了大树,就做小草,以自己的 ...
- window.location和document.location的区别分析
用户不能改变document.location(因为这是当前显示文档的位置).但是,可以改变window.location (用其它文档取代当前文档)window.location本身也是一个对象,而 ...
- javascript 中的window, document, screen都有什么区别?
谷歌之后,从stackoverflow上找到的高赞答案: https://stackoverflow.com/questions/9895202/what-is-the-difference-betw ...
- 内网穿透-利用frp进行远程桌面控制(window服务端,window客户端)
内网穿透-利用frp进行远程桌面控制(window服务端,window客户端) 参考链接 https://blog.csdn.net/weixin_38416696/article/details/1 ...
- $(window).load、$()与window.onload
在不能使用`$(function(){})`的场合居然忘了jquery中等价于window.onload的方法怎么写,那个汗啊!记录一下,以免再忘 $(window).load与window.onlo ...
最新文章
- 会员管理scrm系统精细化运营更好促进成交
- 统计《ASP.Net特供视频教程》总长度
- VTK:可视化之Arbitrary3DCursor
- 深度学习优化算法总结
- android 布局: LinearLayout如何使TextView中的内容居中显示
- Idea工具开发 SpringBoot整合JSP(毕设亲测可用)
- LeetCode 250. 统计同值子树(递归)
- 服务器配置再生龙系统,PXE引导再生龙安装步骤
- python树莓派串口通信实例_树莓派通过串口发送数据
- 《iOS 6高级开发手册(第4版)》——2.5节秘诀:Quick Look预览控制器
- 程序结构程序设计(三) ——递归及递归举例
- 关于用mybatis调用存储过程时的入参和出参的传递方法
- 地震数据读写segyio的脑图(c语言接口)
- win10报错网络未识别的问题
- oracle北京时区,ORACLE中的时区(time zone)
- thunderbird 配置exchange邮箱
- 高并发的大型网站架构设计
- mac环境下搭建frida环境并连接网易mumu模拟器
- arm64的ioremap_ARMv8 内存管理架构.学习笔记
- AIO-3588JQ 8K AI工业主板