完整SQL代码

https://gitee.com/appleyuchi/Flink_Code/blob/master/flink-sql-cookbook/SQL/Interval_Joins.sql

基本概念

TIMESTAMPDIFF的作用

mysql> select TIMESTAMPDIFF(DAY, '2018-03-20 23:59:00', '2015-03-22 00:00:00');
+------------------------------------------------------------------+
| TIMESTAMPDIFF(DAY, '2018-03-20 23:59:00', '2015-03-22 00:00:00') |
+------------------------------------------------------------------+
|                                                            -1094 |
+------------------------------------------------------------------+

意思是:

2015年的某天-2018年的某天=天数差是-1094天

另外,上述SQL中涉及的订单表和发货表都是数据更新很快的表格.

所以这两张表都属于事实表.

此例属于两个事实表进行Join操作.

Interval Join查询语句

SELECTo.id AS order_id,o.order_time,s.shipment_time,TIMESTAMPDIFF(DAY,o.order_time,s.shipment_time) AS day_diff
FROM orders o
JOIN shipments s ON o.id = s.order_id
WHERE o.order_time BETWEEN s.shipment_time - INTERVAL '3' DAY AND s.shipment_time;

上述SQL语句的含义是:

SQL语句部分 业务含义
o.id AS order_id 订单ID
o.order_time 下单时间
s.shipment_time 发货时间
TIMESTAMPDIFF(DAY,o.order_time,s.shipment_time) 发货时间与下单时间的差
FROM orders o JOIN shipments s ON o.id = s.order_id

两张表(orders与shipments)中下单ID等于发货ID的数据

o.order_time BETWEEN s.shipment_time - INTERVAL '3' DAY AND s.shipment_time; 计算下单后3天内发货的订单

上述最后一部分的图解如下:

上面的图被误伤,下面的图是重新画的。

这个图的意思是:

查询下单后3天内发货的订单。

flink sql实现interval join的图解相关推荐

  1. Flink SQL之Interval Joins

    1.Interval Joins(区间Join) 区间是双流join的优化,基于处理时间或事件时间,在一定时间区间内数据,相同的key进行join(支持 Batch\Streaming).Interv ...

  2. Flink SQL解析复杂Join(转载+自己整理和补充)

    概述 $KAFKA/bin/kafka-console-consumer.sh --bootstrap-server Desktop:9091 --from-beginning --topic zep ...

  3. flink sql 知其所以然(十五):改了改源码,实现了个 batch lookup join(附源码)

    看了那么多的技术文,你能明白作者想让你在读完文章后学到什么吗? 大数据羊说__的文章会让你明白 大数据羊说 用数据提升美好事物发生的概率~ 44篇原创内容 公众号 博主会阐明博主期望本文能给小伙伴们带 ...

  4. Flink SQL 功能解密系列 —— 维表 JOIN 与异步优化

    2019独角兽企业重金招聘Python工程师标准>>> 引子 流计算中一个常见的需求就是为数据流补齐字段.因为数据采集端采集到的数据往往比较有限,在做数据分析之前,就要先将所需的维度 ...

  5. Flink SQL 1.11 新功能与最佳实践

    #2020云栖大会#阿里云海量offer来啦!投简历.赢阿里云限量礼品及阿里云ACA认证免费考试资格!>>> 整理者:陈婧敏(清樾) 本文整理自 Apache Flink PMC,阿 ...

  6. Flink SQL 1.11新功能详解:Hive 数仓实时化 Flink SQL + CDC 实践

    问题导读 1.Flink 1.11 有哪些新功能? 2.如何使用 flink-cdc-connectors 捕获 MySQL 和 Postgres 的数据变更? 3.怎样利用 Flink SQL 做多 ...

  7. flink sql 知其所以然(十三):流 join 很难嘛?(下)

    看了那么多的技术文,你能明白作者想让你在读完文章后学到什么吗? 大数据羊说__的文章会让你明白 大数据羊说 用数据提升美好事物发生的概率~ 43篇原创内容 公众号 博主会阐明博主期望本文能给小伙伴们带 ...

  8. Flink SQL 如何实现数据流的 Join?

    无论在 OLAP 还是 OLTP 领域,Join 都是业务常会涉及到且优化规则比较复杂的 SQL 语句.对于离线计算而言,经过数据库领域多年的积累,Join 语义以及实现已经十分成熟,然而对于近年来刚 ...

  9. Flink SQL Client中的session window图解

    flink sql cookbook中的sql语句是: SELECT userid,SESSION_START(log_time, INTERVAL '10' SECOND) AS session_b ...

最新文章

  1. 几行代码构建全功能的对象检测模型,他是如何做到的?
  2. 【组合数学】递推方程 ( 通解定义 | 无重根下递推方程通解结构定理 )
  3. boost::log模块实现将日志记录初始化到远程 syslog 服务器
  4. struts-execl.xml
  5. Java中getResource()的用法
  6. 如何更改服务器上的数据库文件夹,如何设置数据库文件位置
  7. sdk manager的列表怎么消失了_腾讯安全SDK的Dll Dump研究
  8. eclipse 没有web项目解决办法
  9. 即刻app暂停服务?趁现在教你一步一步实现即刻点赞效果
  10. 数据流图、数据字典的画法
  11. 力士乐电源模块故障代码_REXROTH DRIVE博士力士乐伺服驱动器故障代码大全
  12. 企业使用邮箱的重要性
  13. LaTeX新手入门以及TeXlive和TeXstudio的安装使用
  14. Unity协程(Coroutine)之yield和迭代原理分析
  15. STM32CubeMX+Proteus仿真DS18B20
  16. git操作与vscode,码市的结合
  17. 计算机职业生涯测评,皮纹检测职业版——职业生涯规划指南测评系统
  18. 液晶屏UFB、STN、TFT比较
  19. AI 与合成生物学「联姻」的五大挑战:技术、数据、算法、评估与社会学
  20. Opencv实践应用之答题卡处理

热门文章

  1. MapReduce的简单实例WordCount
  2. cordova插件开发
  3. C#/.NET主线程与子线程之间的关系
  4. php伪协议实现命令执行的七种姿势
  5. 服务器如何导入数据库文件格式,服务器如何导入数据库文件格式
  6. 前端模块规范AMD/UMD/CommonJs
  7. java中elements_Java中的提供程序elements()方法
  8. 幼儿编程学java不_《终于有人说出来了——Java不适合于作为主要编程教学语言》我的看法...
  9. typeScript的函数实例
  10. RabbitMQ入门(五)-Topics(主题)