ksql - 根据过去 1 年(365 天)汇总数据

ksql - Aggregating data based on last 1 year ( 365 days)

我想构建 sql 查询以完成过去 1 年的汇总。在这种情况下,window 大小是最近 365 天。是否可以使用 ksql 来做到这一点?像下面的查询

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

我的问题是:当我们指定 'SIZE 30 seconds' 或 'SIZE 3600 seconds' 时,它会从流的开头还是从最新开始启动 window?

windows 的开始日期和时间基于 Unix 纪元。它与源主题上消息的时间戳无关。

Windows 超过一天将从 Unix 纪元开始并从那里递增。因为没有 YEAR 大小并且您使用的是 365 天,所以您会发现 window 从 12 月 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/