是否可以保证流中所有展开的行都会立即更新为 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}
...........
...........
我的目标是创建一个包含 id
、k1
、k2
列的 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.
如果我有一个流 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}]
.......
.......
我正在使用
创建另一个流s2create 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}
...........
...........
我的目标是创建一个包含 id
、k1
、k2
列的 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.