如何根据批处理表的增量窗口编写用于计算的SQL

时间:2018-03-26 02:32:12

标签: apache-flink flink-sql

我的要求是根据批处理表的增量大小窗口进行计算。

例如,第一个窗口有1行,第二个窗口有2行(包括第1个窗口的1行和新行),第3个窗口有3行(包括第2个窗口的2行和1个行)新行),等等。

例如:

源表:

datetime | productId |价格|

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操作可以做到但是还没有在flink中实现,所以我需要一种替代方法。

顺便说一句:

我尝试使用1天的TUMBLE窗口并将之前的值存储在用户定义的聚合对象中但失败了,因为聚合对象将被所有产品重用,而不是每个产品的单个对象

1 个答案:

答案 0 :(得分:1)

Flink的SQL尚不支持批处理表上的OVER子句。您可以跟踪此工作的状态here

但是,您是否考虑在流表上实现此行为?流表也可以从静态文件(如CSV文件)中读取,并且还支持许多操作。这取决于您要在查询中使用的其他操作。