使用Blink CEP实现差值聚合计算

使用Blink SQL+UDAF实现差值聚合计算介绍了如何使用Blink SQL+UDAF实现实时流上的差值聚合计算,后来在与@付典就业务需求和具体实现方式进行探讨时,付典提出通过CEP实现的思路和方法。
本文介绍通过CEP实现实时流上的差值聚合计算。
感谢@付典在实现过程中的指导。笔者水平有限,若有纰漏,请批评指出。

一、客户需求

电网公司每天采集各个用户的电表数据(格式如下表),其中data_date为电表数据上报时间,cons_id为电表id,r1为电表度数,其他字段与计算逻辑无关,可忽略。为了后续演示方便,仅输入cons_id=100000002的数据。

no(string)data_date(string)cons_id(string)org_no(string)r1(double)
101201907161000000023540113.76
101201907171000000023540114.12
101201907181000000023540116.59
101201907191000000023540118.89

表1:输入数据
电网公司希望通过实时计算(Blink)对电表数据处理后,每天得到每个电表最近两天(当天和前一天)的差值数据,结果类似如下表:

cons_id(string)data_date(string)subDegreeR1(double)
100000002201907170.36
100000002201907182.47
100000002201907192.3

表2:期望的输出数据

二、需求分析

根据业务需求以及CEP跨事件模式匹配的特性,定义两个CEP事件e1和e2,输出e2.r1-e1.r1即可得到差值。

三、CEP开发及测试结果

参考复杂事件处理(CEP)语句,CEP代码如下:

CREATE TABLE input_dh_e_mp_read_curve (`no`                  VARCHAR,data_date             VARCHAR,cons_id               VARCHAR,org_no                VARCHAR,r1                    DOUBLE,ts as TO_TIMESTAMP(concat(data_date,'000000'),'yyyyMMddHHmmss'),WATERMARK wk FOR ts as withOffset(ts, 2000)
) WITH (type = 'datahub',endPoint = 'http://dh-cn-shanghai.aliyun-inc.com',roleArn='acs:ram::XXX:role/aliyunstreamdefaultrole',project = 'jszc_datahub',topic = 'input_dh_e_mp_read_curve'
);CREATE TABLE data_out(cons_id varchar,data_date varchar,subDegreeR1 DOUBLE
)with(type = 'print'
);insert into data_out
selectcons_id,data_date,subDegreeR1
from input_dh_e_mp_read_curve
MATCH_RECOGNIZE(PARTITION BY cons_idORDER BY tsMEASURESe2.data_date as data_date,e2.r1 - e1.r1 as subDegreeR1ONE ROW PER MATCHAFTER MATCH SKIP TO NEXT ROWPATTERN(e1 e2)DEFINEe1 as TRUE,e2 as TRUE
);

由于使用了print connector,从对应的sink的taskmanager.out日志中可以查看到输出如下:

task-1> (+)100000002,20190717,0.35999999999999943
task-1> (+)100000002,20190718,2.4700000000000006

对比期望输出(表2),20190717和20190718两个窗口的数据均正确,表明业务逻辑正确,但此输出与期望输出有少许差异:
(1)20190719的数据没有输出,这是因为我们设置了watermark,测试环境下20190719之后没有数据进来触发20190719对应的窗口的结束。

四、其他说明

1、对比使用Blink SQL+UDAF实现差值聚合计算(1),我们可以看出使用CEP开发代码非常简洁,所以在跨事件处理的情况下CEP还是非常的合适。从另外一个方面讲,同样的需求有不同的实现方式,所以融会贯通Blink SQL中的各种语法,利用更合适的语法来实现业务需求,将可能大大提升工作效率和业务性能。
2、在实现本案例时,笔者发现使用CEP时有如下需要注意的地方:
(1)partiton by里的字段(如本案的cons_id),默认会带到输出里,若同时在MEASURES中定义,则可能会报类似如下错误:
13_47_33__08_03_2019.jpg
(2)define及其内容必须定义,否则前端页面提示类似如下错误:
图片.png

