版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第6章
电力行业的大数据应用案例数据科学与工程行业案例教程汇报人姓名汇报日期了解电力系统的结构,理解电力系统的基本结构与组成,掌握发电、输电、配电及用电各环节的核心功能与运行逻辑。
熟悉电力行业包含的常见数据,包括发电数据、输电线路数据、配电网络数据、用户用电数据、设备状态数据等,掌握各类数据的来源、格式及基本属性。熟悉基于电力行业数据的应用场景,包括风电场景中大数据应用。掌握电力负荷与新能源调度案例,理解负荷预测模型构建、调度策略制定的核心逻辑,熟悉案例中数据处理、模型应用及效果评估的关键环节。掌握智能电表业务场景案例,能够分析智能电表数据的采集、传输与处理流程,熟悉基于电表数据的用电监测、需求响应等业务应用的实现方式与技术要点。学习目标目录CONTENTS12345案例概述数据处理电力负荷预测与新能源调度用电行为分析小结与习题6.1案例概述-电力系统的结构发电环节:能量转换的起点利用煤炭、天然气、风能、太阳能等一次能源产生电能,是电力系统的源头。输电环节:长距离高效输送通过高压输电线路将电能传输到不同地区,有效减少长距离传输中的能量损失。配电环节:降压与分配将高压电降低至适合民用和工业使用的低压电,并安全分发给最终用户。用电环节:电能的最终消费家庭、商业及工业用户消耗电能,满足日常生活和生产需求,是系统的末端。信息与控制:系统的“大脑”包括调度自动化等系统,确保从生产到消费的全流程高效、安全、稳定运行。6.1案例概述-电力行业的数据来源主要数据来源分类电网运行与监测数据包含能量管理系统(EMS)、配网管理系统(DMS)及广域量测系统等实时数据。电力企业营销数据涵盖交易电价、售电量、用电客户信息,来源于营销业务系统及采集系统。电力企业管理数据来自协同办公系统、企业资源计划(ERP)等管理平台的非实时业务数据。电力大数据特点(4V模型)体量大(Volume)数据规模巨大,仅居民用电数据单日可达数十亿项。类型多(Variety)涵盖结构化数据及视频、语音、图片等非结构化数据。价值密度低(Value)正常数据占绝大多数,有价值的异常数据占比极小。处理速度快(Velocity)要求极短时间内完成海量数据分析,支持实时决策。6.1案例概述-应用案例(一):风电企业大数据应用案例背景某风电企业承接多个风场运营,风机数据量激增,传统数据库难以支撑海量数据的存储与处理需求。主要挑战成本高:海量数据存储难,负担重响应慢:无法满足秒级采集与分析价值弱:难以对接AI算法平台解决方案采用KaiwuDB“就地计算+AI算法”技术方案,实现数据的高效存储与智能分析。系统架构图实施效果支撑10万条/秒实时写入,查询性能提升20~50倍。存储成本节约超85%,大幅降低运维开支。实现故障“早预测、早判断、早介入”,人工成本降低30%以上。6.1案例概述-应用案例(二):国网山东综能分布式储能项目项目背景与挑战背景:济南韩家峪村高光伏渗透率台区,需有效管理分布式储能。痛点:缺乏海量时序数据采集能力与统一可视化监控平台缺少有效的数据库管理方案解决方案:云边协同平台核心架构:构建基于KaiwuDB+KDP的分布式云储能聚合管理平台,结合边缘控制设备,实现云边协同。实施效果:光伏100%消纳,电压质量100%合格,供电可靠性99.999%实现台区弹性增容30%以上国网山东综能项目现场实景能源云管平台架构图6.2数据处理-数据集介绍数据集来源来源:和鲸社区(作者:华东师范大学刘旗洋)案例目标利用3个月历史数据,预测未来4小时光伏电站功率。数据集组成结构训练集(Sheet1):2019.6.1-8.30功率与气象数据。测试集(Sheet2):预测8月30日14:00-17:00的功率。验证集(Sheet3):实际工况正确答案,用于评价效果。数据样例预览图1:训练集数据样例(包含详细气象特征)图2:测试集数据样例(预测目标时段)步骤1&2:环境配置与数据读取关键代码实现#步骤1:导入依赖库importpandasaspd#步骤2:读取并查看数据df=pd.read_excel('./data.xlsx')df#输出数据内容代码逻辑说明导入pandas库用于数据处理,matplotlib用于可视化。使用read_excel读取Excel数据,存储为DataFrame。直接输出df变量,快速预览数据结构与内容。数据读取结果预览步骤3:数据预处理-查看数据信息关键代码实现#查看数据的列信息和缺失值情况()执行结果分析获取数据集全貌:包括总行数(84016行)、各列名称、数据类型(int64,datetime64等)及非空值数量。数据质量评估:确认大部分字段数据完整,重点核查数据类型是否符合预期,为后续清洗做准备。输出结果可视化步骤3:数据预处理-重复值处理(发现)关键代码实现#分别检查两个光伏电站的重复行df1=df[df['光伏电站编号']==1001]print("1001号电站重复行:")print(df1[df1.duplicated()])...df2=df[df['光伏电站编号']==1002]print(df2[df2.duplicated()])结果分析利用分组和duplicated()方法,成功发现两个电站均存在重复记录。重复数据会影响后续建模准确性,必须进行清洗。1001号光伏电站重复行截图1002号光伏电站重复行截图步骤3:数据预处理-重复值处理(去除)关键代码实现#去除重复行并重新拼接数据df1=df1.drop_duplicates()df2=df2.drop_duplicates()df_cleaned=pd.concat([df1,df2]).reset_index(drop=True)处理效果总结使用drop_duplicates()方法成功去除重复行。数据重新拼接后无冗余,为后续分析奠定基础。清洗后数据预览图:处理后的数据包含4029行有效记录,无重复值了解两个光伏电站的功率输出范围和分布特征,绘制两个光伏电站的功率时序time1=df[df['光伏电站编号']==1001]['时间']power1=df[df['光伏电站编号']==1001]['功率']time2=df[df['光伏电站编号']==1002]['时间']power2=df[df['光伏电站编号']==1002]['功率']fig=plt.figure(figsize=(18,8))ax=fig.add_subplot(211)plt.tick_params(labelsize=15)plt.plot_date(time1,power1,'-')#plt.xlabel('时间',fontsize=15)plt.ylabel('功率(MW)',fontsize=15)ax=fig.add_subplot(212)plt.tick_params(labelsize=15)plt.plot_date(time2,power2,'-')plt.xlabel('时间',fontsize=15)plt.ylabel('功率(MW)',fontsize=15)plt.show()步骤4:数据规律观察-电站功率整体分布了解两个光伏电站的功率输出范围和分布特征,增加月日小时列同时删除气象站编号。#增加月列df['月']=df['时间'].dt.month#增加日列df['日']=df['时间'].dt.day#增加小时列df['时']=df['时间'].dt.hour#删除气象站编号(因为和光伏站是对应的,不必重复)deldf['气象站编号']df步骤4:数据规律观察-电站功率整体分布了解两个光伏电站的功率输出范围和分布特征,筛选数值为0的相关属性。。#筛选出功率为0的行zero_power=df[df['功率']==0]#功率数值为0时的相关属性print(zero_power['总辐照度'].unique())print(zero_power['法向辐照度'].unique())print(zero_power['散射辐照度'].unique())print(zero_power['时'].unique())通过以上数据,可以得出如下结论:①光伏数据具有日变化特征,每天正午前(6-12时)逐渐升高、正午后(12-20时)逐渐下降,正午前后达到峰值。②数据存在周期性特征,但是每日峰值存在较大差异。③当日20时-次日5时的功率数值为0,通过相关属性发现,功率数值为0时的总辐照度、法向辐照度和散射辐照度都为0,这种应该属于正常现象。步骤4:数据规律观察-电站功率整体分布绘制6月14日两个光伏电站的功率变化曲线。data=df[df['时间'].isin(pd.date_range(start='2019-06-1400:00:00',end='2019-06-1423:00:00',freq='1H'))]time1=data[data['光伏电站编号']==1001]['时间']power1=data[data['光伏电站编号']==1001]['功率']time2=data[data['光伏电站编号']==1002]['时间']power2=data[data['光伏电站编号']==1002]['功率']#绘制功率变化曲线fig=plt.figure(figsize=(18,4))ax=fig.add_subplot(111)plt.tick_params(labelsize=15)plt.plot_date(time1,power1,'o-',label='光伏电站(id=1001)')plt.plot_date(time2,power2,'.-.',label='光伏电站(id=1002)')plt.xlabel('时间',fontsize=15)plt.ylabel('功率(MW)',fontsize=15)plt.title('光伏电站功率曲线',fontsize=15)plt.legend(loc='best',fontsize=15)plt.show()从图6.17可以看出6月14日1001编号的光伏电站在08时存在缺失情况。1001编号的光伏电站在功率在06时-12时处于显著的线性上升趋势。两个光伏电站的变化趋势存在较高一致性,但是功率数值存在差异。步骤4:数据规律观察-日功率变化曲线绘制1001和1002电站在6、7、8月的日变化曲线#(原始数据)绘制1001电站在6、7、8月的日变化曲线data1=df[df['光伏电站编号']==1001].set_index('时间')
data1_june=data1[data1.index.month==6]#提取6月数据data1_junedata1_july=data1[data1.index.month==7]#提取7月数据data1_julydata1_august=data1[data1.index.month==8]#提取8月数据data1_august#(原始数据)绘制1002电站在6、7、8月的日变化曲线data2=df[df['光伏电站编号']==1002].set_index('时间')data2_june=data2[data2.index.month==6]#提取6月数据data2_junedata2_july=data2[data2.index.month==7]#提取7月数据data2_julydata2_august=data2[data2.index.month==8]#提取8月数据data2_august步骤4:数据规律观察-日功率变化曲线绘制1001和1002电站在6、7、8月的日变化曲线#生成月份日期序列June=pd.date_range(start='2019-06-01',end='2019-06-30')July=pd.date_range(start='2019-07-01',end='2019-07-31')August=pd.date_range(start='2019-08-01',end='2019-08-30')August步骤4:数据规律观察-日功率变化曲线绘制1001和1002电站在6、7、8月的日变化曲线#可视化时间和功率的关系fig=plt.figure(figsize=(18,15))ax=fig.add_subplot(321)plt.plot(data1[data1.index.month==6]['时'],data1[data1.index.month==6]['功率'],'o-')ax=fig.add_subplot(322)plt.plot(data1[data1.index.month==7]['时'],data1[data1.index.month==7]['功率'],'o-')ax=fig.add_subplot(323)plt.plot(data1[data1.index.month==8]['时'],data1[data1.index.month==8]['功率'],'o-')ax=fig.add_subplot(324)plt.plot(data2[data2.index.month==6]['时'],data2[data2.index.month==6]['功率'],'o-')ax=fig.add_subplot(325)plt.plot(data2[data2.index.month==7]['时'],data2[data2.index.month==7]['功率'],'o-')ax=fig.add_subplot(326)plt.plot(data2[data2.index.month==8]['时'],data2[data2.index.month==8]['功率'],'o-')#plt.legend()plt.show()步骤4:数据规律观察-日功率变化曲线现在可以说光伏电站6—8月基本上满足上面典型日(6.15)的趋势,这些曲线叠加在一起,基本没有说特别异常的情况。总体而言,存在如下结论:①在单日内,有种中午最高、0-5点与19点-24点为零值的规律;②部分日子中仍然存在功率缺失值,但总的来说缺失值并不多;③1001站功率最大值1000mW左右,1002站功率最大值800mW。6.3电力负荷预测与新能源调度电力负荷预测体系重要性:确保供需平衡,是电网安全经济运行的基础。常用方法:时间序列分析、气象耦合模型、机器学习模型。案例应用:结合高精度气象预报,实现新能源场站精准出力预测。新能源调度策略核心目标:保障电网安全稳定,最大化消纳新能源。日前调度:基于预测数据制定次日发电计划。日内与调峰:实时滚动调整计划,利用储能平抑波动。选择总辐照度、散射辐照度、气温、湿度、月、日、时等数据,并完成数据筛选#确定变量:总辐照度、散射辐照度、气温、湿度、月、日、时data=df.loc[:,['光伏电站编号','总辐照度','散射辐照度','气温','湿度','月','日','时','功率’]]#筛选数据data1=data[data['光伏电站编号']==1001].reset_index(drop=True)data2=data[data['光伏电站编号']==1002].reset_index(drop=True)步骤1:特征选择确定时间提前量:前3个小时(仅总辐照度、散射辐照度、气温、湿度和功率5个变量)data1_step1=data1.loc[:,['总辐照度','散射辐照度','气温','湿度','功率']].shift(1)data1_step1.rename(columns={'总辐照度':'总辐照度_1','散射辐照度':'散射辐照度_1','气温':'气温_1','湿度':'湿度_1','功率':'功率_1'},inplace=True)data1_step2=data1.loc[:,['总辐照度','散射辐照度','气温','湿度','功率']].shift(2)data1_step2.rename(columns={'总辐照度':'总辐照度_2','散射辐照度':'散射辐照度_2','气温':'气温_2','湿度':'湿度_2','功率':'功率_2'},inplace=True)data1_step3=data1.loc[:,['总辐照度','散射辐照度','气温','湿度','功率']].shift(3)data1_step3.rename(columns={'总辐照度':'总辐照度_3','散射辐照度':'散射辐照度_3','气温':'气温_3','湿度':'湿度_3','功率':'功率_3'},inplace=True)
data1_now=data1.loc[:,['总辐照度','散射辐照度','气温','湿度','月','日','时','功率']]
data1_all=pd.concat([data1_step1,data1_step2,data1_step3,data1_now],axis=1)data1_all.dropna(axis=0,inplace=True)data1_all.reset_index(drop=True)data1_all.insert(0,'id',1)#data2的处理方式与data1一样…#拼接数据data=pd.concat([data1_all,data2_all])data步骤1:特征选择拆分数据集为训练集和测试集,并完成模型训练#拆分数据集X=data.iloc[:,0:23]y=data.iloc[:,23]X_train,X_val,y_train,y_val=train_test_split(X,y,test_size=0.25,random_state=2022)开始构建随机森林回归模型。#构建随机森林回归模型reg=RandomForestRegressor(random_state=2022)reg.fit(X_train,y_train)print("TraingScore:%f"%reg.score(X_train,y_train))#TraingScore:0.996501print("TestingScore:%f"%reg.score(X_val,y_val))步骤2:构建随机森林回归模型并预测读取测试集并拼接测试集与训练集#读取测试集df_test=pd.read_excel('./光伏电站发电功率预测数据.xlsx',1)df_test['月']=df_test['时间'].dt.monthdf_test['日']=df_test['时间'].dt.daydf_test['时']=df_test['时间'].dt.hourdeldf_test['气象站编号']df_test步骤2:构建随机森林回归模型并预测#获取测试集中的1001光伏电站的指定特征df_test1=df_test[df_test['光伏电站编号']==1001].loc[:,['光伏电站编号','总辐照度','散射辐照度','气温','湿度','月','日','时','功率’]]#拼接1001光伏电站测试集与训练集df_test1_all=pd.concat([data1,df_test1]).reset_index(drop=True)df_test1_all#拼接1002光伏电站测试集与训练集方法与1001一样生成测试数据集1001和1002光伏电站1.2.3小时差分字段#确定时间提前量:前3个小时(仅总辐照度、散射辐照度、气温、湿度4个变量)data1_step1=df_test1_all.loc[:,['总辐照度','散射辐照度','气温','湿度','功率']].shift(1)data1_step1.rename(columns={'总辐照度':'总辐照度_1','散射辐照度':'散射辐照度_1','气温':'气温_1','湿度':'湿度_1','功率':'功率_1'},inplace=True)data1_step2=df_test1_all.loc[:,['总辐照度','散射辐照度','气温','湿度','功率']].shift(2)data1_step2.rename(columns={'总辐照度':'总辐照度_2','散射辐照度':'散射辐照度_2','气温':'气温_2','湿度':'湿度_2','功率':'功率_2'},inplace=True)data1_step3=df_test1_all.loc[:,['总辐照度','散射辐照度','气温','湿度','功率']].shift(3)data1_step3.rename(columns={'总辐照度':'总辐照度_3','散射辐照度':'散射辐照度_3','气温':'气温_3','湿度':'湿度_3','功率':'功率_3'},inplace=True)data1_now=df_test1_all.loc[:,['总辐照度','散射辐照度','气温','湿度','月','日','时','功率']]data1_all=pd.concat([data1_step1,data1_step2,data1_step3,data1_now],axis=1)data1_all.reset_index(drop=True)data1_all.insert(0,'id',1)data1_all.iloc[-4:,:]#1002光伏电站的差分方法一样步骤2:构建随机森林回归模型并预测合并测试集完成测试集的特征工程#合并测试集test_data=pd.concat([data1_all.iloc[-4:,:],data2_all.iloc[-4:,:]]).reset_index(drop=True)test_data步骤2:构建随机森林回归模型并预测预测数据并查看测试集的真实结果#进行预测,由于需要用到过去的功率数据,需要将上一个时刻预测结果作为输入数据,进行下一个时刻的预测y_pred1_1=reg.predict(test_data.iloc[0:1,0:23])test_data.loc[1:2,['功率_1']]=y_pred1_1y_pred1_2=reg.predict(test_data.iloc[1:2,0:23])test_data.loc[2:3,['功率_1']]=y_pred1_2test_data.loc[2:3,['功率_2']]=y_pred1_1y_pred1_3=reg.predict(test_data.iloc[2:3,0:23])test_data.loc[3:4,['功率_1']]=y_pred1_3test_data.loc[3:4,['功率_2']]=y_pred1_2test_data.loc[3:4,['功率_3']]=y_pred1_1y_pred1_4=reg.predict(test_data.iloc[3:4,0:23])
y_pred2_1=reg.predict(test_data.iloc[4:5,0:23])test_data.loc[5:6,['功率_1']]=y_pred2_1y_pred2_2=reg.predict(test_data.iloc[5:6,0:23])test_data.loc[6:7,['功率_1']]=y_pred2_2test_data.loc[6:7,['功率_2']]=y_pred2_1y_pred2_3=reg.predict(test_data.iloc[6:7,0:23])test_data.loc[7:8,['功率_1']]=y_pred2_3test_data.loc[7:8,['功率_2']]=y_pred2_2test_data.loc[7:8,['功率_3']]=y_pred2_1y_pred2_4=reg.predict(test_data.iloc[7:8,0:23])步骤2:构建随机森林回归模型并预测#读取答案集df_answer=pd.read_excel('./光伏电站发电功率预测数据.xlsx',2)df_answer=df_answer.sort_values(by=['光伏电站编号','时间'],ascending=[True,True])df_answer测试集评估#真实数据y_true=np.array(df_answer['功率'])#预测数据y_pred=np.concatenate([y_pred1_1,y_pred1_2,y_pred1_3,y_pred1_4,y_pred2_1,y_pred2_2,y_pred2_3,y_pred2_4])#两个光伏电站的R2print("TestingScore:%f"%r2_score(y_pred,y_true))#1001电站的R2print("R2:%f"%r2_score(y_pred[0:4],y_true[0:4]))#1001电站的R2print("RMSE:%f"%np.sqrt(mean_squared_error(y_pred[0:4],y_true[0:4])))#1002电站的R2print("R2:%f"%r2_score(y_pred[4:8],y_true[4:8]))#1002电站的RMSEprint("RMSE:%f"%np.sqrt(mean_squared_error(y_pred[4:8],y_true[4:8])))步骤2:构建随机森林回归模型并预测比较1001和1002电站观测值与预测值的差别#比较1001电站观测值与预测值的差别fig=plt.figure(figsize=(6,4))ax=fig.add_subplot(111)plt.tick_params(labelsize=15)plt.plot_date(df_answer['时间'].iloc[0:4],y_pred[0:4],'ro--',label='预测值')plt.plot_date(df_answer['时间'].iloc[0:4],y_true[0:4],'ko-',label='观测值')ax.xaxis.set_major_locator(HourLocator(byhour=range(0,24,1)))plt.legend(fontsize=15,frameon=False)plt.show()步骤2:构建随机森林回归模型并预测#比较1002电站观测值与预测值的差别fig=plt.figure(figsize=(6,4))ax=fig.add_subplot(111)plt.tick_params(labelsize=15)plt.plot_date(df_answer['时间'].iloc[4:8],y_pred[4:8],'ro--',label='预测值')plt.plot_date(df_answer['时间'].iloc[4:8],y_true[4:8],'ko-',label='观测值')ax.xaxis.set_major_locator(HourLocator(byhour=range(0,24,1)))plt.legend(fontsize=15,frameon=False)plt.show()如何消除或减少新能源不确定性对电力系统带来的影响,是新电力人身上的担子,推进以新能源为主体的新型电力系统建设,更是新一代电力人的使命。和传统化石能源不同,以“风、光”为代表的新型一次能源,收环境气候影响很多,就是“靠天吃饭”,如何预测准确是个大难题。从本案例中可以看到,通过数据分析、机器学习等方法,光伏的预测准确率确实可以达到预期,而较光伏预测更难的是风力发电,随机性更强。除此“风、光”外还有地热能、潮汐能、盐差能等一系列更加难以捉摸的新能源资源。这些问题靠传统的电力系统自动化专业是难以解决的,团结气象领域、人工智能领域以及电力系统的人才至关重要。步骤3:结论6.4用电行为分析-智能电表的数据来源数据采集机制通过内置高精度传感器,实时捕捉用户用电的细微变化。多维数据类型涵盖电压、电流、有功/无功功率、总用电量及分时电量等。高频采集能力支持秒级、分钟级或小时级采集,数据颗粒度远优于传统电表。实时数据传输利用电力线载波、GPRS或NB-IoT等技术,实时上传至采集系统。6.4.1智能电表的数据来源基础用电参数电量数据有功/无功电能,正反向、尖峰平谷多时段计量。电气量数据电压、电流、功率因数、频率等实时监测。状态数据电表运行状态、用电设备状态监测。扩展感知数据环境参数温湿度等环境指标监测。用户行为数据大功率设备启停时间、家庭负荷特性分析。外部系统交互数据电网侧数据停电告警、电压质量治理指令接收。用户侧数据电动汽车充电、分布式电源并网数据。6.4.2智能电表模型设计与数据导入KWDB数据库简介面向AIoT场景的分布式多模数据库,支持时序库与关系库的融合处理,专为智能电表等高频数据场景优化。数据模型设计关系表(静态信息)meter_info(电表),user_info(用户),area_info(区域),alarm_rules(告警)时序表(动态数据)meter_data(实时用电数据)CREATETABLE
rdb.meter_info(
meter_id
VARCHAR(50)
PRIMARYKEY,
install_date
DATE,
voltage_level
VARCHAR(20),
manufacturer
VARCHAR(50),
status
VARCHAR(20),
area_id
VARCHAR(20),
user_id
VARCHAR(50));
CREATETABLE
rdb.user_info(
user_id
VARCHAR(50)
PRIMARYKEY,
user_name
VARCHAR(100),
address
VARCHAR(200),
contact
VARCHAR(20));CREATETABLE
rdb.area_info(
area_id
VARCHAR(20)
PRIMARYKEY,
area_name
VARCHAR(100),
manager
VARCHAR(50),
region
VARCHAR(50));CREATETABLE
rdb.alarm_rules(
rule_idSERIAL
PRIMARYKEY,
rule_name
VARCHAR(100),
metric
VARCHAR(50),
operator
VARCHAR(10),
thresholdFLOAT8,
severity
VARCHAR(20),
notify_method
VARCHAR(50));CREATETABLEtsdb.meter_data(tsTIMESTAMPTZ(3)NOTNULL,voltageFLOAT8NULL,currentFLOAT8NULL,powerFLOAT8NULL,energyFLOAT8NULL,meter_idVARCHAR(50))TAGS(meter_idVARCHAR(50)NOTNULL)PRIMARYTAGS(meter_id)retentions0sactivetime1dpartitioninterval10d6.4.3智能电表业务场景示例(1)场景1:区域用电量TOP10统计SQL逻辑:时序+关系型查询-区域用电量TOP10SELECTa.area_name,SUM(md.energy)AStotal_energyFROMtsdb.meter_datamdJOINrdb.meter_infomiONmd.meter_id=mi.meter_idJOINrdb.area_infoaONmi.area_id=a.area_idGROUPBYa.area_nameORDERBYtotal_energyDESCLIMIT10;查询结果预览场景2:故障电表关联分析SQL逻辑:筛选故障状态,关联用户与区域信息SELECTmi.meter_id,u.user_name,u.contact,a.area_nameFROMrdb.meter_infomiJOINrdb.user_infouONmi.user_id=u.user_idJOINrdb.area_infoaONmi.area_id=a.area_idWHEREmi.status='Fault';查询结果预览area_name|total_energy------------+---------------Area2|1.1106e+07Area1|1.110399e+07Area100|1.110198e+07Area99|1.109997e+07Area98|1.109796e+07Area97|1.109595e+07Area96|1.109394e+07Area95|1.109193e+07Area94|1.108992e+07Area93|1.108791e+07(10rows)Time:34.692667msmeter_id|user_name|contact|area_name-----------+-----------+-------------+------------M100|User1Area1M20|User21Area21M40|User41Area41M60|User61Area61M80|User81Area81(5rows)Time:4.164833ms6.4.3智能电表业务场景示例(2)场景3:告警检测查询分析SQL核心逻辑结合告警规则表,实时检测电压、电流、功率是否超出预设阈值,筛选异常数据。查询结果预览SELECTmd.meter_id,md.ts,ar.rule_name,md.voltage,md.current,md.powerFROMtsdb.meter_datamdJOINrdb.alarm_rulesarON1=1WHERE(ar.metric='voltage'AND((ar.operator='>'ANDmd.voltage<ar.threshold)OR(ar.operator='<'ANDmd.voltage>ar.threshold)))OR(ar.metric='current'ANDmd.current>ar.threshold)OR(ar.metric='power'ANDmd.power>ar.threshold)ORDERBYmd.tsDESCLIMIT100;meter_id|ts|rule_name|voltage|current|power-----------+-------------------------------+-----------+---------+---------+--------M2|2025-04-1607:40:22.284+00:00|高压告警|221|5.1|1050
M2|2025-04-1607:40:22.284+00:00|低压告警|221|5.1|1050
M3|2025-04-1607:30:22.284+00:00|高压告警|222|5.2|1100
...省略部分中间结果
M51|2025-04-1523:30:22.284+00:00|高压告警|220|5.5|1500
M51|2025-04-1523:30:22.284+00:00|低压告警|220|5.5|1500(100rows)Time:82.002958ms6.4.3智能电表业务场景示例(2)场景4:电表概要查询SQL核心逻辑查询指定电表的基础信息,关联用户表与区域表,并统计该设备产生的数据点总数。查询结果预览SELECTmi.meter_id,mi.voltage_level,mi.status,u.user_name,a.area_name,(SELECTCOUNT(*)FROMtsdb.meter_datamdWHEREmd.meter_id=mi.meter_id)ASdata_pointsFROMrdb.meter_infomiJOINrdb.user_infouONmi.user_id=u.user_idJOINrdb.area_infoaONmi.area_id=a.area_idWHEREmi.meter_id='M1';meter_id|voltage_level|status|user_name|area_name|data_points-----------+---------------+--------+-----------+---
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 广告艺术设计核心要点
- 康复医学科肌无力康复训练方案
- 耳鼻喉科慢性鼻窦炎治疗方案
- 毕设插画设计
- 微生物培养皿设计大赛
- 肾上腺炎紧急处理措施
- 精神病学强迫症
- 肛门直肠癌根治术后饮食指导
- 儿童乐园设计
- 房地产设计产品综合性研究与应用框架
- 家具公司品质检验流程手册
- 拜访函公文格式范文8篇-20210830125246
- DLT 5293-2013 电气装置安装工程 电气设备交接试验报告统一格式
- 医疗机构放射防护管理规范
- 餐饮从业人员有害生物防治知识培训
- 人工智能对人类生活的影响与改变
- 煤矿智能供电系统技术导则
- 抑郁病诊断证明书
- 尿崩症诊疗规范内科学诊疗规范诊疗指南2023版
- 南昌大学历年高等数学(下)期末考试试卷
- 少儿美术教案课件-《中班美术-小小雨伞》
评论
0/150
提交评论