我需要计算一天中 A 发生的次数和 B 在 15 分钟内发生的次数。流可能是 A1 ,A2,B1,B2,A3,B3,B4,B5,A4,A5,A6,A7,B6。 在我的例子中,事件结果是 A2,B1 A3,B3 A7,B6。并且我需要在匹配器发生时接收实时结果。 我累了。我认为只有通过使用 flink cep 才能实现。但是 flink-sql-cep 不支持聚合。它只计算发生的事件。在这种情况下,如何使用单个SQL完成此任务。
我累了两步才做。我先用 flink sql cep 来匹配器,然后再下沉到 kafka。 在步骤中,我 souce pre kafka 并使用窗口进行聚合。
第一步: 选择引脚作为引脚,选择"第一步"作为result_id,将(order_amount转换为 varchar(作为 result_value,event_time 作为result_time 与stra_dtpipeline MATCH_RECOGNIZE相比 ( 按引脚
顺序按event_time分区 测量
t1.pin 作为引脚, "1"作为order_amount, 本地时间戳作为event_time 每场比赛一行 比赛后跳到下一行 区间"30"秒内的模式 (t1 t2(
将
t1 定义为 t1.act_type='100001' , t2 作为 t2.act_type='100002' ( 第二步: 选择 PIN,'JOB5' 作为 result_id,CAST(sum(1( over (PARTITION BY PIN,CAST(DATE_FORMAT(event_time,'%Y%m%d'( 作为 VARCHAR( 按间隔"1"天前一天和当前行之间的event_time行排序(作为 VARCHAR(作为 result_value,CURRENT_TIMESTAMP 作为result_time 与stra_dtpipeline_mid相比 其中 result_id='第一步' 和 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 ...