Как сохранить ТОЛЬКО последнее окно в 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
пункт, вам должно быть хорошо идти!