首页 > 解决方案 > KSQL - 在 WINDOW TUMBLING 子句中更改时区

问题描述

这是我的 KSQL usingWINDOW TUMBLING子句:

SELECT 
    sale_date,
    region,
    SUM(total)
FROM orders
WINDOW TUMBLING (SIZE 24 HOURS)
GROUP BY sale_date, region;

一些结果:

2018-09-29|+|zskx_fz : Window{start=1538179200000 end=-} | 2018-09-29 | zskx_fz | 16119.8
2018-09-30|+|zskx_fz : Window{start=1538179200000 end=-} | 2018-09-30 | zskx_fz | 2031.6
2018-09-30|+|zskx_fz : Window{start=1538265600000 end=-} | 2018-09-30 | zskx_fz | 894.7

到日期时间的纪元毫秒是:

1538179200000 = 2018-09-29 08:00:00 (UTC+8)
1538265600000 = 2018-09-30 08:00:00 (UTC+8)

正如我们所看到的,我在 UTC+8。但无论时区如何,start日期时间不应2018-09-29 00:00:00早于 8 小时。那么它能够改变时区吗?

PS:我尝试了几个窗口大小,2018-09-30 11:33:00我完全失去了..

WINDOW TUMBLING (SIZE 1 minutes)    2018-09-30 11:32:00
WINDOW TUMBLING (SIZE 2 hours)      2018-09-30 10:00:00
WINDOW TUMBLING (SIZE 5 hours)      2018-09-30 07:00:00
WINDOW TUMBLING (SIZE 10 hours)     2018-09-30 02:00:00
WINDOW TUMBLING (SIZE 11 hours)     2018-09-30 07:00:00
WINDOW TUMBLING (SIZE 12 hours)     2018-09-30 08:00:00
WINDOW TUMBLING (SIZE 24 hours)     2018-09-30 08:00:00

标签: apache-kafkaconfluent-platformksqldb

解决方案


时间戳窗口始终是相对于 UTC/GMT 的纪元计算的。

我可以看到想要根据您的时区按天汇总的有效性。我在 KSQL github 项目上提出了它作为一个问题,并建议你在那里跟踪它。


推荐阅读