日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

flink sql实现interval join的图解

發(fā)布時間:2023/12/31 编程问答 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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中涉及的訂單表和發(fā)貨表都是數據更新很快的表格.

所以這兩張表都屬于事實表.

此例屬于兩個事實表進行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語句部分業(yè)務含義
o.id AS order_id訂單ID
o.order_time下單時間
s.shipment_time發(fā)貨時間
TIMESTAMPDIFF(DAY,o.order_time,s.shipment_time)發(fā)貨時間與下單時間的差
FROM orders o JOIN shipments s ON o.id = s.order_id

兩張表(orders與shipments)中下單ID等于發(fā)貨ID的數據

o.order_time BETWEEN s.shipment_time - INTERVAL '3' DAY AND s.shipment_time;計算下單后3天內發(fā)貨的訂單

?

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

?

上面的圖被誤傷,下面的圖是重新畫的。

這個圖的意思是:

查詢下單后3天內發(fā)貨的訂單。

?

?

總結

以上是生活随笔為你收集整理的flink sql实现interval join的图解的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。