所以我正在使用Flink DataStream模拟流任务,我想在每个窗口上执行SQL查询。
假设这是查询
SELECT name, age, sum(days), avg(salary)
FROM employees
WHERE age > 25
GROUP BY name, age
ORDER BY name, age
我很难把它翻译成Flink。根据我的理解,要计算平均值,我需要使用.apply()
和WindowFunction
手动执行此操作。但是我如何计算总和呢?也可以手动在同一个WindowFunction中使用?
我也想知道是否有可能在整个窗口上做订单?
以下是我到目前为止所想到的伪代码。任何帮助,将不胜感激!谢谢!
employeesStream
.filter(new FilterFunction() ....) \\ where clause
.keyby(nameIndex, ageIndex) \\ group by??
.timeWindow(Time.seconds(10), Time.seconds(1))
.apply(new WindowFunction() ....) \\ calculate average (and sum?)
// order by??
我检查了Table API,但似乎流式传输不支持很多操作,例如orderBy。