流:
describe ammas;
Field | Type
-------------------------------------
ROWTIME | BIGINT (system)
ROWKEY | VARCHAR(STRING) (system)
ID | INTEGER
-------------------------------------
对于运行时统计信息和查询详细信息,请运行:DESCRIBE EXTENDED <Stream,Table>;
表01:
ksql> show tables;
Table Name | Kafka Topic | Format | Windowed
-------------------------------------------------
ANNAT | anna | DELIMITED | false
APPAT | appa | DELIMITED | false
-------------------------------------------------
尝试加入流与表-01的比较工作如预期。创建流finalstream,从ammas
中选择a.id
,左加入a.id = b.id
上的appat b
,其中b.id
是null
。
但当我尝试基于以下查询将多个表与流连接时:
ksql> SELECT * FROM ammas cd LEFT JOIN appat ab ON ab.id = cd.id LEFT JOIN annat aa ON aa.id =cd.id;
ServerError:io.confluent.ksql.parser.exception.ParseFailedException
Caused by: null
出了什么问题?谢谢
KSQL目前(v5.3(只支持每条语句一个联接操作。如果你想执行多个联接;菊花链";在多个语句中,例如
CREATE STREAM out1 AS
SELECT * FROM ammas cd
LEFT JOIN appat ab
ON ab.id = cd.id
CREATE STREAM out_final AS
SELECT * FROM out1 o
LEFT JOIN annat aa ON o.id =cd.id;
2020年11月更新:ksqlDB v0.9中添加了支持多路联接的ksqlDB。Confluent Platform 6.0包含ksqlDB 0.10.2,因此也包含此功能。有关详细信息,请参阅发布博客和文档
在实际版本中支持具有流和表的多个联接(目前我正在编写Confluent Platform 7.x(
请参阅此文档https://developer.confluent.io/tutorials/multi-joins/ksql.html
示例中有1个流和2个表目前我不知道它是否支持3个或更多的表
重要的是,与右侧的连接必须使用其主键