#apache-kafka #ksqldb
#apache-kafka #ksqldb
Вопрос:
Я хотел бы спросить, могу ли я установить ключевое поле при создании таблицы?
Я создал таблицу путем агрегирования, как показано ниже:
CREATE TABLE withdrawal_less_than_5min AS
SELECT executedate, status, count(*) as count
FROM TB3_WITHDRAW_RECORD_EXCLUDE_INTERNAL_USERS
GROUP BY executedate,status;
И когда я DESCRIBE EXTENDED withdrawal_less_than_5min
задаю ключевое поле таблицы, как показано ниже, которое, я полагаю, должно быть executedate и status.
Key field : KSQL_INTERNAL_COL_0| |KSQL_INTERNAL_COL_1
Однако, когда я пытаюсь объединить его с другой таблицей с той же агрегацией, она возвращает эту ошибку.
Source table (A) key column (KSQL_INTERNAL_COL_0| |KSQL_INTERNAL_COL_1)
is not the column used in the join criteria (EXECUTEDATE).
Как мне установить ключевое поле? Спасибо.
Ответ №1:
Вы можете создать ключ следующим образом —
CREATE TABLE withdrawal_less_than_5min with (key='EXECUTEDATE') AS
SELECT executedate, status, count(*) as count
FROM TB3_WITHDRAW_RECORD_EXCLUDE_INTERNAL_USERS
GROUP BY executedate,status partition by 'EXECUTEDATE';
Вы также можете следить за блогом Робина — https://www.confluent.io/stream-processing-cookbook/ksql-recipes/inspecting-changing-topic-keys.
По любым ошибкам или вопросам, связанным с Ksql, ищите Робина Моффета, он уже ответил на наши запросы, чтобы помочь 🙂
Комментарии:
1. Возвращается сообщение об ошибке
mismatched input 'partition' expecting ';'
2. Я нахожусь в той же лодке, что и OP, и CREATE TABLE не нравится предложение PARTITION BY.