图片.png

原文链接
本文为云栖社区原创内容,未经允许不得转载。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/516130.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

企业微信小程序_授权登录接口获取用户userid

文章目录一、前置知识1. 阅读 企业微信小程序开发文档2. 企业微信小程序登录流程3. 微信小程序区别二、前端部分2.1. 调用登录接口2.2. 请求后端接口2.3. 项目源码三、后端部分3.1. yml配置3.2. 获取用户信息接口3.3. 获取token3.4. 工具类3.5. vo对象四、调试部分4.1. 模式切换…

我输给了一个 25 岁的男人

未来的你:小伙计你好,我是 10 年后的你,刚穿越回来,还是热乎的。现在的你:Are you sure?大哥,从你那憔悴的神色里可以看出日夜颠倒的作息和毫无爱情发酵的灵魂,随便喊个人来看看,咱…

阿里云公共DNS安全传输服务介绍(DoH/DoT)

概述 阿里公共DNS致力于为广大的互联网用户提供快速、稳定和安全的DNS解析。然而传统的DNS查询和应答采用UDP和TCP明文传输,存在网络监听、DNS劫持、中间设备干扰的风险: 网络监听风险:即便用户采用HTTPs加密的方式访问站点,DNS…

Excel VBA - 文件及目录操作

目录 一. 文件处理1.1 Name 语句1.2 FileCopy 语句1.3 Kill 语句1.4 GetAttr 函数1.5 SetAttr 语句1.6 FileLen 函数1.7 FileDateTime 函数二. 目录处理2.1 CurDir 函数2.1 ChDir 语句2.3 ChDrive 语句2.4 Dir 函数2.5 MkDir 语句2.6 RmDir 语句三. 文件读写3.1 Open 语句3.2 C…

企业微信小程序_集成微信小程序插件_地图选点插件

官网文档: https://lbs.qq.com/miniProgram/plugin/pluginGuide/locationPicker 具体操作参考官网文档即可,讲的很详细

一文教你如何在生产环境中在Kubernetes上部署Jaeger

作者 | Dotan Horovit翻译 | 火火酱~责编 | 晋兆雨出品 | CSDN云计算日志、指标和跟踪是“可观察性”领域的三大支柱。最近几个月,随着OpenTelemetry标准化以及Jaeger开源项目从CNCF孵化项目中顺利毕业,分布式跟踪领域出现了很多创新。根据DevOps Pulse…

一篇讲透如何理解数据库并发控制

01数据库并发控制的作用 1.1 事务的概念 在介绍并发控制前,首先需要了解事务。数据库提供了增删改查等几种基础操作,用户可以灵活地组合这几种操作,实现复杂的语义。在很多场景下,用户希望一组操作可以做为一个整体一起生效&…

工作簿长时间空闲时自动关闭

目录 1. 对关闭时间和关闭工作薄进行设置2. 利用 OnTime 方法对执行程序进行设置3. 对工作薄的变化进行设置1. 对关闭时间和关闭工作薄进行设置 在新建模块中声明一个时间作为全局的变量,该变量将是每次工作薄发生改变后延续的时间,另外再设置一个工作薄关闭的过程。 代码如…

打钱!我的数据库被黑客勒索了!

来源 | 小白学黑客责编 | 晋兆雨头图 | 付费下载于视觉中国数据库失陷昨天晚上,读者群里一位小伙伴发消息说自己的数据库被黑了,搞安全的我自然是立刻来了兴趣,加班加点开始分析起来,不知道的还以为我要熬夜等剁手节呢。这位小伙伴…

uni-app集成uview

文章目录一、uni_modules方式1. 创建uni-app项目2. 安装uview3. 安装SCSS插件二、配置步骤2.1. 引入uView主JS库2.2. 引入主题文件2.3. 引入uView基础样式2.4. 配置easycom组件模式2.5. 实战三、zip方式3.1. 创建uni-app项目3.2. 下载uview3.3. 解压重命名3.4. 拷贝UI3.5. 安装…

