开发者社区 > 大数据与机器学习 > 实时计算 Flink > 正文

flink sql维表join必须等值连接吗

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

展开
收起
游客jcyle5yuynqye 2023-05-11 18:13:21 250 0
1 条回答
写回答
取消 提交回答
  • 存在即是合理

    Flink SQL中的维表join可以使用等值连接,也可以使用范围连接。在您的示例中,使用了左连接和范围连接的组合,因此必须使用范围连接。

    左连接是指将左侧表(这里是log vdl)的所有行与右侧表(这里是dim_ip_local_range)的所有行匹配。如果右侧表中没有匹配的行,则左侧表中的每一行都将被包含在结果集中。

    范围连接是指将左侧表中某个时间范围内的行与右侧表中某个时间范围内的行匹配。在您的示例中,使用了系统时间作为时间参考点,因此使用了范围连接。

    总之,Flink SQL中的维表join可以使用多种连接方式,具体取决于您的需求和数据结构。

    2023-05-11 19:35:06
    赞同 展开评论 打赏

实时计算Flink版是阿里云提供的全托管Serverless Flink云服务,基于 Apache Flink 构建的企业级、高性能实时大数据处理系统。提供全托管版 Flink 集群和引擎,提高作业开发运维效率。

相关产品

  • 实时计算 Flink版
  • 热门讨论

    热门文章

    相关电子书

    更多
    Flink CDC Meetup PPT - 龚中强 立即下载
    Flink CDC Meetup PPT - 王赫 立即下载
    Flink CDC Meetup PPT - 覃立辉 立即下载