Как заставить 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