Присоединяйтесь к потокам ksql, используя вычисленные выражения - PullRequest
0 голосов
/ 30 января 2019

У меня есть таблица с именем SUBSCRIPTIONS со следующими столбцами:

KEY varchar,
APPLICATION_ID varchar
SUBSCRIPTION_ID varchar

Ключом этой таблицы является столбец KEY, который состоит из APPLICATION_ID и SUBSCRIPTION_ID в форме, как в <APPLICATION_ID>_<SUBSCRIPTION_ID>.

Поток с именем NOTIFICATION_EVENTS_STREAM содержит следующие столбцы:

APPLICATION_ID varchar
SUBSCRIPTION_ID varchar
NOTIFICATION_ID varchar
LOCATION_COUNTRY varchar

Мне нужно соединить NOTIFICATION_EVENTS_STREAM с таблицей SUBSCRIPTIONS, чтобы извлечь столбец LOCATION_COUNTRY, япробуя следующий запрос, но он, похоже, не работает:

select e.application_id, e.notification_id, s.location_country, count(*) from NOTIFICATION_EVENTS_STREAM_RICH e LEFT JOIN SUBSCRIPTIONS s ON s.KEY = (e.APPLICATION_ID +'_'+ e.SUBSCRIPTION_ID) GROUP BY e.application_id, e.notification_id, s.location_country;

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

 Line: 1, Col: 148 : Invalid join criteria (S.KEY = ((E.APPLICATION_ID + '_') + E.SUBSCRIPTION_ID)). Could not find a join criteria operand for E.

Временно я создал следующий поток, чтобы получить составленныйстолбец, но в этом нет необходимости:

CREATE STREAM NOTIFICATION_EVENTS_STREAM_RICH WITH (PARTITIONS=1) AS SELECT APPLICATION_ID, NOTIFICATION_ID, SUBSCRIPTION_ID, KIND, APPLICATION_ID +'_'+NOTIFICATION_ID AS NOTIFICATION_KEY, APPLICATION_ID+'_'+SUBSCRIPTION_ID AS SUBSCRIPTION_KEY FROM NOTIFICATION_EVENTS_STREAM;

Есть ли способ использовать вычисляемые выражения в соединениях таблиц?

1 Ответ

0 голосов
/ 30 января 2019

KSQL в настоящее время не поддерживает это.Вы могли бы прокомментировать / upvote эту проблему , если хотите.

Вам необходимо вручную создать промежуточный поток, например, здесь: https://www.confluent.io/stream-processing-cookbook/ksql-recipes/creating-composite-key

Отказ от ответственности:Я работаю на Confluent.

...