我正在向用户提供 Flink SQL 接口,所以我不能真正使用 Table 或 Java/Scala 接口。一切都需要在 SQL 中指定。不过,我可以解析 SQL 文件中的注释,并添加指定的临时较低级别的 API 指令。
一个用户如何转换,比如:
SELECT b, AVG(a) "average" FROM source_data GROUP BY b
name: average_source_data_retracting
b STRING
average NUMERIC
- 将值撤回到将附加它们的表单。此附加表单可能具有以下架构:
name: average_source_data_appending
flag BOOLEAN <-- indicating an accumulate or retract message
b STRING
average NUMERIC
Aka 具有等同于 AppendStreamTableSink 的RetractStreamTableSink,但它不是一个接收器。
所有这一切都是为了能够使用 average_source_data_appending 创建一个Temporal 表(过滤撤回消息),但是这种表只接受 append-only 源表。
我考虑过使用 Windows(如在此处讨论),但我希望对临时表的更新是即时的。