Как заставить ksql печатать только последние записи

Я выполняю следующий запрос на ksql. но я хочу только последние 20 записей.

SELECT MAX(ROWTIME),TIMESTAMPTOSTRING(ROWTIME, 'yyyy-MM-dd HH:mm:ss'),SERIAL,COUNT FROM MY_STREAM WHERE TIMESTAMPTOSTRING(ROWTIME, 'yyyy-MM-dd HH:mm:ss') >= DATE AND TIMESTAMPTOSTRING(ROWTIME, 'yyyy-MM-dd HH:mm:ss') <= DATE2 GROUP BY SERIAL,COUNT LIMIT 20;

1 ответ

Вы не можете сделать это в KSQL в настоящее время. Поскольку KSQL имеет дело с неограниченными данными, "последние" записи не имеют особого смысла, потому что данные (потенциально) всегда поступают.

В зависимости от того, что вы пытаетесь сделать, вы можете использовать ROWTIME Предикат для фильтрации данных на основе временного диапазона.

Возможно, вам придется использовать Kafka Streams вместо этого для доступа к данным в шаблоне, который вы описываете.

Вы можете также проверить наличие существующей проблемы, чтобы высказать свое мнение здесь: https://github.com/confluentinc/ksql/issues/ и, если ее нет, создайте одну https://github.com/confluentinc/ksql/issues/new

Другие вопросы по тегам