如何根据批处理 table 的增量 window 编写计算 SQL
How to write a SQL for a calculation based on incremental window of batch table
我的要求是根据批次 table 的增量大小 window 进行计算。
例如第一个window有1行,第二个window有2行(包括第一个window的1行和新的一行),然后是3行在第 3 个 window(包括第 2 个 window 的 2 行和一个新行),依此类推。
例如:
来源table:
日期时间 |产品编号 |价格 |
3-1 | p1 | 10 |
3-2 | p1 | 20 |
3-3 | p1 | 30 |
3-4 | p1 | 40 |
结果table:
日期时间 |产品编号 |平均值|
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 window 并将先前的值存储在用户定义的聚合对象中,但失败了,因为聚合对象将被所有产品而不是单个产品重复使用每个产品的对象
Flink SQL 尚不支持批处理 table 上的 OVER 子句。您可以跟踪这项工作的状态 here.
但是,您是否考虑过在流媒体 table 上实施此行为? Streaming tables 也可以从 CSV 文件等静态文件中读取,并且那里也支持许多操作。不过,这取决于您要在查询中使用的其他操作。
我的要求是根据批次 table 的增量大小 window 进行计算。
例如第一个window有1行,第二个window有2行(包括第一个window的1行和新的一行),然后是3行在第 3 个 window(包括第 2 个 window 的 2 行和一个新行),依此类推。
例如:
来源table:
日期时间 |产品编号 |价格 |
3-1 | p1 | 10 |
3-2 | p1 | 20 |
3-3 | p1 | 30 |
3-4 | p1 | 40 |
结果table:
日期时间 |产品编号 |平均值|
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 window 并将先前的值存储在用户定义的聚合对象中,但失败了,因为聚合对象将被所有产品而不是单个产品重复使用每个产品的对象
Flink SQL 尚不支持批处理 table 上的 OVER 子句。您可以跟踪这项工作的状态 here.
但是,您是否考虑过在流媒体 table 上实施此行为? Streaming tables 也可以从 CSV 文件等静态文件中读取,并且那里也支持许多操作。不过,这取决于您要在查询中使用的其他操作。