В KSQL Stream <- Таблица левого соединения, частичные события не объединены должным образом - PullRequest
0 голосов
/ 17 октября 2019

Я пытаюсь обогатить некоторые данные о событиях с помощью KSQL (5.2.3) и Kafka (2.12-2.3.0).

Left Соединение потока с таблицей.

НоЧастичный результат объединения не содержит обогащенных данных, как я ожидал.

Я выяснил проблему.

Проблема в том, что соединение слева обрабатывается до того, как таблица загрузит связанное предыдущее событие.

Чтобы прояснить проблему, я вставил данные упрощенного запроса и события KSQL.

События:

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?

Спасибо.

...