flink sql实现interval join的图解
完整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的图解相关推荐
- Flink SQL之Interval Joins
1.Interval Joins(区间Join) 区间是双流join的优化,基于处理时间或事件时间,在一定时间区间内数据,相同的key进行join(支持 Batch\Streaming).Interv ...
- Flink SQL解析复杂Join(转载+自己整理和补充)
概述 $KAFKA/bin/kafka-console-consumer.sh --bootstrap-server Desktop:9091 --from-beginning --topic zep ...
- flink sql 知其所以然(十五):改了改源码,实现了个 batch lookup join(附源码)
看了那么多的技术文,你能明白作者想让你在读完文章后学到什么吗? 大数据羊说__的文章会让你明白 大数据羊说 用数据提升美好事物发生的概率~ 44篇原创内容 公众号 博主会阐明博主期望本文能给小伙伴们带 ...
- Flink SQL 功能解密系列 —— 维表 JOIN 与异步优化
2019独角兽企业重金招聘Python工程师标准>>> 引子 流计算中一个常见的需求就是为数据流补齐字段.因为数据采集端采集到的数据往往比较有限,在做数据分析之前,就要先将所需的维度 ...
- Flink SQL 1.11 新功能与最佳实践
#2020云栖大会#阿里云海量offer来啦!投简历.赢阿里云限量礼品及阿里云ACA认证免费考试资格!>>> 整理者:陈婧敏(清樾) 本文整理自 Apache Flink PMC,阿 ...
- Flink SQL 1.11新功能详解:Hive 数仓实时化 Flink SQL + CDC 实践
问题导读 1.Flink 1.11 有哪些新功能? 2.如何使用 flink-cdc-connectors 捕获 MySQL 和 Postgres 的数据变更? 3.怎样利用 Flink SQL 做多 ...
- flink sql 知其所以然(十三):流 join 很难嘛?(下)
看了那么多的技术文,你能明白作者想让你在读完文章后学到什么吗? 大数据羊说__的文章会让你明白 大数据羊说 用数据提升美好事物发生的概率~ 43篇原创内容 公众号 博主会阐明博主期望本文能给小伙伴们带 ...
- Flink SQL 如何实现数据流的 Join?
无论在 OLAP 还是 OLTP 领域,Join 都是业务常会涉及到且优化规则比较复杂的 SQL 语句.对于离线计算而言,经过数据库领域多年的积累,Join 语义以及实现已经十分成熟,然而对于近年来刚 ...
- Flink SQL Client中的session window图解
flink sql cookbook中的sql语句是: SELECT userid,SESSION_START(log_time, INTERVAL '10' SECOND) AS session_b ...
最新文章
- 几行代码构建全功能的对象检测模型,他是如何做到的?
- 【组合数学】递推方程 ( 通解定义 | 无重根下递推方程通解结构定理 )
- boost::log模块实现将日志记录初始化到远程 syslog 服务器
- struts-execl.xml
- Java中getResource()的用法
- 如何更改服务器上的数据库文件夹,如何设置数据库文件位置
- sdk manager的列表怎么消失了_腾讯安全SDK的Dll Dump研究
- eclipse 没有web项目解决办法
- 即刻app暂停服务?趁现在教你一步一步实现即刻点赞效果
- 数据流图、数据字典的画法
- 力士乐电源模块故障代码_REXROTH DRIVE博士力士乐伺服驱动器故障代码大全
- 企业使用邮箱的重要性
- LaTeX新手入门以及TeXlive和TeXstudio的安装使用
- Unity协程(Coroutine)之yield和迭代原理分析
- STM32CubeMX+Proteus仿真DS18B20
- git操作与vscode,码市的结合
- 计算机职业生涯测评,皮纹检测职业版——职业生涯规划指南测评系统
- 液晶屏UFB、STN、TFT比较
- AI 与合成生物学「联姻」的五大挑战:技术、数据、算法、评估与社会学
- Opencv实践应用之答题卡处理
热门文章
- MapReduce的简单实例WordCount
- cordova插件开发
- C#/.NET主线程与子线程之间的关系
- php伪协议实现命令执行的七种姿势
- 服务器如何导入数据库文件格式,服务器如何导入数据库文件格式
- 前端模块规范AMD/UMD/CommonJs
- java中elements_Java中的提供程序elements()方法
- 幼儿编程学java不_《终于有人说出来了——Java不适合于作为主要编程教学语言》我的看法...
- typeScript的函数实例
- RabbitMQ入门(五)-Topics(主题)