我想发出一个时间窗口的最后一条记录。这可以在常规的Flink中使用maxBy轻松完成,但我无法通过SQL API使其工作。我想要的是:
SELECT LAST(attribute) FROM [table]
GROUP BY key, TUMBLE(ts, INTERVAL '1' DAY)它的行为类似于
ds.keyBy(key)
.window(TumblingEventTimeWindows.of(Time.days(1)))
.maxBy(x -> x.getTs())有没有办法在SQL API中实现这一点?
发布于 2020-05-27 04:31:06
我认为在Flink中还没有内置的函数,但是你可以为它实现一个用户定义的聚合函数。
您需要稍微调整一下查询,并在聚合函数中传递时间戳字段,因为SQL不假定GROUP BY组中的行的顺序:
SELECT last_by(attribute, ts) FROM [table]
GROUP BY key, TUMBLE(ts, INTERVAL '1' DAY)有关how to implement和register (一个用户定义的聚合函数)的详细信息,请参阅文档。
https://stackoverflow.com/questions/62006841
复制相似问题