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

sri*_*nth 5 apache-kafka ksqldb

我是 ksql 的新手。我只是将 kafka 主题读到流中,效果很好。

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

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.
Run Code Online (Sandbox Code Playgroud)

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

Rob*_*att 8

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

所以这会起作用:

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;
Run Code Online (Sandbox Code Playgroud)

就像任何 SQL 方言一样,如果您要进行聚合,则必须包含GROUP BY 所有字段,否则在语法上没有任何意义。