现有 SQL 语句如下:
create table source1(
id varchar PRIMARY KEY,
a varchar,
proctime AS PROCTIME()
) with (
'connector' = 'kafka'
...
);
create table source2(
id varchar PRIMARY KEY,
a varchar,
proctime AS PROCTIME()
) with (
'connector' = 'kafka'
...
);
select
case
when s1.id is not null then s1.id
else s2.id
end as ids,
s1.a, s2.b
from source1 as s1 full outer join source2 as s2 on s1.id = s2.id where
s1.proctime between s2.proctime - INTERVAL '5' SECOND and s2.proctime +
INTERVAL '5' SECOND;
最后的 join 语句预期是 如果两个source的消息<id, a>, <id, b>先后到达时间超过 10 秒,则输出<id, a>, <id, b>
两条消息。
目前的观察结果是,如果两条消息<id, a>, <id, b>先后到达时间超过10 秒,输出为:<id, a>, <id, a, b>
为何超过 10 秒后,仍然会输出 <id, a, b> ?