Session window defined on the gap of inactivity, I do not have that requirement.
Start the window only on the "*search even*t" that part I will take later. Let's say in the first phase I want to start the window on any event that appears for that user. For example : *Scenario -1* t1 ----- user1 ---- event1 ( window start) t1 +5 mins ----- user1 ----- event2 t1 + 10 mins --- user1 ---- event3 t1 + 15 mins ----- user1 ---- event4===start type event (terminate window as event type "*Start*" arrived and calculate aggregate on above collected events) t1+16 mins ---user-1 ---- event 5 starts a new window *Scenario -2* t1 ----- user1 ---- event1 ( window start) t1 +5 mins ----- user1 ----- event2 t1 + 10 mins --- user1 ---- event3 t1 + 30 mins ----- user1 ---- event4 (terminates the window as 30 mins elapsed and calculate aggregate on above collected events) t1+31 mins ---user-1 ---- event5 starts a new window This I want to implement. I have tried to read triggers but did not getting understand how to trigger when either time pass or eventtype==* "start"* has arrived. Which function of trigger class I have to implement and how to check these 2 conditions on each event arrive. Please help to implement this. If you can provide a basic start function that I need to implement. I am not clear how to start. On Thu, May 21, 2020 at 4:59 PM Jiayi Liao <buptliaoji...@gmail.com> wrote: > > According to your description, it's more like a session window scenario > rather than a tumbling window, you can find more details in [1]. But the > difference between your window and Flink > 's session window is, the session length is defined by the first element > in your case. I'm afraid that Flink does't have implementations for such > scenarios, you may need to create your own WindowAssigner. > > For the trigger, yes, you can always implement a trigger to determine the > lifecyle of a window. > > > > [1]. > https://ci.apache.org/projects/flink/flink-docs-stable/dev/stream/operators/windows.html#session-windows > > > > Best, > Jiayi Liao > > On Thu, May 21, 2020 at 5:51 PM aj <ajainje...@gmail.com> wrote: > >> Hi Liao, >> >> Thanks for the response. I am reading all this as I never implemented >> this. >> >> > Start the window for the user when event_name: *"search" *arrived for >> the user. >> >> I'm not very sure this is right way to define the window in your business >> if you use event time, because there may exist out-of-order events that >> happened after "search" event, but arrive before "search" event, which will >> be discarded because you haven't assigned a window. (If I understand >> correctly) >> >> *Yes you are right and I raised this concern to the business team and we >> still in discussion. * >> >> But let say if I do not need the above condition if I want to start the >> window whenever the first event of the particular user event appears and >> then bucket those events with similar conditions (either 30 mins from the >> start of the window reached or event_type: *"start" *is appeared). So, >> in that case, can I use *TumblingProcessingTimeWindows *with 30 mins, >> and on that can I put a custom trigger that before 30 mins if event_type: >> *"start" >> is *arrived than the process the window. >> Is this correct understanding like if let stay *start* event arrived at >> 20 mins from window start then that window will be close and processed and >> events that arriving after that will be assign to the new window or window >> will continue till 30 mins. >> >> >> >> >> >> >> >> >> >> >> >> On Thu, May 21, 2020 at 2:55 PM Jiayi Liao <buptliaoji...@gmail.com> >> wrote: >> >>> Hi, >>> >>> >>> > Start the window for the user when event_name: *"search" *arrived >>> for the user. >>> >>> I'm not very sure this is right way to define the window in your >>> business if you use event time, because there may exist out-of-order events >>> that happened after "search" event, but arrive before "search" event, which >>> will be discarded because you haven't assigned a window. (If I understand >>> correctly) >>> >>> Back to the problem, I think you can implement your own #WindowAssigner, >>> which will create a window based on the event's name. Take a look at our >>> existing implementations like #TumblingEventWindows. >>> >>> > Trigger the window when either 30 mins from the start of >>> the window reached or event_type : *"start" *is appeared >>> >>> This can also be implemented with a customed #Trigger. The timing of >>> being triggered can be set by registering timers with Flink's internal >>> timer service. Take a look at #EventTimeTrigger, it's easy to implement it. >>> >>> >>> Best, >>> Jiayi Liao >>> >>> On Thu, May 21, 2020 at 2:47 PM aj <ajainje...@gmail.com> wrote: >>> >>>> >>>> Hello All, >>>> >>>> I am getting a lot of user events in a stream. There are different >>>> types of events, now I want to build some aggregation metrics for the user >>>> by grouping events in buckets. >>>> >>>> My condition for windowing is : >>>> >>>> 1. Start the window for the user when event_name: *"search" *arrived >>>> for the user. >>>> 2. Trigger the window when >>>> either 30 mins from the start of the window reached >>>> OR >>>> event_type : *"start" *is appeared. >>>> >>>> After that, I want to do calculate some aggregation on those window >>>> events. I know this can be done using process function but I am stuck to >>>> create the window with multiple conditions trigger. >>>> >>>> Please help me how to create this type of window with multiple >>>> trigger condition either time or some event happen. >>>> >>>> >>>> -- >>>> Thanks & Regards, >>>> Anuj Jain >>>> >>>> >>>> <http://www.cse.iitm.ac.in/%7Eanujjain/> >>>> >>> >> >> -- >> Thanks & Regards, >> Anuj Jain >> Mob. : +91- 8588817877 >> Skype : anuj.jain07 >> <http://www.oracle.com/> >> >> >> <http://www.cse.iitm.ac.in/%7Eanujjain/> >> > -- Thanks & Regards, Anuj Jain Mob. : +91- 8588817877 Skype : anuj.jain07 <http://www.oracle.com/> <http://www.cse.iitm.ac.in/%7Eanujjain/>