是否可以保证流中所有展开的行都会立即更新为 table?

Is there a guarantee that all exploded rows in a stream will get updated into table at once?

如果我有一个流 s1,其中 messages 列类型为 Array<Map<VARCHAR, VARCHAR>>,如下所示

ROWTIME    key   messages
-------------------------------
t1          1     [{id: 1, k1: v1, k2: v2}, {id: 2, k1: v3, k2: v4}]
t2          2     [{id: 1, k1: v5, k2: v6}, {id: 2, k1: v7, k2: v8}]
.......
.......

我正在使用

创建另一个流s2
create stream s2 as select explode(message) from s1 emit changes;
ROWTIME           message
-----------------------------
t1              {id: 1, k1: v1, k2: v2}
t1              {id: 2, k1: v3, k2: v4}
t2              {id: 1, k1: v5, k2: v6}
t2              {id: 2, k1: v7, k2: v8}
...........
...........

我的目标是创建一个包含 idk1k2 列的 table,我将以数组格式发布在 s1 以确保它们都在 table 中一起更新。

create stream s3 as select message['id'] as id, message['k1'] as k1, message['k2'] as k2 from s2 emit changes;
create table table1 as select id, latest_by_offset(k1), latest_by_offset(k2) from s3 group by id emit changes;

以上,是否可以保证从单个数组中展开的所有消息(任意计数,当前计数为 2)将立即应用于 table 1?换句话说,是否可以保证以下状态 永远不会 可能,只有来自 t2 的 id 1 时间戳应用于 table 1 但 id 2 来自 t2 的时间戳未应用。

ROWTIME       id        k1          k2
----------------------------------------
t1             2        v3          v4
t2             1        v5          v6

ksqlDB 目前不保证这一点。尽管有可能增强 ksqlDB 以支持这一点。可能值得提出 feature request.