当前位置: 首页 > 知识库问答 >
问题:

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

芮博厚
2023-03-14

我需要计算15分钟内A发生的次数和B发生的次数。该流可能是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。在步骤中,我找到了Kafka之前的版本,并通过窗口进行聚合。

第一步:选择引脚作为引脚,“第一步”作为result_id,cast(order_amount作为varchar)作为result_value,event_time作为stra_dtpipeline MATCH_RECOGNIZE的result_time(按引脚顺序分区
event_time测量
t1.pin作为引脚,“1”作为order_amount,LOCALTIMESTAMP作为event_time匹配后每场比赛一行跳到下一行模式(t1 t2)在间隔“30”内
第二定义
t1 作为 t1.act_type='100001' ,t2 作为 t2.act_type='100002' ) 第二步:选择 pin,'job5' 作为 result_id,cast(1) over (PARTITION BY PIN,cast(DATE_FORMAT(event_time,'%Y%m%d') 作为 VARCHAR) 按event_time间隔 '1' DAY Before 和 CURRENT ROW 之间的行排序) 作为 VARCHAR) 作为 result_value,CURRENT_TIMESTAMP 作为 stra_dtpipeline_mid 的result_time,其中 result_id='first-step' 和 DAYOFMONTH(CURRENT_DATE)=DAYOFMONTH(event_time)

我希望使用单个 SQL 完成此任务。

共有1个答案

马渊
2023-03-14

通过使用子查询或视图,可以将两个查询组合成一个查询。

那将是这样的

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 ...
 类似资料:
  • 嗨,我有一个骆驼路线,它分割一条传入的消息,然后我想聚合这条消息,但我不知道会分割多少条消息。 我使用了以下方法: 这不起作用,而且挂起了……不过,如果我将完成大小设置为一个数值,它就起作用了。 有人知道如何动态聚合,并等待完成。顺便说一下,标题是在分割之前设置的。

  • 在我的Apache Camel应用程序中,我有一条非常简单的路线: 也就是说,它从AWS SQS获取消息,以100条为一批进行分组,然后通过HTTP发送到某个地方。 与来自SQS的消息的交换在进入聚合阶段时成功完成,此时将它们从队列中删除。 问题是,聚合的交换可能会出现问题(传递时可能会出错),消息将丢失。我真的希望这些原始交换只有在它们所在的聚合交换也成功完成(传递了一批消息)时才能成功完成(从

  • 我有一个集合xyz,我需要在不使用MongoDB的情况下找到列分支的所有唯一值。distinct方法。我知道我们可以通过group by来完成,这会给我一个对象数组作为结果,但我需要字符串数组作为输出,比如['a','b','c'。我不知道如何以这种方式格式化它,仅在mongo查询中。 数据库。getCollection(“xyz”)。聚合([{$组:{“\u id”:“$分支”},}])

  • 我想执行一个进行基本分页的聚合查询: 查找属于某个 以下是查询的详细信息: 这将查找所有匹配的文档: 这对文档进行了排序: 这会对文档进行计数,并传递未修改的文档,但我肯定这样做是错误的,因为事情从这里开始变得很奇怪: 这似乎跳过了一些文档: 这本应限制文件,但却没有: 这会返回计数,但不会返回数组中的文档,而是返回每个字段的数组: 结果是: 我哪里弄错了?

  •  说明 调用方法1: $.f2eAct.task(el,options); 函数说明: 该方法完成主要调用joinAndFinish完成任务,会根据接口返回的奖品类型显示不同文案,如卡玛、实物、谢谢参与等。 当获取的奖品数量大于1时,会默认触发 $(".js-package").click(); 事件,所以需要在JS里定义.js-package点击方法。 使用的时候需要在相应dom元素添加 da

  • 问题内容: 我有一个页面,我可以在其中插入一些javascript / jquery来操纵输出。我对页面标记等没有任何其他控制。 我需要在页面上的每一个出现之后通过jquery添加一个额外的元素。问题是元素是通过在$(document).ready完成之后发生的现有页面上通过异步调用生成的。 本质上,我需要一种在页面加载并且后续的ajax调用完成之后调用我的jquery的方法。有没有一种方法可以检