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中对应字段好像没自动更新
您好,Flink SQL多流Join操作后端会生成一组内部表和外部表,所有的外部表都可以影响结果集的更新。当某张表有新数据到来时,该表的列会被更新到结果集中。在这段代码中,kafka_ods_source3表的数据到来时,它会影响test表中对应列的更新。不过具体的表现方式取决于Join的具体类型,比如内连接、左连接或者右连接等。
内连接会保留两表之间的交集,即cs.cid和fa.cid以及cs.out和fa.out之间匹配的所有行。而左连接则会保留左边所有行,并且合并右边表中的数据。至于右连接,它会保留右边所有行,并且合并左边表中的数据。
在您的情况下,请确保使用正确的Join类型,以获得所需的结果。如果您的外部表中没有更新,则可能是Join类型的缘故。您也可以尝试更改Join的类型或者重新检查外部表中的数据,以便于准确获取结果。
这种Flink SQL多流join,left右边任意一张表数据到后,会更新test中对应的数据。但是,如果kafka_ods_source3表的数据没有更新,可能是因为在执行join操作时,条件设置不正确或者数据没有发生变化。请检查条件设置和数据更新情况,确保数据能够正确同步到test表中。
根据 Flink SQL 规范,在进行 Left Join 时,左边表中匹配不到的数据将不会参与合并。只有当右表中匹配的数据到达后才会更新左边表中的对应数据。如果您的 kafka_ods_source3 表中的数据没有加入到 left join 结果集中,则可能是由于下列原因:
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
实时计算Flink版是阿里云提供的全托管Serverless Flink云服务,基于 Apache Flink 构建的企业级、高性能实时大数据处理系统。提供全托管版 Flink 集群和引擎,提高作业开发运维效率。