ITPub博客

首页 > 大数据 > Hadoop > Flink SQL - JOIN 查询

Flink SQL - JOIN 查询

原创 Hadoop 作者:元亨利贞 时间:2023-07-21 17:48:32 0 删除 编辑

介绍

Flink SQL 中的 Join 查询是一种数据关联方式,用于从两个或多个表中获取数据并组合成一个结果表。Join 查询可以按照不同的条件和类型进行关联。


用法

Regular Join:这是最常见的 Join 类型,可以按照一个或多个字段或表达式对两个动态表进行等值连接,并对每个连接的结果进行输出。Regular Join 支持内连接(Inner Join)、左外连接(Left Outer Join)、右外连接(Right Outer Join)和全外连接(Full Outer Join)。例如:

SELECT * FROM Orders INNER JOIN Product ON Orders.product_id = Product.id;

Interval Join:这是一种特殊的 Join 类型,可以按照一个时间区间对两个动态表进行连接,并对每个连接的结果进行输出。Interval Join 需要至少一个等值条件和一个时间限定条件,用于指定两个表的时间属性列和时间范围。例如:

SELECT * FROM Orders o, Shipments s WHERE o.id = s.order_id AND o.order_time BETWEEN s.ship_time - INTERVAL '4' HOUR AND s.ship_time;

Temporal Join:这是一种时态表的 Join 类型,可以按照一个时间点对一个动态表和一个版本表进行连接,并对每个连接的结果进行输出。Temporal Join 需要至少一个等值条件和一个时间限定条件,用于指定两个表的时间属性列和时间点。Temporal Join 支持事件时间(Event Time)和处理时间(Processing Time)两种模式。例如:

SELECT * FROM Orders o JOIN Product FOR SYSTEM_TIME AS OF o.order_time p ON o.product_id = p.id;

Lookup Join:这是一种维度表的 Join 类型,可以按照一个或多个字段或表达式对一个动态表和一个外部维度表进行连接,并对每个连接的结果进行输出。Lookup Join 需要指定外部维度表的连接器(Connector)和参数,并且只支持内连接(Inner Join)。例如:

SELECT * FROM Orders o JOIN Product p ON o.product_id = p.id WITH ( 'connector' = 'jdbc', 'url' = 'jdbc:mysql://localhost:3306/product_db', 'table-name' = 'product', 'username' = 'root', 'password' = '123456' );


Join 查询的应用场景

  • 数据关联分析:例如关联订单表和商品表,分析订单金额和商品类别的关系
  • 数据扩展补充:例如关联日志表和维度表,补充日志中缺失的维度信息
  • 数据变化追踪:例如关联历史表和快照表,追踪数据的变化历史


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/70024433/viewspace-2965755/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2022-11-21

  • 博文量
    383
  • 访问量
    247993