本文旨在探讨flink table的group windows。
窗口操作可以为Window设置别名,并在groupBy及select中引用该别名。窗口具有start、end和rowtime属性,其中start和rowtime是包含的,而end是排外的。
Tumbling Windows:
Tumbling Windows按照固定窗口大小移动,因此窗口之间不重叠;over方法用于指定窗口大小;窗口大小可以基于事件时间、处理时间或行数来定义。
Sliding Windows:
当滑动间隔小于窗口大小时,Sliding Windows会导致窗口重叠,因此行可能属于多个窗口;over方法用于指定窗口大小,窗口大小可以基于事件时间、处理时间或行数来定义;every方法用于指定滑动间隔。
Session Windows:
Session Windows没有固定的窗口大小,它基于非活动时间的长度来关闭窗口,withGap方法用于指定两个窗口之间的间隔,作为时间间隔;Session Windows只能使用事件时间或处理时间。
Table类提供了window操作,接收Window参数,并创建WindowedTable对象。
WindowedTable类仅提供groupBy操作,groupBy可以接收String类型的参数,也可以接收Expression类型的参数;String类型的参数会被转换为Expression类型,最终调用的是Expression类型的groupBy方法;如果groupBy操作除了窗口之外没有其他属性,则其并行度为1,只会在单个任务上执行;groupBy方法创建WindowGroupedTable对象。
WindowGroupedTable类仅提供select操作,select可以接收String类型的参数,也可以接收Expression类型的参数;String类型的参数会被转换为Expression类型,最终调用的是Expression类型的select方法;select方法创建新的Table对象,其Project操作的子节点为WindowAggregate。
总结:窗口操作可以为Window设置别名,并在groupBy及select中引用该别名。窗口具有start、end和rowtime属性,其中start和rowtime是包含的,而end是排外的。Tumbling Windows按固定窗口大小移动,不重叠;Sliding Windows在滑动间隔小于窗口大小的情况下会重叠;Session Windows基于非活动时间关闭窗口。Table类提供window操作,创建WindowedTable;WindowedTable提供groupBy操作,创建WindowGroupedTable;WindowGroupedTable提供select操作,创建新的Table,其Project操作的子节点为WindowAggregate。