首页 > 解决方案 > 当 ON-SELECT 查询或其他子句没有结果时如何要求 esper 调用更新

问题描述

无论有没有结果,我都想要回调。

下面的代码旨在查找范围内的所有点。

ON QueryEvent e
SELECT w, e FROM DataRecordWindow w
WHERE w.value>e.begin AND w.value<e.end // between-and 
ORDER BY w.value;

如果没有结果,就没有回调调用UpdateListener,我希望esper调用带参数null的update。

我尝试了 InnerJoin,但结果是一样的:

SELECT w, e FROM DataRecordWindow w, QueryEvent e UNIDIRECTIONAL
WHERE w.value>e.begin AND w.value<e.end // between-and 
ORDER BY w.value;

我的第三次尝试是:

ON QueryEvent e
SELECT WINDOW(w), WINDOW(e) FROM DataRecordWindow w
WHERE w.value>e.begin AND w.value<e.end // between-and 
ORDER BY w.value;

好,如果有结果,返回两个数组,否则返回两个null。最后,至少,即使没有结果,它也会回调。

但我希望它返回我的起源e。

标签: esper

解决方案


使用外连接或单向外连接。

SELECT w, e 
FROM DataRecordWindow w
  full outer join 
  QueryEvent e UNIDIRECTIONAL
WHERE w.value>e.begin AND w.value<e.end // between-and 
ORDER BY w.value;

推荐阅读