Ksql: Left Join Отображает столбцы из потока, но не из таблиц. - PullRequest
0 голосов
/ 25 апреля 2018

У меня есть один steam и таблица в KSQL, как указано ниже:

Имя потока: DEAL_STREAM

Имя таблицы: EXPENSE_TABLE

Когда я запускаю нижеуказанные запросы, отображаетсяотображаются только столбцы из потока, но столбцы таблицы не отображаются.

Это ожидаемый результат.Если нет, я делаю что-то не так?

SELECT TD.EXPENSE_CODE, TD.BRANCH_CODE, TE.EXPENSE_DESC
FROM DEAL_STREAM TD
LEFT JOIN EXPENSE_TABLE TE ON TD.EXPENSE_CODE = TE.EXPENSE_CODE
WHERE TD.EXPENSE_CODE LIKE '%NL%' AND TD.BRANCH_CODE LIKE '%AM%';

Вывод запроса такой, как показано ниже.

NL8232@#0          | AM   | null
NL0232@#0          | AM   | null
NL6232@!0          | AM   | null
NL5232^%0          | AM   | null

1 Ответ

0 голосов
/ 25 апреля 2018

Когда я запускаю следующие запросы, он отображает только столбцы из потока, но столбцы таблицы не отображаются.

В объединении потоковой таблицы (слева) выходные записи будутсодержать null столбцы (для столбцов на стороне таблицы), если во время соединения / поиска в таблице нет соответствующих записей.

Это ожидаемый результат.Если нет, я делаю что-то не так?

Возможно ли, например, что вы записали (1) входные данные в поток перед тем, как записать (2) входные данные в таблицу?Если это так, то запрос объединения потоковой таблицы попытался бы выполнить поиск в таблице во время (1), когда в таблице еще не было таких данных поиска (поскольку это произошло позже во время (2)).Поскольку таких табличных данных не было, объединение записало выходные записи, в которых столбцы на стороне таблицы были null.

Примечание. Это объединение потоковой таблицы в KSQL (и, как следствие, в API потоков Apache Kafka Streams)., на котором построен KSQL) является в значительной степени нормой для объединений в потоковом мире.Здесь только сторона потока соединения потоковой таблицы будет инициировать выходы нисходящего соединения, и если нет совпадения для записи потока на стороне таблицы во время соединения новой входной записи, то на стороне таблицыстолбцы будут null.Так как это, однако, является частой причиной путаницы среди пользователей, в настоящее время мы работаем над добавлением триггера выходных данных на стороне таблицы в API потоков Apache Kafka и KSQL.Когда такая функция будет доступна, ваша проблема, описанная выше, больше не будет возникать.

...