問題は非常に単純です。Esper エンジンを使用して、2 つの異なるストリームから存在しないレコードのみを抽出します。
ID は streamA に存在しますが、streamB には存在しません。
SQL では、次のようになります。
SELECT *
FROM tableA
WHERE NOT EXISTS (SELECT *
FROM tableB
WHERE tableA.Id = tableB.Id)
Esper スタイルで試してみましたが、うまくいきません:
SELECT *
FROM streamA.win:ext_timed(timestamp, 5 seconds) as stream_A
WHERE NOT EXSITS
(SELECT stream_B.Id
FROM streamB.win:ext_timed(timestamp, 5 seconds) as stream_B
WHERE stream_A.Id = stream_B.Id)
残念ながら、stream_A.Id が stream_B.id の前に挿入された場合、それはクエリ条件に応答し、クエリは機能しません。
Esperを使用して「IDはstreamAに存在するが、streamBには存在しない」を識別する方法に関する提案はありますか?