select
create_time
.......
from log vdl
left join dim_ip_local_range FOR SYSTEM_TIME AS OF vdl.create_time as dilr
on int_ip >= dilr.start_num and int_ip <= dilr.end_num
;
我想通过这种范围连接,批处理模式是可以的,流模式会报错 Temporal table can only be used in temporal join and only supports 'FOR SYSTEM_TIME AS OF' left table's time attribute field
Flink SQL中的维表join可以使用等值连接,也可以使用范围连接。在您的示例中,使用了左连接和范围连接的组合,因此必须使用范围连接。
左连接是指将左侧表(这里是log vdl
)的所有行与右侧表(这里是dim_ip_local_range
)的所有行匹配。如果右侧表中没有匹配的行,则左侧表中的每一行都将被包含在结果集中。
范围连接是指将左侧表中某个时间范围内的行与右侧表中某个时间范围内的行匹配。在您的示例中,使用了系统时间作为时间参考点,因此使用了范围连接。
总之,Flink SQL中的维表join可以使用多种连接方式,具体取决于您的需求和数据结构。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
实时计算Flink版是阿里云提供的全托管Serverless Flink云服务,基于 Apache Flink 构建的企业级、高性能实时大数据处理系统。提供全托管版 Flink 集群和引擎,提高作业开发运维效率。