【问题标题】:Generating a deduplicated event stream without a window生成没有窗口的去重事件流
【发布时间】:2012-09-07 00:22:05
【问题描述】:

我正在尝试生成一个重复数据删除事件流,但没有指定任何超出用于重复数据删除的窗口策略。对我的查询使用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 会在每次鸣喇叭事件时触发,即使同一辆车连续鸣喇叭两次。

【问题讨论】:

    标签: esper


    【解决方案1】:

    可以使用std:firstunique 视图来代替output first every 子句过滤:

    (define-statement!
      "populate-HonkEventDeduplicated"
      "insert into HonkEventDeduplicated
      select * from HonkEvent.win:time(4 hours).std:firstunique(license_plate)")
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-22
      • 2021-07-21
      • 2012-06-30
      • 2014-07-25
      • 2022-12-17
      • 1970-01-01
      相关资源
      最近更新 更多