一:为什么出现累计窗口(CUMULATE)
在flink中有滑动窗口,滚动窗口,会话窗口。前俩者是公司常用的,他们统计的是某个时间段内的数据。但是我们有些时候,有需求,求每一天,从当天0:00开始,进行计算,例如:双十一,统计当天的销售额度。遇到这种需求,前俩者解决此类问题会比较麻烦。所以在新版本的flink当中,开源了CUMULATE窗口。
二:CUMULATE是什么窗口。
可以将CUMULATE窗口看作是升级版本的滚动窗口。将某一时间段内滚动窗口求出的值进行累加。
三:怎么使用?
SELECT
cast(PROCTIME()as timestamp_ltz)as window_end_time,
manufacturer_name,
event_id,casewhen state isnullthen-1else state end,
cast(sum(agg)as string )as agg
FROMTABLE(CUMULATE(TABLE dm_cumulate
, DESCRIPTOR(ts1),INTERVAL'5' MINUTES
,INTERVAL'1'DAY(9)))GROUPBY
window_end
,window_start
,manufacturer_name
,event_id
,casewhen state isnullthen-1else state end
1 . 注意点一
CUMULATE 共有四个参数。
第一个 table 表名。
第二个 时间字段。
第三个 累计的步长。
第四个 累计的时间。
注:第四个参数,如果写1 day,那么就是从今天的0:00到今晚24:00 进行统计,明天开始,又会从新的0:00开始统计。
如果写2,或者更多,意味着从前俩天开始一直统计。在0:00的时候,会继续进行累加。
版权归原作者 宇智波云 所有, 如有侵权,请联系我们删除。