1

重複排除に使用されるウィンドウ ポリシー以外のウィンドウ ポリシーを指定せずに、重複排除されたイベントのストリームを生成しようとしています。クエリで句を使用する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 回続けてクラクションを鳴らした場合でも、クラクション イベントごとに発生します。

4

1 に答える 1

2

output first every句のフィルタリングを使用する代わりに、std:firstuniqueビューを使用してこれを行うことができます。

(define-statement!
  "populate-HonkEventDeduplicated"
  "insert into HonkEventDeduplicated
  select * from HonkEvent.win:time(4 hours).std:firstunique(license_plate)")
于 2012-09-07T14:40:22.140 に答える