【发布时间】:2019-10-17 06:41:59
【问题描述】:
我正在尝试使用 KSQL(5.2.3)&Kafka(2.12-2.3.0) 来丰富一些事件数据。
左连接流和表。
但是连接的部分结果并没有像我预期的那样包含丰富的数据。
我发现了问题。
问题是左连接是在表加载相关的先前事件之前处理的。
为了让问题更清楚,我粘贴了 Simplified KSQL Query and Event Data。
事件:
TimeStamp | EventType | EventData
1 | Create | ID:1, Name:"HELLO"
2 | Access | ID:1, TID:2
3 | Write | ID:1, TID:2
100 | Acesss | ID:1, TID:3
110 | Write | ID:1, TID:3
流&表:
CREATE STREAM SUBJECT_CREATE (TIMESTAMP='TimeStamp') AS SELECT TimeStamp, ID, Name FROM EVENT_STREAM WHERE EventType='Create' PARTITION BY ID;
CREATE TABLE SUBJECT_CREATE_TABLE (*) WITH (KAFKA_TOPIC='SUBJECT_CREATE', KEY='ID') ;
CREATE STREAM SUBJECT_ACCESS (TIMESTAMP='TimeStamp') AS SELECT TimeStamp, ID, TID FROM EVENT_STREAM WHERE EventType='Access' PARTITION BY ID;
CREATE STREAM SUBJECT_CR_AC_JOIN WITH(TIMESTAMP='TimeStamp') AS SELECT N.TimeStamp AS TimeStamp, N.ID AS ID, N.TID AS TID, P.Name AS Name FROM SUBJECT_ACCESS N LEFT JOIN SUBJECT_CREATE_TABLE P ON N.ID = P.ID PARTITION BY ID;
SUBJECT_CR_AC_JOIN 流的结果:
TimeStamp | ID | TID | Name
2 | 1 | 2 | null ==> Expected "HELLO"
100 | 1 | 3 | "HELLO"
第二个包含“名称”,但第一个没有。
是否可以让它们在 KSQL 中同步?
谢谢。
【问题讨论】:
标签: apache-kafka ksqldb