我有一个名为SUBSCRIPTIONS
的表,其中包含以下列:
KEY varchar,
APPLICATION_ID varchar
SUBSCRIPTION_ID varchar
此表的KEY是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;
是否可以在表联接中使用计算表达式?
答案 0 :(得分:1)
KSQL当前不支持此功能。您可以根据需要评论/赞this issue。
您需要手动创建中间流,例如此处的示例:https://www.confluent.io/stream-processing-cookbook/ksql-recipes/creating-composite-key
免责声明:我为Confluent工作。