重複排除に使用されるウィンドウ ポリシー以外のウィンドウ ポリシーを指定せずに、重複排除されたイベントのストリームを生成しようとしています。クエリで句を使用するoutput first every
と、目的の効果があるように見えますが、それらのクエリがストリームに直接挿入されている場合は効果がありません。
以下の例では、4 時間のウィンドウ内で各車の最初のクラクションのみを検出しようとしているとします。
(define-event-type! "CarEvent"
{:license_plate java.lang.String})
(define-event-type! "HonkEvent"
{:volume java.lang.Integer}
:supertypes #{"CarEvent"})
(define-variant! "HonkEventDeduplicated" "HonkEvent")
(define-statement! "context-IndividualCarContext"
"create context IndividualCarContext partition by license_plate from CarEvent")
(define-statement! "populate-HonkEventDeduplicated"
"context IndividualCarContext
insert into HonkEventDeduplicated
select * from HonkEvent
group by license_plate
output first every 4 hours")
ただしselect * from HonkEventDeduplicated
、同じ車が 2 回続けてクラクションを鳴らした場合でも、クラクション イベントごとに発生します。