Stream 如何用cep描述这个复杂的场景? 这是我的事件模式

Stream 如何用cep描述这个复杂的场景? 这是我的事件模式,stream,complex-event-processing,esper,siddhi,drools-fusion,Stream,Complex Event Processing,Esper,Siddhi,Drools Fusion,事件A(字段A字符串、字段B字符串、文件DC字符串) EventB(字段字符串,字段字符串) 我希望查询如下所示: 将事件分为组窗口,按字段A分组事件A,字段B,按字段E分组事件B 如果事件按以下顺序发生:EventA->EventA->EventA->EventA->EventB->EventB,且distinct(EventA.FieldC)>=3,且每个EventB.FieldE等于每个EventA.FieldB(联接部分),则生成一个相关事件 问题在于:EventA(3)的计数是针对


事件A(字段A字符串、字段B字符串、文件DC字符串)
EventB(字段字符串,字段字符串)

  • 我希望查询如下所示:
  • 将事件分为组窗口,按
    字段A分组事件A,字段B
    ,按
    字段E分组事件B
  • 如果事件按以下顺序发生:
    EventA->EventA->EventA->EventA->EventB->EventB
    ,且
    distinct(EventA.FieldC)>=3
    ,且每个
    EventB.FieldE
    等于每个
    EventA.FieldB
    (联接部分),则生成一个相关事件
  • 问题在于:EventA(3)的计数是针对组窗口的。例如:
    [“1”、“2”、“3”]、[“1”、“2”、“4”]、[“1”、“2”、“5”]
    可以触发
    “EventA->EventA->EventA”
    (一个组窗口中有3个事件),
    [“1”、“2”、“3”]、[“1”、“3”、“4”]、[“1”、“4”、“5”]
    不能(3个组窗口,每个窗口有1个事件)和2个事件B

    因此,完整的示例是:
    [“1”、“2”、“3”]、[“1”、“2”、“4”]、[“1”、“2”、“5”]、[“a”、“2”]、[“b”、“2”]

    我发现即使用naturl语言也很难描述这种情况,我不知道如何在CEP中描述这种情况

    我在esper中使用上下文来解决计数是针对组窗口而不是流(在siddhi中,分区)的问题。它适用于单个EventA或EventB,但如果EventA和EventB必须执行模式,则两个独立的上下文不能一起使用。我尝试了
    上下文嵌套
    类似:

    
    创建上下文PartAB
    上下文PartA由EventA中的FieldA和FieldB进行分区,
    EventB中按FieldE划分的上下文PartB分区
    

    这似乎不起作用


    感谢所有能帮助解决这个问题的人。

    首先想到的问题是“FieldA,FieldB”和“FieldE”有什么关系?例如,它是字符串附加,其中“FieldA | | FieldB==FieldE”或比较这些字段的操作是什么

    在Esper中,使用如下上下文:

    create context PartAB 
      partition by to_be_determined_A_B from EventA,
                   to_be_determined_E from EventB
    
    此非嵌套分区上下文确保事件位于同一分区中(嵌套上下文将创建所有可能的组合,而这不是您想要的)

    您可以通过在事件中插入或向事件中添加新字段来计算“待确定”。以下是插入到以下内容的示例:

    insert into EventAWithFieldCombined select FieldA||FieldB combinedAB, * from EventA
    
    。。。上下文可能是这样的

    create context PartAB 
      partition by combinedAB from EventAWithFieldCombined,
                   FieldE from EventB
    

    非常感谢您的回答。但是EventA和EventB之间的唯一关系是模式
    (A->A->A->B->B)中的
    每个B.FieldE等于每个A.FieldB
    (连接部分)。
    我认为这更像是一个按FieldA、FieldB和EventB groupwin按FieldE计数(操作)每个B.FieldE等于每个a.FieldB是模式的相关条件。(但groupwin不能用于模式)关键问题是,我在组窗口中设置了EventA、EventB事件,但我不能使用模式在它们之间进行关联。