簡體   English   中英

如何使用 flink cep 完成聚合任務

[英]How to complete aggregation task with flink cep

我需要計算 A 發生的次數和 B 發生的 15 分鍾的次數。 。在我的情況下,事件結果是 A2,B1 A3,B3 A7,B6。當匹配器發生時我需要接收實時結果。我已經厭倦了一些東西。我認為這只能通過使用 flink cep 來實現。但是 flink- sql-cep 不支持聚合。 它只計算事件發生。在這種情況下,如何使用單個 SQL 完成此任務。

我累了兩步。我先用flink sql cep to matcher,然后sink to kafka。 在一步中,我使用 pre kafka 並使用 window 進行聚合。

第一步: select pin as pin,'first-step' as result_id, cast(order_amount as varchar) as result_value,event_time as result_time from stra_dtpipeline MATCH_RECOGNIZE ( PARTITION BY pin
ORDER BY event_time MEASURES
t1.pin 作為引腳,'1' 作為 order_amount,LOCALTIMESTAMP 作為 event_time 每場比賽一場比賽后跳到下一行模式(t1 t2)間隔'30'秒
定義
t1 as t1.act_type='100001', t2 as t2.act_type='100002' ) 第二步: select pin,'job5' as result_id,cast(sum(1) over (PARTITION BY pin,cast(DATE_FORMAT(event_time, '%Y%m%d') as VARCHAR) order by event_time ROWS BETWEEN INTERVAL '1' DAY PRECEDING AND CURRENT ROW ) as VARCHAR) as result_value, CURRENT_TIMESTAMP as result_time from stra_dtpipeline_mid where result_id='first-step' and DAYOFMONTH(CURRENT_DATE )=DAYOFMONTH(event_time)

我希望用一個 SQL 完成這項任務。

您可以使用子查詢或視圖將這兩個查詢組合成一個查詢。

那會是這樣的

SELECT a, b OVER (...) ORDER BY event_time FROM (SELECT x, y MATCH_RECOGNIZE ...) WHERE ...

或者

CREATE VIEW pattern AS SELECT x, y MATCH_RECOGNIZE ...
SELECT ... FROM pattern WHERE ...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM