问题描述
未得到预期的行为,我的flink应用程序遇到了实时事件,而触发条件则取决于两个事件ABC和XYZ。当两个事件都到达时,则触发通知。
应用程序正在使用StreamTableEnviornment
这是我正在使用的SQL查询
SELECT *
from EventTable
where eventName in ('ABC','XYZ')
and 1 IN (select 1 from EventTable where name='XYZ')
and 1 IN (select 1 from EventTable where name='ABC')
用例:1
ABC事件到来->一切都没有发生(按预期并正在等待XYZ事件)
XYZ事件到->条件匹配和SQL查询给出两个事件记录(ABC和XYZ),并触发通知(如预期)
再次,如果我发送“ ABC”事件,则SQL查询会给出结果ABC事件和已触发的通知。
我期望查询不会给出结果,因为只有一个事件ABC到达并且将等待事件XYZ。你能帮我这个忙吗?我是否缺少某些东西以获得预期的结果?
解决方法
将第二个ABC添加到动态表时,第一个XYZ已经存在,因此满足条件。在输入表中添加第三行会导致在输出表中追加新一行。
请参阅文档中的Dynamic Tables,以获取有关基础模型的基本信息。SQL