专利名称::一种基于模板对异构污染源集成数据的解析方法一种基于模板对异构污染源集成数据的解析方法
技术领域:
本发明属于异构污染源集成数据处理
技术领域:
,涉及一种基于模板对异构污染源集成数据的解析方法。
背景技术:
:污染源在线自动监控(监测)系统由自动监控监测仪器设备和监控中心组成,一个监测中心下有许多个监测点,监控中心与监测点的关系为上位机与现场机的关系。污染源在线自动监控(监测)系统中,需要采集多种污染源,多种设备采集的数据。因此,需要对异构污染源数据进行集成,采用统一的数据传输格式进行表示然后传输。集成数据被采集后,系统对数据按照用户的需求进行解析,按照污染源的类型,数据的类别等进行分类保存。异构污染源数据集成使用数据采集仪进行完成,集成数据使用的是污染源在线自动监控(监测)系统数据传输标准(HJ/T212-2005)。即在监控点,数据采集仪从现场机(各种检测设备)抽取需要的数据,集成转化为HJ/T212-2005标准的数据,然后传输到监控中心,监控中心将采集的数据进行解析存储以及相关的统计。污染源在线自动监控(监测)系统数据传输标准(HJ/T212-2005)是我国颁布的污染源在线自动监控(监测)系统用于异构数据源数据集成传输的标准,规定了数据通讯的数据结构。数据结构由包头,数据段长度,数据段,CRC校验,包尾组成。其中数据段用于数据和命令的传输。数据段由请求编号(QN),总包号(PNUM),包号(PNO),系统编号(ST),命令编号(CN),访问密码(PW),设备唯一标识(MN),是否拆分包及应答标记(Flag)和指令参数(CP)组成。在数据传输中,主要的数据和指令在指令参数(CP)中。其中ST,CN能够用于对数据的类别划分。如ST=32;CN=2011表示采集的是地表水污染源的实时数据。在通讯数据中的字段与其值用“=”连接。在数据段中,同一个项目的数据不同分类值间用“,,,分隔,不同项目数据间用“;”。数据传输标准(耵八212-200幻对数据类型,属性字段名称,字段值做了具体规定;对污染物,命令等做了编码。在采集的数据中,有的项目数据中的属性字段对整个数据段起作用,如数据段中CP包含的属性字段DataTime,表示的是数据采集的时间,因此定义为全局属性字段。有的项目数据中属性字段只在本项目内起作用,如CP包含的属性字段Rtd,描述的是某一种元素的实时测量数据,作用范围是每一个项目数据内部,定义为局部属性字段。由于需要根据用户的需求对数据进行解析分类,而用户的需求具有多样性和可变性的特点,即不同的用户关注不同的数据,具有不同的需求,同时,用户的需求随着时间,具有的情况进行变化和拓展。因此,对异构污染源集成数据的解析需要适应用户需求多样性和可变性的特点,要求方法具有较强的通用性,即当用户需求发生变化时,数据解析方法不能变化。
发明内容本发明解决的问题在于提供一种基于模板对异构污染源集成数据的解析方法,根据模板对数据进行解析,用户需求变时,只需要添加或修改模板,,从而使方法具有很强的自适应性,通用性和拓展性。本发明是通过以下技术方案来实现一种基于模板对异构污染源集成数据的解析方法,包括以下步骤1)根据用户的需求,在异构污染源集成数据处理器中进行以下构建构建用户表,每个用户表包含多个域,每个域存储异构污染源集成数据中一个属性字段的值;构建包含多个属性映射的模板,模板记录异构污染源集成数据中的属性字段与对应的用户表中的域的映射关系,一个属性字段与用户表中的域的对应关系成为一个属性映射;构建模板表,模板表是模板的集合,保存每个用户表唯一对应的模板;构建数据映射表,数据映射表保存异构污染源集成数据与将要被保存到的用户表的映射关系,以及用户表和模板的唯一映射,数据映射表中的主键值索引为集成数据中选定的主属性字段的值;2)在数据进行解析时,首先从待解析的异构污染源集成数据中读取主属性字段的值生成数据映射表中的主键值索引,然后根据主键值索引查找数据映射表保存的异构污染源集成数据所对应的模板的集合,以及对应的将被保存的用户表,再根据模板对异构污染源集成数据进行解析,从异构污染源集成数据中获取对应属性字段的值,待数据解析完成后,将解析好的数据存储到对应的用户表中或将数据进行显示。所述的模板中,一个属性映射由四元组组成,分别为属性字段名,对应的用户表中的域名,属性字段的作用域以及属性字段值的数据类型。所述的数据映射表包括key、tables_name和templates_name,其中key为主键值索引,从异构污染源集成数据中选择一个或者多个全局属性字段组成;通过key索引到异构污染源集成数据对应的用户表以及用于解析的模板;tables_name记录异构污染源集成数据对应存储的用户表的表名;templates_name记录tablesjame用户表对应用于数据解析的模板,多个模板按照用户表的先后顺序依次连接。在数据进行解析时,按照以下步骤进行Stepl从一条集成数据Data中取选定的用于区别数据类别的主字段属性的值,生成数据映射表的主键值索引Key;St印2根据Key,从数据映射表中查找解析数据对应的用户表集和用户表对应的模板集;一条集成数据对应的用户表为一个或多个,一个用户表对应一个模板,确定模板集中元素的数量tpN;St印3将Data中的所有项目数据进行分离得到项目数据集Cell,确定Cell中元素的数量cellN;St印4从模板集取元素"Templatei,将"Templatei中属性映射分离得到属性映射集Tuple,确定Tuple元素数量tuN;St印5从项目数据集Cell中取元素CelljSt印6从属性映射集Tuple中取元素Tuplek,在Cellj查找对应的属性的值,如找到返回属性值Val,否则返回Val为NULL值;St印7:将Va保存到数据集合Ret[i][jHk]中,k加1,若k<tuN,转入乂印6;否则,进入下一步;St印8:j加1,若j<cellN,转入St印5;否则,进入下一步;St印9i加1,若i<tpN,转入乂印4;否则,进入下一步;SteplO将Ret中解析的数据按照数据库的格式和规范存储到对应的用户表中。与现有技术相比,本发明具有以下有益的技术效果本发明提供的基于模板对异构污染源集成数据的解析方法,首先从集成数据中读取主属性字段的值生成数据映射表中的主键值索引,然后根据主键值索引查找集成数据对应保存的用户表以及用户表对应的数据解析模板,最后根据模板对数据进行解析,将解析好的数据存储到对应的用户表中或将数据进行显示。在实际应用中,当用户表增加时,只需要在模板表中添加上对应的模板,在数据映射表中添加上集成数据与用户表的映射即可。当用户表变化或拓展时,只需要修改用户表对应的模板,在数据映射表中修改集成数据与用户表的映射即可。即用户需求变时,无须修改数据解析方法,只需要简单地在模板表中添加或修改模板,在数据映射表中添加或修改集成数据与用户表映射即可,从而具有很强的自适应性,通用性和拓展性。图1为基于模板对异构污染源集成数据的解析方法的示意图2为基于模板对异构污染源集成数据的解析方法的流程图。具体实施方式下面结合具体的实施例对本发明做进一步的详细说明,所述是对本发明的解释而不是限定。为了适应用户需求多样性以及变化性的要求,提出基于模板对异构污染源集成数据的解析方法,在异构污染源集成数据处理器中进行以下构建将根据用户需求设计的用于存储数据的表定义为用户表(USERTABLES),每个用户表包含多个域,每个域存储异构污染源集成数据中一个属性字段的值。建立一个模板表(TEMPLATE。,用于保存模板,模板记录异构污染源集成数据中的属性字段与对应的用户表中的域的映射关系,一个属性字段与用户表中的域的对应关系成为一个属性映射;构建模板表,模板表是模板的集合,保存每个用户表唯一对应的模板。建立一个表保存数据跟用户表的映射关系,描述的是一条集成数据根据用户的需求需要保存到哪几个用户表中,定义为数据映射表(DATA_T0_TABLES);数据映射表保存异构污染源集成数据与将要被保存到的用户表的映射关系,以及用户表和模板的唯一映射,数据映射表中的主键值索引为集成数据中选定的主属性字段的值。在数据进行解析时,首先从待解析的异构污染源集成数据中读取主属性字段的值生成数据映射表中的主键值索引,然后根据主键值索引查找数据映射表保存的异构污染源集成数据所对应的模板的集合,以及对应的将被保存的用户表,再根据模板对异构污染源集成数据进行解析,从异构污染源集成数据中获取对应属性字段的值,待数据解析完成后,将解析好的数据存储到对应的用户表中或将数据进行显示。参见图1,下面分别进行详细描述1、用户表(USERTABLES)在实际的数据解析与存储中,不同的用户关注的重点不同,所需的数据也不仅相同,因此,需要解析和存储数据中的字段各不相同。例如,根据用户的需求设计的如下用户表Tablel(Ith—DataTime,2th—B01)Table2(lth—DataTime,2th—Rtd,3th—Flag)Tablel中的第一个域存储数据中属性字段DataTime的值,第二个域存储属性字段BOl的值。Table2中的第一个域也是存储属性数据中字段DataTime的值,第二个域存储数据中所有Rtd的值,第三个域存储Flag的值。实际应用中,用户的需求可能会改变或拓展,从而用户表也随之改变如下Table2(lth—DataTime,2th—Rtd,3th—Flag,4th—MN)随着用户需求的改变,Table2进行了拓展,Table2中加入一个新的域用于保存数据中属性字段丽的值。2、数据映射及数据映射表数据映射记录集成数据与数据解析后将要被保存的用户表的对应关系,一条集成数据中的数据解析后可以保存到多个用户表中,因此数据映射中记录的用户表可以有多个,同时也记录用户表对应的用于解析数据的模板集合。保存数据与用户表的映射关系的数据映射表如下data_to_tables=(key,tables_name,templates_name)key={attrgl,...,attrgm}tables_name=Hable1,...,tabIeJtemplates_name=Hemplate1,...,templatej注attrg:异构污染源集成数据中的全局属性字段值key为主键值索引,从异构污染源集成数据中选择一个或者多个全局属性字段(attrg)组成,集成数据中被选择组成key成的全局属性字段称之为主属性字段。在数据映射表中,通过key可以索引到集成数据对应的用户表以及用于数据解析的模板;tablemame记录集成数据对应存储的用户表的表名,可以有一个或者多个,多个表名用“,”分隔。templatesjame记录tablemame用户表对应用于数据解析的模板,多个模板按照用户表的先后顺序依次用“,”连接。3、模板及模板表模板表保存每个用户表唯一对应的模板,模板记录集成数据中属性字段与对应的用户表中的域的映射关系。在模板中,一个属性字段与用户表中的域的对应关系成为一个属性映射,一个模板中包含一个或多个属性映射。一个属性映射由四元组组成,分别为属性字段名,对应的用户表中的域名,属性字段的作用域以及属性字段值的数据类型。模板的构建如下Template=(Qtuple1,Qtuple2,…,QtupleJQtuple1=(Attribute,Field,Scope,Datatype)注Attribute:集成数据中的属性字段Field:用户表中的域名Scope描述属性字段的作用域,分为全局(GB)和局部(LC)Datatype:描述属性字段的值的数据类型,包括整形(I),浮点型(F),字符串型⑶等实施例1在集成数据解析时,以下面具体的数据为例假设系统只采集废水的实时数据与分钟数据,废气的实时数据与分钟数据,具体采集的4类集成数据如下废水实时数据ST=32;CN=2011;Pff=123456;MN=88888880000276;CP=MDataTime=20090529101716;BOl-Rtd=200;OOl-Rtd=2.5,001-Flag=N;002-Rtd=2.5,002-Flag=N;003-Rtd=2.5,003-Flag=N&&废水分钟数据“ST=32;CN=2051;Pff=100000;MN=88888880000276;CP=MDataTime=20090529101717;BOl-Cou=200;OOl-Cou=2.5,001-Min=1.1,OOl-Avg=1.1,OOl-Max=1.1;002-Cou=2.5,002-Min=1.1,002-Avg=1.1,002-Max=1.1;003-Cou=2.5,003-Min=1.1,003-Avg=1.1,003-Max=1.1&&;废气实时数据ST=31;CN=2011;Pff=123456;MN=88888880030275;CP=MDataTime=20090529101712;B02-Rtd=200;SOl-Rtd=2.5,SOl-ZsRtd=1.2;S02-Rtd=2.5,502-ZsRtd=1.2;S035-Rtd=2.5,S03_ZsRtd=1.2&&;废气分钟数据ST=31;CN=2051;Pff=100000;MN=88888880030275;CP=MDataTime=20090529101713;B02_Cou=200;SOl-Cou=2.5,SOl-Min=1.1,SOl-Avg=1.1,SOl-Max=1.1,SOl-ZsMin=1.1,SOl-ZsAvg=1.1,SOl-ZsMax=1.1;S02_Cou=2.5,S02_Min=1.1,S02-Avg=1.1,S02-Max=1.1,S02_ZsMin=1.1,S02-ZsAvg=1.1,S02_ZsMax=1.1;S03-Cou=2.5,S03-Min=1.1,S03_Avg=1.1,S03_Max=1.1,S03-ZsMin=1.1,503-ZsAvg=1.1,S03-ZsMax=1.1&&用户表根据用户的需求,将4类数据中的属性值存储到不同的表中,例如,用户需要存储废水实时数据,废水污染物实时数据,废水分钟数据,废水污染物分钟数据,废气实时数据,废气污染物实时数据,废气分钟数据,废气污染物分钟数据共八种数据,具体数据库的表设计以及数据库表的域字段与集成异构数据中的属性对应如下废水实时数据表(WasteWaterRtd)WasteffaterRtd(mn,data__;ime,waste_water_rtd)->Data[MN,DataTime,BOl-Rtd]废水污染物实时数据表(WasteWaterPollutantRtd)WasteffaterPollutantRtd(mn,data_time,pollutant_code,rtd)->Data[MN,DataTime,001or002or003,Rtd]废水分钟数据表(WasteWaterMinute)WasteffaterMinute(mn,data_time,waste_water_cou)->Data[MN,DataTime,BOl-Cou]废水污染物分中数据表(WasteffaterPollutantMinute)WasteffaterPollutantMinute(mn,data_time,pollutant_code,cou,min,avg,max)->Data[MN,DataTime,001or002or003,Cou,Min,Avg,Max]废气实时数据表(WasteGasRtd)WasteGasRtd(mn,data_time,waste_gas_rtd)->Data[MN,DataTime,B02_Rtd]废气污染物实时数据表(WasteGasPollutantRtd)WasteGasPollutantRtd(mn,data_time,pollutant_code,rtd)->Data[MN,DataTime,S01orS02orS03,Rtd]废气分钟数据表(WasteGasMinute)WasteGasMinute(mn,data_time,waste_gas_cou)->Data[MN,DataTime,B02_Cou]废气污染物分钟数据表(WasteGasPo1IutantMinute)WasteGasPollutantMinute(mn,data_time,pollutant_code,cou,min,avg,max,zsmin,zsavg,zsmax)->Data[MN,DataTime,S01orS02orS03,Cou,Min,Avg,Max,ZsMin,ZsAvg,ZsMax]数据映射及数据映射表根据算法,在明确数据类型以及用户表后,建立数据到用户表的数据映射,保存在数据映射表data_t0_tableS表中。在异构集成数据中,通过ST与CN的值,可以区分废水实时集成数据,废水分钟集成数据,废气实时集成数据,废气分钟集成数据这四类异构集成数据。则data_t0_tableS中数据具体如下KeyTablesTemplates32,2011PollutedWaterRtd,WasteWaterPollutantRtdTemplate1,Tempiate232,2051WasteWaterMinute5WasteWaterPollutantMinuteTempiate3,Tempiate431,2011WasteGasRtd,WasteGasPollutantRtdTempiate5,Tempiate631,2051WasteGasMinute,WasteGasPollutantRtdTemplate7,Template8模板以及模板表如下权利要求1.一种基于模板对异构污染源集成数据的解析方法,其特征在于,包括以下步骤1)根据用户的需求,在异构污染源集成数据处理器中进行以下构建构建用户表,每个用户表包含多个域,每个域存储异构污染源集成数据中一个属性字段的值;构建包含多个属性映射的模板,模板记录异构污染源集成数据中的属性字段与对应的用户表中的域的映射关系,一个属性字段与用户表中的域的对应关系成为一个属性映射;构建模板表,模板表是模板的集合,保存每个用户表唯一对应的模板;构建数据映射表,数据映射表保存异构污染源集成数据与将要被保存到的用户表的映射关系,以及用户表和模板的唯一映射,数据映射表中的主键值索引为集成数据中选定的主属性字段的值;2)在数据进行解析时,首先从待解析的异构污染源集成数据中读取主属性字段的值生成数据映射表中的主键值索引,然后根据主键值索引查找数据映射表保存的异构污染源集成数据所对应的模板的集合,以及对应的将被保存的用户表,再根据模板对异构污染源集成数据进行解析,从异构污染源集成数据中获取对应属性字段的值,待数据解析完成后,将解析好的数据存储到对应的用户表中或将数据进行显示。2.如权利要求1所述的基于模板对异构污染源集成数据的解析方法,其特征在于,所述的模板中,一个属性映射由四元组组成,分别为属性字段名,对应的用户表中的域名,属性字段的作用域以及属性字段值的数据类型。3.如权利要求1所述的基于模板对异构污染源集成数据的解析方法,其特征在于,所述的数据映射表包括key、tables_name和templates_name,其中key为主键值索引,从异构污染源集成数据中选择一个或者多个全局属性字段组成;通过key索引到异构污染源集成数据对应的用户表以及用于解析的模板;tables_name记录异构污染源集成数据对应存储的用户表的表名;templates_name记录tablesjame用户表对应用于数据解析的模板,多个模板按照用户表的先后顺序依次连接。4.如权利要求1所述的基于模板对异构污染源集成数据的解析方法,其特征在于,在数据进行解析时,按照以下步骤进行Stepl从一条集成数据Data中取选定的用于区别数据类别的主字段属性的值,生成数据映射表的主键值索引Key;St印2根据Key,从数据映射表中查找解析数据对应的用户表集和用户表对应的模板集;一条集成数据对应的用户表为一个或多个,一个用户表对应一个模板,确定模板集中元素的数量tpN;St印3将Data中的所有项目数据进行分离得到项目数据集Cell,确定Cell中元素的数量cellN;St印4从模板集取元素Templatei,将Templatei中属性映射分离得到属性映射集Tuple,确定Tuple元素数量tuN;St印5从项目数据集Cell中取元素CelljSt印6从属性映射集Tuple中取元素Tuplq,在Cellj查找对应的属性的值,如找到返回属性值Val,否则返回Val为NULL值;St印7=Ret[i][j][k]=Val,k加1,若让<tuN,转入St印6;否则,进入下一步;St印8:j加1,若j<cellN,转入St印5;否则,进入下一步;St印9:i加1,若i<tpN,转入St印4;否则,进入下一步;SteplO将Ret中解析的数据按照数据库的格式和规范存储到对应的用户表中。全文摘要本发明公开了一种基于模板对异构污染源集成数据的解析方法,首先从集成数据中读取主属性字段的值生成数据映射表中的主键值索引,然后根据主键值索引查找集成数据对应保存的用户表以及用户表对应的数据解析模板,最后根据模板对数据进行解析,将解析好的数据存储到对应的用户表中或将数据进行显示。用户需求变时,无须修改数据解析方法,只需要简单地在模板表中添加或修改模板,在数据映射表中添加或修改集成数据与用户表映射即可,从而具有很强的自适应性,通用性和拓展性。文档编号G06F17/30GK102521292SQ201110387870公开日2012年6月27日申请日期2011年11月29日优先权日2011年11月29日发明者何金星,崔凯楠,常飞,曾柯,朱利,米玥,谢海江,鲍帅申请人:西安交通大学