You are Welcome. Glad to hear the information is helpful. Guoqin Zheng <lanson.zh...@gmail.com> 于2021年12月10日周五 03:28写道:
> Hi Jing, > > Thanks for the advice. This is very helpful. > > -Guoqin > > On Wed, Dec 8, 2021 at 11:52 PM Jing Zhang <beyond1...@gmail.com> wrote: > >> Hi Guoqin, >> I understand the problem you are suffering. >> I'm sorry I could not find out a perfect solution on Flink 1.13. >> >> Maybe you could try to use TopN [1] instead of Window TopN by normalizing >> time into a unit with 5 minute, and add it to be one of partition keys. >> But the result is an update stream instead of append stream, which means >> the result sent might be retracted later. Besides, you could take care of >> state clean. >> >> [1] >> https://nightlies.apache.org/flink/flink-docs-release-1.13/docs/dev/table/sql/queries/topn/ >> >> Best, >> Jing Zhang >> >> Guoqin Zheng <lanson.zh...@gmail.com> 于2021年12月9日周四 14:16写道: >> >>> Hi Jing, >>> >>> Just verified that it worked with Flink 1.14. But as you said, Flink >>> 1.13 does not yet support it. >>> Other than waiting for KDA to upgrade the Flink version, is there any >>> workaround for Flink 1.13? >>> >>> Thanks, >>> -Guoqin >>> >>> On Wed, Dec 8, 2021 at 10:00 PM Guoqin Zheng <lanson.zh...@gmail.com> >>> wrote: >>> >>>> Hi Jing, >>>> >>>> Thanks for chiming in. This sounds great. Any chance this will work for >>>> Flink 1.13 as well, as I am using AWS KDA. >>>> >>>> Thanks, >>>> -Guoqin >>>> >>>> On Wed, Dec 8, 2021 at 7:47 PM Jing Zhang <beyond1...@gmail.com> wrote: >>>> >>>>> Hi Guoqin, >>>>> I guess you have misunderstood Martijn's response. >>>>> Martijn suggest you use Window TopN. Besides, Window TopN does not >>>>> need to follow a Window Aggregate, it could followed with Window TVF >>>>> directly since Flink 1.14. Please see document [1] attached. >>>>> You could try the following SQL to get the record with the max gauge >>>>> because you use ORDER BY gauge desc and fetch the first one. >>>>> >>>>> SELECT deviceId, locationId, gauge, window_start, window_end >>>>> FROM ( >>>>> SELECT *, ROW_NUMBER() OVER (PARTITION BY window_start, window_end >>>>> ORDER BY gauge DESC) as rownum >>>>> FROM TABLE( >>>>> TUMBLE(TABLE MyTable, DESCRIPTOR(readtime), INTERVAL '5' >>>>> MINUTES)) >>>>> ) WHERE rownum <= 1; >>>>> >>>>> [1] >>>>> https://nightlies.apache.org/flink/flink-docs-release-1.14/docs/dev/table/sql/queries/window-topn/#window-top-n-follows-after-windowing-tvf >>>>> >>>>> Best, >>>>> Jing Zhang >>>>> >>>>> >>>>> >>>>> >>>>> Guoqin Zheng <lanson.zh...@gmail.com> 于2021年12月9日周四 10:30写道: >>>>> >>>>>> Hi Martijn, >>>>>> >>>>>> Thanks for your quick response. I tried it, but it does not seem to >>>>>> work. >>>>>> >>>>>> The problem is that I want to select fields that are not in the >>>>>> `GROUP BY`. So in my example, I can have a tumble window on `readtime`, >>>>>> and >>>>>> select max(gauge), but I also want both `deviceId` and `locationId` of >>>>>> the >>>>>> max record included in the selected result. With Top-N, it does not seem >>>>>> to >>>>>> allow that. >>>>>> >>>>>> -Guoqin >>>>>> >>>>>> On Wed, Dec 8, 2021 at 1:22 PM Martijn Visser <mart...@ververica.com> >>>>>> wrote: >>>>>> >>>>>>> Hi Guoqin, >>>>>>> >>>>>>> I think you could use the Window Top-N. There's a recipe in the >>>>>>> Flink SQL Cookbook [1]. The example uses a SUM which you should change >>>>>>> to >>>>>>> MAX and of course you change the rownum to 1 instead of 3. >>>>>>> >>>>>>> Best regards, >>>>>>> >>>>>>> Martijn >>>>>>> >>>>>>> [1] >>>>>>> >>>>>>> https://github.com/ververica/flink-sql-cookbook/blob/main/aggregations-and-analytics/11_window_top_n/11_window_top_n.md >>>>>>> >>>>>>> Op wo 8 dec. 2021 om 19:54 schreef Guoqin Zheng < >>>>>>> lanson.zh...@gmail.com> >>>>>>> >>>>>>>> Hi Flink Community, >>>>>>>> >>>>>>>> I am curious what the recommended way is to select the event with a >>>>>>>> max attribute value with SQL api. >>>>>>>> >>>>>>>> For example, I have an event stream like: >>>>>>>> >>>>>>>> { >>>>>>>> deviceId, >>>>>>>> locationId >>>>>>>> gauge, >>>>>>>> readtime, <-- eventTime >>>>>>>> } >>>>>>>> >>>>>>>> I want to figure out which device and location has the max gauge >>>>>>>> over a 5-mins window. >>>>>>>> >>>>>>>> Any advice would be greatly appreciated! >>>>>>>> >>>>>>>> Thanks! >>>>>>>> -Guoqin >>>>>>>> >>>>>>> -- >>>>>>> >>>>>>> Martijn Visser | Product Manager >>>>>>> >>>>>>> mart...@ververica.com >>>>>>> >>>>>>> <https://www.ververica.com/> >>>>>>> >>>>>>> >>>>>>> Follow us @VervericaData >>>>>>> >>>>>>> -- >>>>>>> >>>>>>> Join Flink Forward <https://flink-forward.org/> - The Apache Flink >>>>>>> Conference >>>>>>> >>>>>>> Stream Processing | Event Driven | Real Time >>>>>>> >>>>>>>