首页 > 大数据 > Hadoop > Flink SQL - JOIN 查询
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' );
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/70024433/viewspace-2965755/ ,如需转载,请注明出处,否则将追究法律责任。