本发明涉及物联网数据处理领域,尤其涉及一种传感器数据清洗方法。
背景技术:
近年来,物联网技术发展迅猛,各种传感器也越来越多的部署到家庭,商场,公园的各个角落。越来越多的数字化信息可以方便的获取到,但同时为了有效利用这些信息,或者对这些数据进行更有效的统计,分析,需要投入更多的时间对信息进行组织和整理。数据清洗就是数据管理中首要的工作,系统中因为代码缺陷、业务定义变更、网络延时等因素会产生一些脏数据,例如在上海,假如传感器采集的空气温度是80摄氏度,这样的数据显然是有问题的。在对数据做统计分析之前,需要首先进行数据清洗,将这些脏数据先过滤掉,以确保统计分析的准确性。通过数据清洗,可以减少数据错误和数据中的不一致,检测并删除或改正将转入数据库的脏数据。
在物联网网络中,传感器的数量很多,各种传感器差异大。在传统的数据清洗方式中,系统为每个传感器定义一个数据清洗规则,当采集到数据后,根据传感器信息查找到该传感器的清洗规则,按照清洗规则进行数据清洗。这种方法是可以实时对传感器数据进行清洗,但是如果数据清洗规则更新后,前期数据也需要重新清洗。而且系统每添加一个传感器,都要为该传感器定义数据清洗规则,非常繁琐;随着传感器数量增多,数据清洗规则也逐渐变多;数据清洗规则总数不断增加后,规则查询效率也不断变低。
事实上,尽管传感器差异大,但是同种类别的传感器之间有很多相似之处,在实际系统中,如果抽象出各个传感器的相似点,可以减少规则定义,优化规则的数目,如果进一步抽象出不同种类传感器之间的关联,则更可以对传感器建立层次化的结构,使得规则的管理更加合理,提高规则查询速度。
技术实现要素:
本发明针对以上的问题,发明了一种新的传感器数据清洗方法。针对传感器的相似之处,把传感器抽象成各种角色,把各个传感器的重复的数据清洗规则统一赋给传感器角色。进一步地,发明为角色引入面向对象的概念,抽象出各类传感器角色间的关系,建立传感器角色的层次关系,使得规则的层次更清晰,消除角色间的重复规则。按照这样的方式,可以极大减少规则数目,从而解决传感器规则繁多,规则重复的问题。
为实现上述目的,本发明提出了一种物联网传感器数据清洗方法,采取以下技术方案,包括以下步骤:第一步:预定义传感器角色,建立传感器角色间的层次关系;第二步:在系统中增加传感器的时候,将传感器设置为属于一个或者多个角色;第三步:在传感器采集数据并记录到系统时,记录传感数据值,以及传感器对应的数据;第四步:执行数据清洗前,定义各个传感器角色的数据清洗规则;第五步:规则定义完成后,建立所有传感器角色的数据清洗规则链;第六步:数据清洗过程中,系统处理各个传感器数据时,根据传感器信息查找到传感器所属角色,进而查找到传感器角色的数据清洗规则链;第七步:执行数据清洗任务,完成数据清洗。
作为本发明的优化方案,第一步的详细过程包括如下特征:定义传感器角色及角色间的相互关系。特别的,角色间有层次关系,这点有点类似于面向对象的继承关系,子角色可以拥有父角色的相应数据清洗规则。
作为本发明的优化方案,第三步的详细过程包括如下步骤:在传感器采集数据并记录到系统时,记录传感数据值,以及传感器对应的数据。传感器如何将数据传送到系统不做限定,可以通过zigbee,wifi,gprs,4g等任何一种形式。
作为本发明的优化方案,第五步的详细过程包括如下步骤:根据传感器角色以及传感器角色间的关系,建立各个传感器角色的数据清洗规则链。
作为本发明的优化方案,第六步的详细过程包括如下步骤:执行数据清洗时,读取每个传感器数据,查找到该传感器对应的传感器角色,然后可以根据传感器角色,取得步骤4中的数据清洗规则链。
作为本发明的优化方案,所述的清洗规则可以使用数据库查询语言或者脚本语言进行创建和编辑。
附图说明
为了使本发明的内容更容易被清楚地理解,下面根据具体实施例并结合附图,对本发明作进一步详细的说明:
图1是数据清洗流程图。
图2是角色图。
图3是某个传感器采集数据的数据清洗规则链。
图4是某个传感器采集数据的数据清洗规则链。
具体实施方式
下面结合附图和实施例对
本技术:
技术方案做进一步详细说明,以下实施例不构成对本申请的限定。
本申请提出了一种海量数据清洗方法,如图1所示,包括步骤:
1.定义传感器角色及角色间的相互关系。特别的,角色间有层次关系,这点有点类似于面向对象的继承关系,子角色可以拥有父角色的相应数据清洗规则。附图2定义了几个角色以及这几个角色间的关系示例。如附图2中所示,‘二级子角色1’是‘一级子角色2’的子角色,‘一级子角色2’是‘根角色’的子角色。定义规则后,‘一级子角色2’将会自动拥有‘根角色’的所有数据清洗规则,同样地,‘二级子角色1’将会自动拥有‘一级子角色2’的所有数据清洗规则;
2.向系统添加传感器时,为传感器分配角色,一个传感器有可能属于多个角色。比如添加传感器sensor_a,并将sensor_a的传感器角色定义为‘二级子角色1’;
3.在传感器采集数据并记录到系统时,记录传感数据值,以及传感器对应的数据;
4.数据清洗前,定义各个传感器角色的数据清洗规则,每个传感器角色可能定义有多条数据清洗规则。比如将各个传感器角色的数据清洗规则定义成附图3所示:‘二级子角色1’拥有数据清洗规则a,数据清洗规则b,数据清洗规则c,数据清洗规则d……
5.根据传感器角色以及传感器角色间的关系,建立各个传感器角色的数据清洗规则链。比如传感器角色‘二级子角色1’的数据清洗规则链是‘二级子角色1’,‘一级子角色2’,‘根角色’的所有规则的总和。‘二级子角色1’的规则链如附图4所示;
6.执行数据清洗时,读取每个传感器数据,查找到该传感器对应的传感器角色,然后可以根据传感器角色,取得步骤5中的数据清洗规则链。比如如果某一条数据是sensor_a的传感器数据,则该数据对应的传感器角色是‘二级子角色1’,则相应的数据清洗规则链如附图4所示。
7.针对传感器数据,依次执行所有数据清洗规则,执行数据清洗任务,完成数据清洗。
以上显示和描述了本发明的基本原理、主要特征和优点。以上实施实例仅用以描述本发明的技术方案而不是对技术方法进行限制,本发明在应用上可延伸为其他的修改、变化和应用,并且认为所有这样的修改、变化和应用都落入要求保护的本发明范围内。
以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。