Как сохранить ТОЛЬКО последнее окно в KSQL?

Я хочу отслеживать количество событий, произошедших за последние 30 дней. Итак, я использовал HOPPING WINDOW (размер 30 дней, продвинутый на 1 день) в KSQL, но он будет генерировать всего 30 окон для каждого элемента группы, как я могу написать скрипт ksql, чтобы сохранить только последнее окно? Спасибо!

CREATE TABLE FEATURE1_INDIVID_APPLY_REJECTED_COUNT_HOPPING_30_DAYS_TBL AS \
SELECT INDIVID_REGION, WindowStart() AS WINSTART, COUNT(*) AS APPLY_REJECTED_COUNT \
FROM FEATURE1_INDIVID_APPLY_REJECTED_HACKTIME_STM  \
     WINDOW HOPPING (SIZE 30 DAYS, ADVANCE BY 1 DAYS) \
WHERE INDIVID_REGION IS NOT NULL \
GROUP BY INDIVID_REGION;

0 ответов

Вам нужен HAVING фильтр, чтобы отфильтровать любые окна с историческим WINDOWEND, например

CREATE TABLE FEATURE1_INDIVID_APPLY_REJECTED_COUNT_HOPPING_30_DAYS_TBL AS \
SELECT INDIVID_REGION, WindowStart() AS WINSTART, COUNT(*) AS APPLY_REJECTED_COUNT \
FROM FEATURE1_INDIVID_APPLY_REJECTED_HACKTIME_STM  \
     WINDOW HOPPING (SIZE 30 DAYS, ADVANCE BY 1 DAYS) \
WHERE INDIVID_REGION IS NOT NULL \
GROUP BY INDIVID_REGION
HAVING WINDOWEND < UNIX_TIMESTAMP();

(Правильный синтаксис в ksqlDB версии 0.11)

К сожалению, такой HAVINGПункт требует, чтобы проблема Github 4397 была исправлена. Как только ksqlDB поддерживаетWINDOWEND в HAVING пункт, вам должно быть хорошо идти!

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