Apache flink 如何为基于批处理表增量窗口的计算编写SQL
我的要求是基于批处理表的增量大小窗口进行计算 例如,第一个窗口有1行,第二个窗口有2行(包括第一个窗口中的1行和一个新行),然后第三个窗口中有3行(包括第二个窗口中的2行和一个新行),依此类推 例如: 源表: 日期时间|产品ID |价格| 3-1 | p1 | 10| 3-2 | p1 | 20| 3-3 | p1 | 30| 3-4 | p1 | 40| 结果表: datetime | productId |平均值| 3-1 | p1 | 10/1| 3-2 | p1 |(10+20)/2| 3-3 | p1 |(10+20+30)/3| 3-4 | p1 |(10+20+30+40)/4| 我正试图找到一种用Sql实现这个需求的方法,在我看来,OVER action可以做到这一点,但尚未在flink中实现,所以我需要一种替代方法 顺便说一句:Apache flink 如何为基于批处理表增量窗口的计算编写SQL,apache-flink,flink-sql,Apache Flink,Flink Sql,我的要求是基于批处理表的增量大小窗口进行计算 例如,第一个窗口有1行,第二个窗口有2行(包括第一个窗口中的1行和一个新行),然后第三个窗口中有3行(包括第二个窗口中的2行和一个新行),依此类推 例如: 源表: 日期时间|产品ID |价格| 3-1 | p1 | 10| 3-2 | p1 | 20| 3-3 | p1 | 30| 3-4 | p1 | 40| 结果表: datetime | productId |平均值| 3-1 | p1 | 10/1| 3-2 | p1 |(10+20)/2|
我尝试使用1天的翻滚窗口,并将以前的值存储在用户定义的聚合对象中,但失败了,因为聚合对象将被所有产品重用,而不是每个产品的单个对象Flink的SQL尚不支持批处理表上的OVER子句。您可以跟踪此工作的状态
<>但是,您是否考虑过在流表上实现此行为呢?流表还可以从静态文件(如CSV文件)中读取数据,并且还支持许多操作。不过,这取决于要在查询中使用的其他操作 你为什么说
OVER
尚未实现?据我所知是这样的。我认为这是本例中的go-to功能。我在批处理窗口中提到了。谢谢,我将尝试查看流媒体是否具有我的应用程序的所有功能。看起来不可行,我必须在两个表上进行连接是否还有其他解决方法,如使用用户定义的函数进行播放?连接将在1.5中用于流式处理,但性能可能不如批处理。您可以尝试使用聚合功能(是否按产品id分组?)。否则,我认为您现在必须使用DataSet API。是的,我按productId分组,并尝试将以前的计算结果存储在聚合函数中,但它不起作用,因为累加对象被重用,而且我看到当并行度大于1时,窗口不是按时间顺序计算的