k sql - агрегирование данных за последний год (365 дней) - PullRequest
0 голосов
/ 07 января 2020

Я хотел бы создать запрос sql, чтобы выполнить агрегацию за последние 1 год. В этом случае размер окна составляет последние 365 дней. Возможно ли это сделать с помощью k sql? Как и в следующем запросе

  SELECT regionid, regioncity, COUNT(*) FROM pageviews
  WINDOW HOPPING (SIZE 30 SECONDS, ADVANCE BY 10 SECONDS)
  GROUP BY regionid, regioncity ;

Мой вопрос таков: когда мы указываем «РАЗМЕР 30 секунд» или «РАЗМЕР 3600 секунд», окно запускается с начала потока или с самого последнего?

1 Ответ

1 голос
/ 09 января 2020

Дата и время начала windows основаны на эпохе Unix. Он не имеет отношения к отметке времени сообщений на источнике topi c.

Windows больше суток начнется в эпоху Unix и будет увеличиваться оттуда. Поскольку размер YEAR отсутствует, и вы используете 365 дней, вы обнаружите, что окно открывается 20 декабря (из-за високосных годов)

SELECT TIMESTAMPTOSTRING(WINDOWSTART(),'yyyy-MM-dd HH:mm:ss','Europe/London') AS WINDOW_START_TS, 
             CUSTOMER, 
             SUM(COST) 
        FROM SOURCE_DATA 
                WINDOW TUMBLING (SIZE 365 DAYS) 
        GROUP BY CUSTOMER 
        EMIT CHANGES ;    

+-----------------------+----------+------------+
|WINDOW_START_TS        |CUSTOMER  |KSQL_COL_2  |
+-----------------------+----------+------------+
|2018-12-20 00:00:00    |A         |4           |
|2019-12-20 00:00:00    |A         |2           |

Я написал это здесь: https://rmoff.net/2020/01/09/exploring-ksqldb-window-start-time/

...