KSQL объединяет потоки с условием для поля структуры

У меня есть два потока, каждый из которых определен в теме, в которой сообщения JSON публикуются примерно так:

{"payload": {"some_id": "123"}}

Соответствующие им потоки определяются следующим образом:

CREATE STREAM mystream
  (payload STRUCT <someid varchar>)
WITH (kafka_topic='mytopic', value_format='JSON')

Когда я пытаюсь СОЕДИНЯТЬ два потока вместе:

SELECT
  s.payload->some_id,
  o.payload->other_id
FROM mystream s
LEFT JOIN otherstream o ON s.payload->some_id = o.payload->other_id;

Я получаю следующую ошибку:

Invalid comparison expression 'S.PAYLOAD->SOME_ID' 
in join '(S.PAYLOAD->SOME_ID = O.PAYLOAD->OTHER_ID)'.
Joins must only contain a field comparison.

Невозможно объединить два потока на основе поля структуры? Нужно ли мне сначала публиковать поток, который выравнивает каждый исходный поток, прежде чем я смогу выполнить JOIN?


person Florentin Hennecker    schedule 13.03.2020    source источник


Ответы (1)


Верно, в настоящее время это невозможно. Не стесняйтесь проголосовать за отслеживание проблемы здесь: https://github.com/confluentinc/ksql/issues/4051

Как вы говорите, обходной путь - сначала сгладить его в другом потоке, а затем присоединиться к нему.

person Robin Moffatt    schedule 13.03.2020