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/
我想构建 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/