是否可以从 ksql 流创建 ksql table?

Is it possible to create ksql table from ksql stream?

我是 ksql 的新手。我只是在玩 read kafka topics to streams 并且效果很好。

此外,尝试从 kafka 主题创建 table 但失败了。意识到我需要在 kafka 主题中设置一个键,该键在 ksql table 中被视为主键。 所以我尝试从流创建 table,但也失败了。 Query/Script:

CREATE TABLE DETAILS_TABLE AS SELECT SEQ, Server1, ServerId, NumberUri, SERVERID2, SERVER2 FROM details_stream WINDOW TUMBLING (SIZE 1 MINUTES);
Invalid result type. Your SELECT query produces a STREAM. Please use CREATE STREAM AS SELECT statement instead.

有人可以解释一下吗?如果是,我哪里出错了?谢谢

正如 Matthias 所说,您需要指定一个(有效的)聚合查询。

所以这行得通:

CREATE TABLE DETAILS_TABLE AS \
SELECT SEQ, Server1, ServerId, NumberUri, SERVERID2, SERVER2, COUNT(*) AS TOTAL \
FROM details_stream WINDOW TUMBLING (SIZE 1 MINUTES) \
GROUP BY SEQ, Server1, ServerId, NumberUri, SERVERID2, SERVER2;

就像任何 SQL 方言一样,如果要进行聚合,则必须 GROUP BY all 字段,否则它没有语法感觉。