阿里云飞天洛神2.0:高性能网络软硬一体化技术实践

云网络架构 云计算从9年前被质疑为新瓶装旧酒,到经过多年的高速发展,正在成为水电煤一样的基础设施。云网络构建在物理网络之上,为云计算提供灵动、智能的网络连接。云网络的性能和稳定性是云计算的基石。 VPC是云网络的基础,VP…

作为后端开发如何设计数据库系列文章 设计SaaS系统表结构

在公司做了一年的SaaS内核系统,但是有些东西不知道能不能透露出来。我尽量在不透露一些敏感东西的情况下(这个度我无法把控,只能是笼统了),将某些关于数据库方面的精髓传递出来。如果表达不畅,请谅解。 前…

重学 VBA - 基础与实战篇(含正则表达式)

目录 前置内容1. 单元格对象属性与方法1.1 查找最后的行、列1.1.1 End 属性1.1.2 SpecialCells 和 UsedRange1.1.3 Find 方法1.1.4 四种方法属性效果比较1.2 多重循环(案例)1.2.1 实现数据之间的匹配(不同列)1.2.2 实现数据之间的匹配(同列)1.2.3 排序 - 简单选择排序法1…

js 时间比较大小

const startTime parseInt(this.timeValue.replace(:, ));const endTime parseInt(this.timeValue2.replace(:, ));//进行比较if (startTime > endTime) {//添加校验提示console.log("startTime>endTime")} else {console.log("startTime<endTime&qu…

新一轮支付革命,利楚扫呗的数据库优化之路

中国移动支付市场崛起过程中&#xff0c;第三方、第四方等非银行支付机构在2017年至2019年之间&#xff0c;把移动支付交易量从300多亿笔拉升至近1800亿笔&#xff0c;充分彰显以扫码支付为代表的移动支付革命引领一时风潮。 利楚扫呗作为华中地区领先的金融收单企业也是其中一…

IM、RTC技术两生花,看融云如何打造“IM+RTC+Push”一站式通信云服务

11月9日&#xff0c;融云宣布完成数亿元人民币的D轮融资。从李佳琦和明星扎堆的电商直播&#xff0c;到疫情期间在线教育的全面普及&#xff0c;再到5G技术进入商用&#xff0c;实时音视频技术&#xff08;Real-Time Communication&#xff0c;以下简称RTC&#xff09;迎来了全…

Nginx实现通过不同的url前缀访问不同的前后端项目

&#xff0c;所以目前就可以通过给网页访问链接增加不同的url前缀&#xff0c;来让Nginx去实现同一端口下访问不同的前后端项目。具体配置如下&#xff1a; &#xff08;我这里是前端两个项目各自对应后端的两个服务&#xff09; server {#这里默认监听80端口&#xff0c;可根…

阿里云助力浙江大学信息化建设,以实时数据驱动校园智能管理

随着网络信息化技术的不断进步&#xff0c;就我国高校而言&#xff0c;传统的学习和生活模式已无法满足学生的需求&#xff1b;老机房堆硬件的建设&#xff0c;给信息化深度建设的管理和运维工作人员造成了巨大的麻烦。这些因素促使各所高校对校园智能管理的需求日益剧增。 20…

1 元秒杀 1000+ 册爆款电子书,错过再等一年!

wow代码人们让钱包瑟瑟发抖的双十一已经来啦与此同时码不停蹄地向你奔赴而来的还有 CSDN 为你准备的???? 1 元秒杀 ????价值 3.5 万元的爆款电子书限时特惠&#xff0c;仅需 1 元你&#xff0c;准备好了吗仅限 1000 人速领????????????错过悔10年系列好书

vue 单独页面定时器 离开页面销毁定时器

data: {return {timer: null} }, created() {this.timer setInterval(....); }, beforeDestroy() {if(this.timer) { //如果定时器还在运行 或者直接关闭&#xff0c;不用判断clearInterval(this.timer); //关闭} }