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

请问这种flinksql多流join,left右边任意一张表数据到后,是否都会更新test中对应的数

insert into test
select
en.contentId,
fa.name,
fa.inpoint,
cs.out
from kafka_ods_source1 cs
left join kafka_ods_source2 fa on fa.cid=cs.cid and fa.In=cs.in and fa.Out=cs.out
left join kafka_ods_source3 en on en.cid=cs.cid

请问这种flinksql多流join,left右边任意一张表数据到后,是否都会更新test中对应的数据呢?目前发现kafka_ods_source3表数据到后,test中对应字段好像没自动更新

展开
收起
真的很搞笑 2023-11-22 09:10:14 120 0
4 条回答
写回答
取消 提交回答
  • 面对过去,不要迷离;面对未来,不必彷徨;活在今天,你只要把自己完全展示给别人看。

    您好,Flink SQL多流Join操作后端会生成一组内部表和外部表,所有的外部表都可以影响结果集的更新。当某张表有新数据到来时,该表的列会被更新到结果集中。在这段代码中,kafka_ods_source3表的数据到来时,它会影响test表中对应列的更新。不过具体的表现方式取决于Join的具体类型,比如内连接、左连接或者右连接等。
    内连接会保留两表之间的交集,即cs.cid和fa.cid以及cs.out和fa.out之间匹配的所有行。而左连接则会保留左边所有行,并且合并右边表中的数据。至于右连接,它会保留右边所有行,并且合并左边表中的数据。
    在您的情况下,请确保使用正确的Join类型,以获得所需的结果。如果您的外部表中没有更新,则可能是Join类型的缘故。您也可以尝试更改Join的类型或者重新检查外部表中的数据,以便于准确获取结果。

    2023-11-29 13:52:15
    赞同 展开评论 打赏
  • 这种Flink SQL多流join,left右边任意一张表数据到后,会更新test中对应的数据。但是,如果kafka_ods_source3表的数据没有更新,可能是因为在执行join操作时,条件设置不正确或者数据没有发生变化。请检查条件设置和数据更新情况,确保数据能够正确同步到test表中。

    2023-11-29 12:01:27
    赞同 展开评论 打赏
  • 多流join都会触发计算,此回答整理自钉群“Flink CDC 社区”

    2023-11-22 11:59:40
    赞同 展开评论 打赏
  • 根据 Flink SQL 规范,在进行 Left Join 时,左边表中匹配不到的数据将不会参与合并。只有当右表中匹配的数据到达后才会更新左边表中的对应数据。如果您的 kafka_ods_source3 表中的数据没有加入到 left join 结果集中,则可能是由于下列原因:

    • 数据格式错误:请检查是否有重复的 cid 值,以及源数据是否存在缺失或错误的情况。
    • 错误的 In/Out 字段名称:请确保您指定正确的 In/Out 字段名称。
    • 匹配条件错误:请确认左表和右表的 cid 值匹配是否正确。
    2023-11-22 11:14:37
    赞同 展开评论 打赏

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

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载