加入收藏 | 设为首页 | 会员中心 | 我要投稿 晋中站长网 (https://www.0354zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 运营中心 > 网站设计 > 教程 > 正文

Apache Flink 漫谈系列 - SQL概览

发布时间:2018-11-15 10:22:07 所属栏目:教程 来源:孙金城
导读:一、SQL简述 SQL是Structured Query Language的缩写,最初是由美国计算机科学家Donald D. Chamberlin和Raymond F. Boyce在20世纪70年代早期从 Early History of SQL 中了解关系模型后在IBM开发的。该版本最初称为[SEQUEL: A Structured English Query Lang

我们以3个元素(2 PRECEDING)的窗口为例,如下图:

Apache Flink 漫谈系列 - SQL概览

上图所示窗口 user 1 的 w5和w6, user 2的 窗口 w2 和 w3,虽然有元素都是同一时刻到达,但是他们仍然是在不同的窗口,这一点有别于RANGE OVER Window。

b. 语法

Bounded ROWS OVER Window 语法如下:

  1. SELECT 
  2. agg1(col1) OVER( 
  3. [PARTITION BY (value_expression1,..., value_expressionN)] 
  4. ORDER BY timeCol 
  5. ROWS 
  6. BETWEEN (UNBOUNDED | rowCount) PRECEDING AND CURRENT ROW) AS colName, 
  7. ... 
  8. FROM Tab1 
  • value_expression - 进行分区的字表达式;
  • timeCol - 用于元素排序的时间字段;
  • rowCount - 是定义根据当前行开始向前追溯几行元素。

c. SQL 示例

利用item_tab测试数据,我们统计同类商品中当前和当前商品之前2个商品中的最高价格。

  1. SELECT 
  2. itemID, 
  3. itemType, 
  4. onSellTime, 
  5. price, 
  6. MAX(price) OVER ( 
  7. PARTITION BY itemType 
  8. ORDER BY onSellTime 
  9. ROWS BETWEEN 2 preceding AND CURRENT ROW) AS maxPrice 
  10. FROM item_tab 

d. Result

Apache Flink 漫谈系列 - SQL概览

(2) Bounded RANGE OVER Window

Bounded RANGE OVER Window 具有相同时间值的所有元素行视为同一计算行,即,具有相同时间值的所有行都是同一个窗口。

a. 语义

我们以3秒中数据(INTERVAL '2' SECOND)的窗口为例,如下图:

Apache Flink 漫谈系列 - SQL概览

注意: 上图所示窗口 user 1 的 w6, user 2的 窗口 w3,元素都是同一时刻到达,他们是在同一个窗口,这一点有别于ROWS OVER Window。

b. 语法

Bounded RANGE OVER Window的语法如下:

  1. SELECT 
  2. agg1(col1) OVER( 
  3. [PARTITION BY (value_expression1,..., value_expressionN)] 
  4. ORDER BY timeCol 
  5. RANGE 
  6. BETWEEN (UNBOUNDED | timeInterval) PRECEDING AND CURRENT ROW) AS colName, 
  7. ... 
  8. FROM Tab1 
  • value_expression - 进行分区的字表达式;
  • timeCol - 用于元素排序的时间字段;
  • timeInterval - 是定义根据当前行开始向前追溯指定时间的元素行;

c. SQL 示例

(编辑:晋中站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读