首页/数据/数据工程与 ETL 速查/流式关联:Interval Join 与维表 Lookup Join
本包目录(311 条)
管道基础52 条
Kafka64 条调度与编排40 条数仓建模52 条数据质量50 条CDC 与同步53 条

流式关联:Interval Join 与维表 Lookup Join

流与流按时间区间关联用 interval join;流与维表关联用 lookup join(按需查外部库)。维表变化频繁时要考虑缓存过期与回溯。

Interval Join两条流按事件时间区间匹配,如订单与支付 15 分钟内关联
Lookup Join流去外部维表点查,适合缓慢变化维
状态成本interval join 需保存区间内两侧数据

Flink SQL 维表关联

Flink SQL 维表关联
SELECT o.order_id, u.city
FROM orders AS o
JOIN user_dim FOR SYSTEM_TIME AS OF o.proc_time AS u
ON o.user_id = u.user_id;

Flink SQL 区间关联

Flink SQL 区间关联
SELECT o.order_id, pay.pay_id
FROM orders o JOIN payments pay
  ON o.order_id = pay.order_id
 AND pay.pay_time BETWEEN o.order_time AND o.order_time + INTERVAL '15' MINUTE;
lookup join 的维表缓存过期时间决定数据新鲜度,调大缓存能减压力但会命中旧维度值。

易错点

  • 区间关联的时间字段必须都有水位线定义,否则窗口无法推进
  • 维表点查没有缓存会打爆下游库,需要评估 QPS 与缓存策略

数据来源与参考

  • Apache Flink 官方文档:Joins(Regular/Interval/Lookup)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