1

私は単純なタスクを解決しようとしています: 1. 3 つのイベントA、B、Cの発生を、最後の 10 秒間に発生した場合に関連付けたいと考えています。

したがって、Siddhi はクエリで 2 つの結合しかサポートしていないため、解決できないと思います。ドキュメントには、複数のクエリを使用して、このように結合するという提案があります

from A#window.time(10 sec) as a
join B#window.time(10 sec) as b on a.id == b.id
select a.id
insert into tempA

from tempA#window.time(10 sec) as a
join C#window.time(10 sec) as c on c.id == a.id
select *
insert into finalResult

ただし、ストリーム tempA のデータはより長く存続する可能性があり、時間ウィンドウが調整されないため、これは間違った結果をもたらします。

多分私は何かが欠けています。何かアドバイス?ありがとう

4

1 に答える 1

0

これを解決するには、次のアプローチを試すことができます。

  1. 着信イベントごとに、タイムスタンプを追加します。(cep で行う代わりに、クライアント自体でこれを行うこともできます。)
  2. タイム ウィンドウを外部タイムウィンドウに置き換える
  3. 以前に追加されたタイムスタンプ フィールドを、外部時間枠の時間の参照として使用する

この場合、タイムスタンプはグローバルであり、すべての外部時間ウィンドウはそれらに従って動作するため、これは適切に機能するはずです。

于 2014-10-10T07:38:42.403 に答える