版本

组件 版本
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的区别相关推荐

  1. window.location.Reload()和window.location.href 区别

    首先介绍两个方法的语法: reload 方法,该方法强迫浏览器刷新当前页面. 语法:location.reload([bForceGet])参数: bForceGet, 可选参数, 默认为 false ...

  2. jquery插件开发;(function ( $, window, document, undefined ){}(jQuery, window,document)分析

    经常看到许多jquery插件是这种形式: ;(function( $, window, document, undefined ){}){//...code }(jquery,window,docum ...

  3. html window 属性,html中window对象top 、self 、parent 等属性

    top 属性返回最顶层的先辈窗口. 该属性返回对一个顶级窗口的只读引用.如果窗口本身就是一个顶级窗口,top 属性存放对窗口自身的引用.如果窗口是一个框架,那么 top 属性引用包含框架的顶层窗口. ...

  4. window.location.href和window.location.replace

    说到这两个的使用区别,就得结合window.history.go(-1);wondow.history.back();这两个方法的机制了. 这两个方法是根据服务器记录的请求决定该跳到哪个页面. win ...

  5. window.onload()方法和window.onscroll()方法

    也许你想成为太阳,可你却只是一颗星辰:也许你想成为大树,可你却是一棵小草.于是,你有些自卑.其实,你和别人一样,也是一片风景:做不了太阳,就做星辰,在自己的星座发光发热:做不了大树,就做小草,以自己的 ...

  6. window.location和document.location的区别分析

    用户不能改变document.location(因为这是当前显示文档的位置).但是,可以改变window.location (用其它文档取代当前文档)window.location本身也是一个对象,而 ...

  7. javascript 中的window, document, screen都有什么区别?

    谷歌之后,从stackoverflow上找到的高赞答案: https://stackoverflow.com/questions/9895202/what-is-the-difference-betw ...

  8. 内网穿透-利用frp进行远程桌面控制(window服务端,window客户端)

    内网穿透-利用frp进行远程桌面控制(window服务端,window客户端) 参考链接 https://blog.csdn.net/weixin_38416696/article/details/1 ...

  9. $(window).load、$()与window.onload

    在不能使用`$(function(){})`的场合居然忘了jquery中等价于window.onload的方法怎么写,那个汗啊!记录一下,以免再忘 $(window).load与window.onlo ...

最新文章

  1. 会员管理scrm系统精细化运营更好促进成交
  2. 统计《ASP.Net特供视频教程》总长度
  3. VTK:可视化之Arbitrary3DCursor
  4. 深度学习优化算法总结
  5. android 布局: LinearLayout如何使TextView中的内容居中显示
  6. Idea工具开发 SpringBoot整合JSP(毕设亲测可用)
  7. LeetCode 250. 统计同值子树(递归)
  8. 服务器配置再生龙系统,PXE引导再生龙安装步骤
  9. python树莓派串口通信实例_树莓派通过串口发送数据
  10. 《iOS 6高级开发手册(第4版)》——2.5节秘诀:Quick Look预览控制器
  11. 程序结构程序设计(三) ——递归及递归举例
  12. 关于用mybatis调用存储过程时的入参和出参的传递方法
  13. 地震数据读写segyio的脑图(c语言接口)
  14. win10报错网络未识别的问题
  15. oracle北京时区,ORACLE中的时区(time zone)
  16. thunderbird 配置exchange邮箱
  17. 高并发的大型网站架构设计
  18. mac环境下搭建frida环境并连接网易mumu模拟器
  19. arm64的ioremap_ARMv8 内存管理架构.学习笔记
  20. AIO-3588JQ 8K AI工业主板

热门文章

  1. 偶尔用得上的MySQL操作
  2. Android分渠道打包(Python 3.4 实现)
  3. css预编译工具less使用心得
  4. 华容道游戏开发--android小组
  5. 关于MSSQL数据存储的问题
  6. CG-CTF-Web-层层递进
  7. js 简单的数组去重13种方法
  8. 自旋锁和互斥锁实例_自旋锁和互斥锁的实现以及使用区别
  9. Generator简单了解
  10. Springboot静态资源位置