CN116561184B - 一种数据查询方法、电子设备、服务器及数据查询系统 - Google Patents

一种数据查询方法、电子设备、服务器及数据查询系统 Download PDF

Info

Publication number
CN116561184B
CN116561184B CN202310845530.5A CN202310845530A CN116561184B CN 116561184 B CN116561184 B CN 116561184B CN 202310845530 A CN202310845530 A CN 202310845530A CN 116561184 B CN116561184 B CN 116561184B
Authority
CN
China
Prior art keywords
event
data
sample
events
attribute
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202310845530.5A
Other languages
English (en)
Other versions
CN116561184A (zh
Inventor
张能斌
杨威
肖福龙
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Honor Device Co Ltd
Original Assignee
Honor Device Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Honor Device Co Ltd filed Critical Honor Device Co Ltd
Priority to CN202310845530.5A priority Critical patent/CN116561184B/zh
Publication of CN116561184A publication Critical patent/CN116561184A/zh
Application granted granted Critical
Publication of CN116561184B publication Critical patent/CN116561184B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24553Query execution of query operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2282Tablespace storage structures; Management thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/21Design or setup of recognition systems or techniques; Extraction of features in feature space; Blind source separation
    • G06F18/214Generating training patterns; Bootstrap methods, e.g. bagging or boosting

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Software Systems (AREA)
  • Computational Linguistics (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Evolutionary Biology (AREA)
  • Evolutionary Computation (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请提供一种数据查询方法、电子设备、服务器及数据查询系统,能够通过设置属性为对象的事件内容字段来存储每个类型的设备事件的所有描述事件内容的特征数据,使得不同事件类型的设备事件能够存储于同一原始数据表中,这样便减少了跨表查询以及关联计算,能够解决因果样本构建效率低的问题,提高因果样本构建效率。

Description

一种数据查询方法、电子设备、服务器及数据查询系统
技术领域
本申请涉及数据处理技术领域,尤其涉及一种数据查询方法、电子设备、服务器及数据查询系统。
背景技术
用户使用电子设备的过程中,用户行为使得电子设备的窗口内容、网络状态、地理位置、运动状态等发生变化,产生了设备事件,设备事件包括窗口内容变化事件、网络状态变化事件、地理位置变化事件、运动状态变化事件等。上述设备事件之间可能存在因果关系,即一些设备事件可能导致另一些设备事件发生。以用户的地理位置发生变化后,用户执行了付款操作为例,地理位置变化事件会导致窗口内容变化事件发生,该地理位置变化事件为原因事件,该窗口内容变化事件为结果事件,原因事件和结果事件构成了因果样本。从海量设备事件中提取具有因果关系的设备事件构成因果样本,能够用于训练目标事件预测模型。目标事件预测模型基于电子设备上已发生的原因事件预测电子设备上将发生的结果事件,为电子设备侧提供参考,使电子设备侧提供与该结果事件相关的推送服务。
目前,采用通用的数据模型,如结构化查询语言(Structured Query Language,SQL)数据库模型构建设备事件中的各特征的属性,由于不同事件类型的设备事件的事件内容不同,比如窗口内容变化事件包含三个特征来反映窗口内容变化,网络状态变化事件包括五个特征来反映网络状态变化,所以SQL数据库模型将不同事件类型的设备事件分开存储,比如窗口内容变化事件存储于数据表1中,网络状态变化事件存储于数据表2中。这就导致如果一个因果样本中同时涉及查询窗口内容变化事件和网络状态变化事件,则需要跨表查询以及关联计算,导致因果样本的构建效率较低。
发明内容
本申请提供一种数据查询方法、电子设备、服务器及数据查询系统,能够通过设置属性为对象的事件内容字段来存储每个类型的设备事件的所有描述事件内容的特征数据,使得不同事件类型的设备事件能够存储于同一原始数据表中,这样便减少了跨表查询以及关联计算,能够解决因果样本构建效率低的问题,提高因果样本构建效率。
第一方面,本申请提供一种数据查询方法,应用于电子设备或服务器,电子设备或服务器包括待训练的目标事件预测模型,目标事件预测模型用于基于电子设备上已发生的设备事件预测电子设备上将发生的设备事件以触发电子设备进行信息推送,设备事件包括电子设备按事件类型划分的窗口内容变化事件、网络状态变化事件、地理位置变化事件以及运动状态变化事件中的至少一种。该方法中,首先,电子设备或服务器获取原始数据表,原始数据表存储有设备事件结构化处理后得到的多个特征项。多个特征项包括:设备事件对应的用户标识、设备事件的事件发生时刻以及设备事件的事件内容。事件内容包含至少一个特征数据,且不同事件类型的设备事件的事件内容中包含的特征数据的数据类型不同。其中,用户标识以字符串为存储类型存储于原始数据表的用户标识字段里,事件发生时刻以时间戳为存储类型存储于原始数据表的事件发生时刻字段里,事件内容以对象为存储类型存储于原始数据表的事件内容字段里。然后电子设备或服务器获取查询语句,查询语句用于从原始数据表中查询组成目标因果样本的设备事件。若查询语句指示查询事件内容字段中的至少一个特征数据,则电子设备或服务器先根据事件内容字段查询事件内容,再从事件内容中查询至少一个特征数据,得到包含至少一个特征数据的设备事件。
本方案中,设备事件存储于原始数据表中,原始数据表的特点是:其每个字段存储的不是单独的特征数据,而是会在一个字段中存储多个特征数据。比如事件内容字段中包括了多个数据类型不同的特征数据。由于不同事件类型的设备事件包括的特征数据的数量和数据类型各不相同,所以将这些特征数据存储于同一个字段中,便能够将不同事件类型的设备事件都存储于同一张数据表中。而为了能够查询事件内容中的各个特征数据,电子设备或服务器会先查询事件内容,再查询事件内容中的各个特征数据。相比于分别查询各个特征数据,再通过跨表关联特征数据相比,这种查询方式简化了查询步骤以及查询计算量,因此查询效率较高。
在第一方面的另一种可能的设计方式中,查询语句包括查询列表和至少一个判断式,查询列表包括至少一个待查询特征项的名称以及每个待查询特征项中至少一个待查询特征数据的名称,至少一个待查询特征项包括用户标识、事件发生时刻、事件内容中的至少一项。至少一个判断式包括第一判断式和/或第二判断式,第一判断式用于指示判断事件内容是否存在,第二判断式用于指示判断特征项与常数的大小关系。上述先根据事件内容字段查询事件内容,再从事件内容中查询至少一个特征数据,得到包含至少一个特征数据的设备事件,包括:从原始数据表中查询待查询事件内容的名称指示的事件内容字段中的至少一个第一事件内容,再从第一事件内容中查询待查询特征数据的名称对应的至少一个第一特征数据。从至少一个第一特征数据中筛选符合至少一个判断式的至少一个目标特征数据,得到包括至少一个目标特征数据的设备事件。
该设计方式下,在查询到第一特征数据后,还对第一特征数据做了筛选操作,即从第一特征数据中筛选符合至少一个判断式的目标特征数据,得到包含至少一个特征数据的设备事件,通过筛选操作能够将符合条件的设备事件筛选出来。
在第一方面的另一种可能的设计方式中,在得到包含至少一个特征数据的设备事件之后,该方法还包括:从包含至少一个特征数据的设备事件中查询设备事件的事件发生时刻靠近预测时刻的N个设备事件,其中,N为样本数量上限值。
该设计方式下,通过样本数量上限值能够控制输出的设备事件的数量,避免查询得到的设备事件太多浪费计算资源。样本数量上限值剔除预测时刻前较早发生的设备事件,只保留与预测时刻前后较接近的时刻发生的设备事件,与预测时刻前后较接近的时刻发生的设备事件对预测时刻预测出准确的结果事件的作用大。
在第一方面的另一种可能的设计方式中,该方法还包括:将N个设备事件存储到数据集中,数据集中的N个设备事件被用于训练待训练的目标事件预测模型。
在第一方面的另一种可能的设计方式中,在获取原始数据表之前,该方法还包括:获取用于训练事件预测模型的多个因果样本的结构特点信息;其中,每个因果样本包括多个设备事件,每个因果样本的结构特点信息包括:因果样本中的每个设备事件结构化处理后得到多个特征项;多个特征项包括:设备事件的用户标识、设备事件的事件发生时刻以及设备事件的事件内容。事件内容包含至少一个特征数据,且不同事件类型的设备事件的事件内容中包含的特征数据的数据类型不同。根据因果样本的结构特点信息,设置因果样本的属性;其中,因果样本中,用户标识的属性是字符串,事件发生时刻的属性是时间戳以及事件内容的属性是对象;其中,因果样本的属性用于确定设备事件对应的多个特征项中的每个特征项的存储类型。按照设置的因果样本的属性,将电子设备采集的设备事件存储至原始数据表中。
其中,原始数据表包括多个字段,多个字段包括用户标识字段、事件发生时刻字段和事件内容字段,用户标识字段用于存储属性是字符串的用户标识,事件发生时刻字段用于存储属性是时间戳的事件发生时刻,事件内容字段用于存储属性是对象的事件内容。
该设计方式下,将包含多个不同数据类型的特征数据的事件内容的属性设置为对象,使得事件内容中的各个特征数据被关联。那么从原始数据表中查询事件内容中的多个特征数据时,不必分别查询各个特征数据再对查询结果做关联计算,而是先查询事件内容,再查询事件内容中的各个特征数据。因此在构建包含事件内容的因果样本时,构建效率更高。
在第一方面的另一种可能的设计方式中,在设置因果样本的属性之前,该方法还包括:从每个设备事件中获取描述事件内容的多个特征数据的数据类型。上述事件内容的属性是对象,包括:如果存在任一设备事件中,描述事件内容的多个特征数据中任意两个特征数据的数据类型不同,则以对象作为每个设备事件的事件内容的属性。
在第一方面的另一种可能的设计方式中,事件内容为Wi-Fi状态事件内容,描述Wi-Fi状态事件内容的特征数据包括Wi-Fi名称、Wi-Fi事件类型、Wi-Fi强度和Wi-Fi基础服务集。上述从设备事件中获取描述事件内容的多个特征数据的数据类型,包括:获取Wi-Fi名称、Wi-Fi事件类型、Wi-Fi强度和Wi-Fi基础服务集的数据类型,得到Wi-Fi名称对应的数据类型为时间戳,Wi-Fi事件类型对应的数据类型为字符串,Wi-Fi强度对应的数据类型为整型以及Wi-Fi基础服务集的数据类型为字符串。上述如果存在任一设备事件中,描述事件内容的多个特征数据中任意两个特征数据的数据类型不同,则以对象作为每个设备事件的事件内容的属性,包括:Wi-Fi状态事件的Wi-Fi名称、Wi-Fi事件类型、Wi-Fi强度和Wi-Fi基础服务集中,Wi-Fi名称的数据类型、Wi-Fi事件类型的数据类型和Wi-Fi强度的数据类型各不相同,确定以对象作为设备事件的Wi-Fi状态事件内容的属性。
以设备事件的事件内容为Wi-Fi状态事件内容为例,先获取事件内容中各个特征数据的数据类型,在特征数据有多个,且存在任意两个特征数据的数据类型不同的情况下,将Wi-Fi状态事件内容的属性确定为对象。那么Wi-Fi状态事件内容中的Wi-Fi名称、Wi-Fi事件类型、Wi-Fi强度和Wi-Fi基础服务集可被存储于属性为对象的Wi-Fi状态事件内容字段中,在查询任一特征数据时,先查询Wi-Fi状态事件内容字段,再查询Wi-Fi状态事件内容字段中的某个特征数据使得查询效率更高。
在第一方面的另一种可能的设计方式中,该方法还包括:为特征项设置常数和操作符,常数和操作符用于与特征项组成判断式。
除了根据因果样本的结构特点构建各个特征项的属性之外,服务器还为各个特征项设置了常数和操作符,用于和特征项组成判断式,通过判断式可以对原始数据表中的数据进行筛选。
第二方面,本申请提供一种电子设备,包括:处理器,和用于存储处理器可执行指令的存储器,该处理器被配置为执行指令时,使得电子设备实现如第一方面及其任一种可能的设计方式所述的方法。
第三方面,本申请提供一种服务器,包括:处理器、通信模块和用于存储处理器可执行指令的存储器,服务器通过通信模块接收电子设备发送的设备事件,该处理器被配置为执行指令时,使得服务器实现如第一方面及其任一种可能的设计方式所述的方法。
第四方面,本申请提供一种数据查询系统,包括:服务器和电子设备,服务器用于向电子设备发送采样任务。电子设备用于向服务器发送根据采样任务采集的设备事件。服务器用于在接收到电子设备发送的设备事件之后,执行如第一方面及其任一种可能的设计方式所述的方法。
第五方面,本申请提供一种计算机可读存储介质,包括计算机指令,当计算机指令在电子设备或服务器上运行时,使得电子设备或服务器执行如第一方面及其任一种可能的设计方式所述的方法。
第六方面,本申请提供一种计算机程序产品,当所述计算机程序产品在电子设备或服务器上运行时,使得电子设备或服务器执行如第一方面及其任一种可能的设计方式所述的方法。
可以理解地,上述提供的第二方面的电子设备,第三方面的服务器,第四方面的数据查询系统,第五方面的计算机可读存储介质,第六方面的计算机程序产品的有益效果,可参考第一方面及其任一种可能的实施方式中的有益效果,此处不再赘述。
附图说明
图1为本申请实施例提供的一种设备事件的示意图;
图2为本申请实施例提供的一组界面示意图;
图3为本申请实施例提供的一种结构化处理的流程图;
图4为本申请实施例提供的一种对特征数据项进行标注的示意图;
图5为本申请实施例提供的一种因果样本的示意图;
图6为本申请实施例提供的一组因果样本应用场景示意图;
图7为本申请实施例提供的一种数据处理方法的示意图;
图8为本申请实施例提供的一种数据处理系统的示意图;
图9为本申请实施例提供的一种电子设备的硬件结构示意图;
图10为本申请实施例提供的一种服务器的硬件结构示意图;
图11为本申请实施例提供的一种数据处理系统的软件结构示意图;
图12为本申请实施例提供的一种元模型的示意图;
图13为本申请实施例提供的一种逻辑模型的示意图;
图14为本申请实施例提供的一种建模方法的流程图;
图15为本申请实施例提供的一种映射关系的示意图;
图16为本申请实施例提供的一种数据查询方法的流程图;
图17为本申请实施例提供的一种因果样本构建方法的流程图;
图18为本申请实施例提供的另一种因果样本构建方法的流程图;
图19为本申请实施例提供的一种构建样本过程的示意图;
图20为本申请实施例提供的一种构建样本过程的流程图;
图21为本申请实施例提供的一种选取样本的流程图;
图22为本申请实施例提供的一种对简单表达式实现过滤的流程图;
图23为本申请实施例提供的一种对对象数组表达式实现过滤的流程图;
图24为本申请实施例提供的一种混合表达式解析方法的二叉树示意图;
图25为本申请实施例提供的一种对混合类型表达式实现过滤的流程图;
图26为本申请实施例提供的一种过滤器4实现过程的示意图;
图27为本申请实施例提供的一种选取特征项的流程图;
图28为本申请实施例提供的一种选取特征数据的流程图;
图29为本申请实施例提供的一种索引切片流程图;
图30为本申请实施例提供的一种数据中台的结构示意图;
图31为本申请实施例提供的一种电子设备侧事件存储和查询的流程图;
图32为本申请实施例提供的一种原因事件构建方法的流程图;
图33为本申请实施例提供的一种数据查询方法的流程图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。其中,在本申请的描述中,除非另有说明,“/”表示或的意思,例如,A/B可以表示A或B;本文中的“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。
另外,为了便于清楚描述本申请实施例的技术方案,在本申请的实施例中,采用了“第一”、“第二”等字样对功能和作用基本相同的相同项或相似项进行区分。本领域技术人员可以理解“第一”、“第二”等字样仅用于描述目的,并不对数量和执行次序进行限定,也不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。在本实施例的描述中,除非另有说明,“多个”的含义是两个或两个以上。并且“第一”、“第二”等字样也并不限定一定不同。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。在本实施例的描述中,除非另有说明,“至少一个”是指一个或多个,“多个”的含义是两个或两个以上。
在本申请实施例中,“示例性地”或者“例如”等词用于表示作例子、例证或说明。本申请实施例中被描述为“示例性地”或者“例如”的任何实施例或设计方案不应被解释为比其它实施例或设计方案更优选或更具优势。确切而言,使用“示例性地”或者“例如”等词旨在以具体方式呈现相关概念。
在说明本申请实施例之前,先对本申请涉及的技术术语做简单介绍:
1、设备事件。
设备事件是电子设备采集的描述设备信息的事件,具体的,用户使用电子设备的过程中,用户行为使得电子设备的窗口内容、网络状态、地理位置、运动状态等发生变化,产生了设备事件,一条设备事件表示一个发生的事件。如图1所示,设备事件包括窗口内容变化事件、网络状态变化事件、地理位置变化事件、运动状态变化事件等。
作为一种示例,设备事件的采集过程如图2所示,首先,电子设备开启信息推送功能,并预设基于电子设备上已发生的设备事件进行推理预测将发生的设备事件的时刻(称为预测时刻)。比如,将预测时刻预设为电子设备进入地理围栏的时刻,或者,将预测时刻预设为固定时刻,如固定每天上午9:00。以预测时刻为电子设备进入地理围栏的时刻为例,电子设备实时检测设备位置信息,在设备位置信息位于地理围栏时,电子设备预测出将发生的设备事件,电子设备基于将发生的设备事件进行信息推送,如将发生的设备事件是描述用户会打开付款APP执行付款操作的窗口内容变化事件,那么电子设备向用户推送支付码(对应图2中的显示付款码界面)。若用户扫码付款,付款后手机切换至付款成功界面202,手机窗口内容发生变化,则电子设备采集本次窗口内容变化事件。若用户未扫码付款,比如用户点击付款码界面201上的关闭键203,则窗口内容没有发生变化,电子设备也就采集不到设备事件(如窗口内容变化事件)。
2、因果样本。
因果样本可以指:具有因果关系的设备事件,具体的,用户使用电子设备所产生的设备事件中,如果设备事件1影响设备事件2发生,则称设备事件1和设备事件2具有因果关系,并且设备事件1为原因事件,设备事件2为结果事件,那么设备事件1和设备事件2构成了因果样本。
设备事件一般经过结构化处理后进行存储,如图3所示,结构化处理是指:将设备事件的各个特征项提取出来(即提取特征项),经结构化处理后每条设备事件便通过各个特征项组成的特征数据项来表示(即组成特征数据项),特征数据项中的各特征项存储于数据表中对应的各个字段下方,每个特征数据项用于描述一个设备事件。
如表1-1所示,以设备事件是网络状态变化事件中的Wi-Fi状态事件为例。电子设备采集到的Wi-Fi状态事件具体表示为“18:33:20接入Wi-Fi,Wi-Fi名称为ry100”,对Wi-Fi状态事件进行存储时,会提取Wi-Fi状态事件中的各特征项。比如,提取事件发生时刻、Wi-Fi事件类型、Wi-Fi名称这三个特征项,三个特征项组成了Wi-Fi状态事件的特征数据项。该特征数据项能够描述Wi-Fi状态事件。
表1-1
通常将因果样本输入模型训练前,会对因果样本中用于推送的结果事件进行标注,如图4所示,待输入模型的是特征数据项1、特征数据项2和特征数据项3,其中,特征数据项1描述原因事件,特征数据2和特征数据项3描述结果事件。如果对特征数据项2进行标注,因果样本包括特征数据项1描述的原因事件和特征数据项2描述的结果事件,训练后的模型便能够预测特征数据项2描述的结果事件。如果对特征数据项3进行标注,因果样本包括特征数据项1描述的原因事件、特征数据项2描述的结果事件和特征数据项3描述的结果事件。训练后的模型便能够预测特征数据项3描述的结果事件。也就说,因果样本包括描述原因事件的特征数据项以及描述结果事件的特征数据项,其中,需要被推送的结果事件对应的特征数据项被标注,需要被推送的结果事件可称为预设预测事件。
在一些实施例中,因果样本中不包括预设预测事件。以电子设备需要推送的预设预测事件是打车事件为例。一些实施例中,用户行为产生的原因事件触发电子设备产生的设备事件不是预设预测事件,比如用户下班离开公司后,用户并未打车,而是步行回家。反映用户下班离开公司行为的地理位置变化事件是原因事件,反映用户步行回家的地理位置变化事件是结果事件,但该结果事件不是预设预测事件,电子设备无需在预测到用户步行回家时推送打车应用。为了使电子设备也具备在无需推送的时候便不进行推送的能力,将原因事件和原因事件之后的一段时长内的所有设备事件作为因果样本。在该因果样本中,原因事件之后一段时长内的所有设备事件(称为结果事件)描述的是用户未打车用户步行回家这一行为,由于这些结果事件不是预设预测事件,无需电子设备进行推送,所以不包含预设预测事件的因果样本为负因果样本。反之,如果用户下班离开公司后打车回家,即原因事件导致发生打车行为,打车行为对应的设备事件是预设预测事件,则称原因事件和结果事件组成的因果样本为正因果样本。在训练模型时,将正因果样本和负因果样本都输入模型中,有利于提高模型对不同类型样本的学习能力,增加模型的泛化性。
下面以因果样本为正因果样本为例对构建因果样本进行说明。
如图5所示,在构建因果样本之前,获取预测时刻,预测时刻是模型进行推理预测将发生的设备事件的时刻。
设置预测时刻后,将设备事件的事件发生时刻与预测时刻进行比较,如果设备事件的发生时刻早于预测时刻且与预测时刻的间隔大于或等于第一时长(如10min),那么该设备事件对预测时刻预测出结果事件的作用小。同样的,如果设备事件的发生时刻晚于预测时刻且与预测时刻的间隔大于或等于第二时长(如1min),那么该设备事件是预测时刻前发生的原因事件导致的结果事件的可能性小。所以在每个因果样本对应有一个预测时刻的情况下,如图5所示还设置有t和T,[t,predict]之间的特征数据项用于描述原因事件,(predict,T]之间的特征数据项用于描述结果事件。该示例中,t和predict之间的间隔为10min,predict和T之间的间隔为1min。
继续参考图5,从事件流中能够构建多个因果样本(对应图5中的A样本1…B样本3),每个因果样本的构建过程相同,下面以构建A样本1为例进行说明。设备事件按事件发生时刻的先后顺序排列,为E1,E2,E3,E4,E5。在[t,predict]之间的设备事件为E1,E2,E3,在(predict,T]之间的设备事件为E4,E5,其中,E5被标注,表示E5是结果事件中的预设预测事件,那么构建得到的A样本1包括E1,E2,E3,E4,E5。
3、数据模型。
数据模型用于描述特征数据项中各特征项的静态特征(数据类型)、动态行为(数据操作)和约束条件(数据约束)。数据模型包括元模型、逻辑模型和物理模型。
其中,元模型定义了特征数据项所属的数据类型以及能够对特征数据项执行的基本操作。例如,数据类型包括简单类型如字符串、数值、布尔值、时间戳、数组、对象、对象数组、模型等,基本操作包括简单类型和常数的比较操作,对象是否存在的判断操作等。
逻辑模型定义了满足元模型中数据类型以及基本操作的各特征项的名称和数据类型,例如,逻辑模型将用户标识的特征项的名称定义为sys_usid,将数据类型定义为字符串。逻辑模型可以应用在具体的因果样本构建场景。
物理模型定义了各特征项在不同存储物理结构下的具体字段名称和数据类型,例如,物理模型将用户标识的具体字段名称定义为us_id,将数据类型定义为字符串。
上述技术术语有助于本方案的理解,以下结合上述技术术语介绍本申请实施例的技术方案。
电子设备中可以安装许多的应用程序。一些应用程序(如出行服务、生活服务、便捷工具)具备推送服务,比如将经过整理的信息推送至电子设备的显示界面,使得用户可以直接从显示界面获取到信息。为了提高推送准确率以及推送速度,这些应用程序可以采用训练好的目标事件预测模型预测电子设备上将发生的设备事件以实现信息推送。目标事件预测模型在部署前需要经过模型选型、模型训练和模型推理,这些过程都需要用到大量因果样本,下面对模型选型、模型训练和模型推理过程进行说明。
1、模型选型。
模型选型(或称算法选型)主要是指论证算法的精准度并选择精准度满足要求的算法。其中,精准度可由算法构建的模型在预测时刻输出的结果事件和用于模型选型的因果样本中的结果事件之间的相似度表示。
参考图6,示例性的,首先,选取两个待测试的推送算法,分别是推送算法1:多路召回动态权重算法,推送算法2:轻量级梯度提升算法(Light Gradient Boosting Machine,又称LightGBM算法)。之后,对每组因果样本中的某个结果事件进行标注,作为希望模型预测出的预设预测事件。再将多组因果样本中的原因事件分别输入由推送算法1(即多路召回动态权重算法)训练得到的模型1以及由推送算法2(即LightGBM算法)训练得到的模型2中。模型1和模型2分别对原因事件进行特征识别,根据识别结果预测结果事件。然后,判断模型1、模型2输出的结果事件与因果样本中的标注出的结果事件之间的相似度。相似度越高,则说明模型预测准确率更高,模型对应的推送算法更好,那么可以从待测试的推送算法中选取较好的推送算法,并以该推送算法构建模型进行部署。
2、模型训练和模型推理。
再次参考图6,示例性的,首先,推送算法1训练得到的模型1的输出的结果事件与因果样本中带标注的结果事件的相似度结果相比,相似度高,所以部署推送算法1对应的模型1,将因果样本输入推送算法1对应的模型1中,模型1以因果样本中的原因事件作为输入样本,以因果样本中的带标注的结果事件作为监督,经过训练来求解其中的权重参数,训练得到模型3。在训练完成后,模型3便具备预测能力(或称推理能力),模型3可作为目标事件预测模型部署到电子设备或服务器中。将原因事件输入模型3中,可得到由模型3推理得到的结果事件,如果结果事件是预设预测事件,那么可进行信息推送,如果结果事件不是预设预测事件,那么不进行信息推送。由于模型3经过了上述模型选型和模型训练,因而推理得到的结果事件会更加准确,那么基于结果事件来信息推送的准确率高。
上述应用场景中,目标事件预测模型的模型选型、模型训练依赖于大量的因果样本,当模型选型、模型训练的效果好时,训练得到的目标事件预测模型的推理能力较好。因此从事件流中获取因果样本的效率十分重要。而在相关技术中,数据平台采用SQL数据库来存储电子设备侧采集的设备事件中提取出来的各个特征,且因为不同事件类型的设备事件包含的特征的数量和数据类型不同,所以不同事件类型的设备事件需要存储到不同数据表中。比如,表A存储Wi-Fi状态事件,表A中各个特征包括用户标识、Wi-Fi名称、Wi-Fi事件类型、Wi-Fi强度、Wi-Fi基础服务集等。表B存储运动状态事件,表B中的各个特征包括用户标识、运动状态、耳机连接状态等。在需要构建的因果样本需要既包含表A中的设备事件又包含表A中的设备事件的情况下,服务器先查询表A中的各特征,再查询表B中的各特征,再通过关联计算(比如分组、关联、过滤等)将不同表的各特征进行关联,得到Wi-Fi状态事件和运动状态事件。
采用SQL数据库存储的问题在于,跨表查询需要使用关联计算,且针对不同的表之间的跨表查询SQL数据库的关联计算不同,使得服务器需要通过不同查询代码来实现从SQL数据库中的各表获取不同事件类型的设备事件构建因果样本的目的,导致代码无法复用,开发效率低。且SQL查询所涉及的查询语句复杂,那么查询引擎解析查询语句时查询时延高,难以返回查询结果,所以不适用从海量设备事件中查询构建因果样本的设备事件的查询场景。另外,相关技术中使用开发spark程序支持SQL查询的方式需要反复调试部署、开发效率低,需要开发人员掌握大数据开发技术,使用上有门槛。
基于相关技术中存在的上述问题,参考图7,本申请实施例提供了一种数据处理方法,其并不是将每个类型的设备事件存储于不同表中的,所以针对不同事件类型的设备事件的特征的数量以及各特征的数据类型不同,导致难以存储到同一表中的问题,该方法首先提取因果样本的结构特点信息。每个因果样本的结构特点信息包括:因果样本中的每个设备事件结构化处理后得到多个特征项;多个特征项包括:设备事件对应的用户标识、设备事件的事件发生时刻、设备事件的事件内容等;其中,事件内容包含至少一个特征数据(对应上文的特征),且不同事件类型的设备事件的事件内容包含的特征数据的数据类型不同。
提取因果样本的结构特点信息后,设置因果样本的属性,因果样本中,用户标识的属性是字符串,事件发生时刻的属性是时间戳以及事件内容的属性是对象;其中,因果样本的属性用于确定设备事件对应的多个特征项中的每个特征项的存储类型。
虽然不同事件类型的设备事件的特征的数量和数据类型各不相同,但是通过事件内容存储所有描述事件内容的各特征,使得描述事件内容的各个特征通过事件内容被关联,并且为事件内容的属性设置为对象,使事件内容能够关联这些特征。这样构建因果样本时,不必跨表查询不同事件类型的设备事件,也不必先查询各个特征,再对各个特征进行关联。通过直接在一张表中查询各特征项,再查询各特征项中的特征数据,便能够提高查询设备事件的效率,查询得到的设备事件能被用于构建用来训练目标事件预测模型的因果样本,因此构建因果样本的效率更高。
在构建各特征项的属性之后,还可以为特征项设置常数和操作符,常数值和操作符用于和特征项组成判断式(或称表达式,如对象存在表达式,属性比较表达式)。判断式用于从存储设备事件的表中筛选用于构建因果样本的设备事件。属性、常数和操作符组成了元模型。通过元模型中的属性、常数和操作符,能够实现构建查询语句从服务器或电子设备的存储介质中查询多个设备事件来构建因果样本的目的。
本申请实施例提供的方法,可以应用于数据处理系统。例如,参考图8,该数据处理系统包括电子设备(对应图8中的手机810)和服务器820。服务器820中的采样模块向手机810中的数据中台安卓TM程序包(AndroidTMapplication package,APK)发布采样任务,接收到采样任务的手机810采集网络事件、传感器事件、设备状态、系统应用事件、三方应用事件等数据,数据经过数据规范化处理得到设备事件。设备事件以事件流形式发送给服务器。手机810中的数据中台APK还能对事件流进行采样管理,比如过滤符合采样任务的设备事件,并发送给服务器820。服务器820保存设备事件(对应图8中的样本存储),比如可以将设备事件保存到原始数据表中。原始数据表存储的是设备事件结构化处理得到的特征数据项,在原始数据表中,设备事件中的各特征项以属性为存储类型进行存储。
其中,图8所示的数据处理系统中的电子设备,可以是便携式计算机(如手机)、平板电脑、笔记本电脑、个人计算机(personal computer,PC)、可穿戴电子设备(如智能手表)、增强现实(augmented reality,AR)\虚拟现实(virtual reality,VR)设备、智能家居设备、车载电脑等设备,本申请实施例对电子设备的设备类型不作任何限制。
示例性的,图9示出了电子设备的一种硬件结构示意图。电子设备可以包括处理器910,外部存储器接口920,内部存储器921,通用串行总线(universal serial bus,USB)接口930,充电管理模块940,电源管理模块941,电池942,天线1,天线2,移动通信模块950,无线通信模块960,音频模块970,扬声器970A,受话器970B,麦克风970C,耳机接口970D,传感器模块980,按键990,马达991,指示器992,摄像头993,显示屏994,以及用户标识模块(subscriber identification module,SIM)卡接口995等。其中传感器模块980可以包括压力传感器980A,陀螺仪传感器980B,气压传感器980C,磁传感器980D,加速度传感器980E,距离传感器980F,接近光传感器980G,指纹传感器980H,温度传感器980J,触摸传感器980K,环境光传感器980L,骨传导传感器980M等。
压力传感器980A用于感受压力信号,可以将压力信号转换成电信号。当有力作用于压力传感器980A,电极之间的电容改变。
本申请实施例中,电子设备根据电容的变化确定压力强度。压力强度可作为电子设备向服务器发送的设备事件。比如,压力强度发生变化时,电子设备记录压力强度,用于表示压力强度发生变化这一设备事件。
陀螺仪传感器980B,又称三轴陀螺仪(简称陀螺仪),可用于采集电子设备围绕陀螺仪传感器980B中三个轴的角速度信号。其中,陀螺仪传感器980B中三个轴可以是地理坐标系的三个轴(即x轴,y轴和z轴)。
本申请实施例中,以地理坐标系作为对照,当电子设备中的坐标系与地理坐标系的夹角发生变化时,陀螺仪传感器980B采集到夹角变化产生的角速度信号。根据角速度信号可以处理得到电子设备的坐标系与地理坐标系的夹角的角度,从而确定电子设备的偏移角度。
气压传感器980C用于测量气压。本申请实施例中,电子设备通过气压传感器980C测得的气压值计算海拔高度,辅助定位和导航。电子设备也可以将气压作为向服务器发送的设备事件。
磁传感器980D包括霍尔传感器。电子设备可以利用磁传感器980D检测翻盖皮套的开合。在一些实施例中,当电子设备是翻盖机时,电子设备可以根据磁传感器980D检测翻盖的开合。电子设备可以将翻盖的开合作为向服务器发送的设备事件。
加速度传感器980E可采集电子设备围绕地理坐标系的三个轴的加速度信号,基于加速度信号可以确定电子设备姿态,例如确定电子设备是横屏状态被握持,或者在竖屏状态下被握持,或者在抬起状态(即与当地水平面的夹角约为45度)下被握持。电子设备姿态不同,反映用户手持电子设备的姿势不同。本申请实施例中,根据加速度传感器980E采集的加速度信号,可以确定电子设备被手持的姿势。电子设备将姿态数据作为向服务器发送的设备事件。
基于传感器模块980电子设备可以采集传感器事件,传感器事件包括上述检测到压力强度,检测到电子设备偏移,检测到气压变化,检测到翻盖开合,检测到电子设备姿态等。上述传感器事件可以由处理器910处理后发送给服务器。
处理器910可以包括一个或多个处理单元,例如:处理器910可以包括应用处理器(application processor,AP) ,调制解调处理器,图形处理器(graphics processingunit,GPU),图像信号处理器(image signal processor,ISP),控制器,存储器,视频编解码器,数字信号处理器(digital signal processor,DSP),基带处理器,和/或神经网络处理器(Neural-network Processing Unit,NPU)等。其中,不同的处理单元可以是独立的器件,也可以是集成在同一个处理器中。
本申请实施例中,电子设备可以通过处理器910中的NPU对设备事件(如传感器事件)进行隐私保护处理,使得设备事件传输过程中真实信息不被泄露。以及电子设备可以通过处理器910中的AP调用目标事件预测模型,目标事件预测模型的输入为AP根据电子设备中部署的数据模型构建的特征数据项,目标事件预测模型的输出为结果事件,结果事件能为电子设备的推送服务提供参考,如当结果事件是预设预测事件时,推送服务进行信息推送。
电子设备的无线通信功能可以通过天线1,天线2,移动通信模块950,无线通信模块960,调制解调处理器以及基带处理器等实现。
本申请实施例中,移动通信模块950或无线通信模块960可以支持电子设备与服务器之间的数据交换,比如,电子设备通过移动通信模块950或无线通信模块960向服务器发送事件流,电子设备接收服务器发送的目标事件预测模型等。
本申请实施例中,移动通信模块950或无线通信模块960还可以接收电子设备上安装的应用程序所对应的服务器(简称APP服务器)发送的短信、图片、视频等信息,比如航班、车票预订等短信通知,这些信息可以作为设备事件(如三方应用事件)。
电子设备通过GPU,显示屏994,以及应用处理器等实现显示功能。GPU为图像处理的微处理器,连接显示屏994和应用处理器。GPU用于执行数学和几何计算,用于图形渲染。处理器910可包括一个或多个GPU,其执行程序指令以生成或改变显示信息。显示屏994用于显示文本、图像,视频等。
本申请实施例中,电子设备可以记录显示屏的息屏信息和亮屏信息,并将息屏信息和亮屏信息作为设备事件(如系统应用事件)。
在一些实施例中,显示屏994可以与触摸传感器980K组合成触摸屏,触摸传感器980K可以将检测到的触摸操作传递给应用处理器,以确定触摸事件类型。并且电子设备可以通过显示屏994提供与触摸操作相关的视觉输出。
本申请实施例中,触摸屏接收到用户用于启动推送应用的触摸操作,便开启信息推送功能。
触摸屏/显示屏994显示推送信息,如推送信息包括订餐推送、二维码推送、还款推送等内容。
可以理解的是,本实施例示意的结构并不构成对电子设备的具体限定。在另一些实施例中,电子设备可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件,软件或软件和硬件的组合实现。
其中,图8所示的数据处理系统中的服务器可以是电子设备的生产商的服务器,该服务器可以是一个集群,也可以是多个集群,或者可以包括一类或多类服务器。或者,服务器可以是目标事件预测模型的维护方的服务器。
下面对服务器的硬件结构进行说明,如图10所示,服务器包括处理器1001、存储器1002、通信器件1003、总线1004。
处理器1001、存储器1002以及通信器件1003之间可以通过总线1004连接。
处理器1001是服务器820的控制中心,可以是一个通用中央处理单元(centralprocessing unit,CPU),也可以是其他通用处理器等。其中,通用处理器可以是微处理器或者是任何常规的处理器等。
作为一个示例,处理器1001可以包括一个或多个CPU,例如图10中所示的CPU 0和CPU1。
存储器1002可以是只读存储器(read-only memory,ROM)或可存储静态信息和指令的其他类型的静态存储设备,随机存取存储器(random access memory,RAM)或者可存储信息和指令的其他类型的动态存储设备,也可以是电可擦可编程只读存储器(electrically erasable programmable read-only memory,EEPROM)、磁盘存储介质或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。
一种可能的实现方式中,存储器1002可以独立于处理器1001存在。存储器1002可以通过总线1004与处理器1001相连接,用于存储数据、指令或者程序代码。比如,存储数据包括:存储器1002存储构建好的数据模型、原始数据表、事件流等,存储指令和程序代码包括:处理器1001调用并执行存储器1002中存储的指令或程序代码时,能够实现本申请实施例提供的建模方法。
另一种可能的实现方式中,存储器1002也可以和处理器1001集成在一起。
通信器件1003,用于服务器820与其他设备(如电子设备、APP服务器等)通过通信网络连接,所述通信网络可以是以太网,无线接入网(radio access network,RAN),无线局域网(wireless local area networks,WLAN)等。通信器件1003具体用于接收数据或发送数据,如本申请实施例中的“获取事件流”、“发送目标事件预测模型”等。通信器件1003可以是网络接口等。
总线1004,可以是工业标准体系结构(Industry Standard Architecture,ISA)总线、外部设备互连(Peripheral Component Interconnect,PCI)总线或扩展工业标准体系结构(Extended Industry Standard Architecture,EISA)总线等。该总线可以分为地址总线、数据总线、控制总线等。为便于表示,图10中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
需要指出的是,图10中示出的结构并不构成对服务器结构的限定,除图10所示部件之外,服务器可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
下面以数据处理系统包括图8所示的手机810和服务器820为例,对数据处理系统的软件结构进行说明,如图11所示,手机810的软件架构可以采用分层架构,事件驱动架构,微核架构,微服务架构或云架构。下文实施例将主要以手机810的软件架构分层架构为例,示例性说明手机810和服务器820的软件架构。
分层架构将软件分成若干个层,每一层都有清晰的角色和分工。层与层之间通过软件接口通信。在一些实施例中,手机810的软件系统可以包括应用程序层,应用程序框架层,系统库以及内核层。
应用程序层中可以安装各种应用(application,APP),如通话、备忘录、浏览器、联系人等应用。本申请实施例中,应用程序层中还安装有支持信息推送的应用。例如,出行服务、生活服务、便捷工具等。该支持信息推送的应用在信息推送模型输出的结果事件是预设预测事件的情况下进行信息推送。
应用程序框架层为应用程序层的应用程序提供应用编程接口(applicationprogramming interface,API)和编程框架。应用程序框架层中包括预设API,支持信息推送的应用调用预设API向服务器请求建模得到的数据模型,使得数据模型部署在服务器中的同时也部署在手机810中。手机810能够基于数据模型存储手机810采集的设备事件,在存储时,首先提取每个设备事件的特征项,根据每个特征项的定义的属性将各特征项按存储类型进行存储,每个设备事件中的特征项组成了设备事件对应的特征数据项,由于各特征项的属性不同,且事件内容和上下文信息的属性为对象,所以特征数据项的属性由对象数组表示,对象数组能够存储多个属性不同的特征项。这样在查询设备事件时,即使设备事件的类型不同,导致设备事件中的各特征不同,也都可以通过同一个查询语句先查询描述设备事件的特征项,再查询特征项中的特征数据的方式得到用于构建因果样本的设备事件。另外,预设API还能够接收服务器发送的目标事件预测模型,该目标事件预测模型能够基于手机810采集的设备事件预测用户行为从而输出将发生的设备事件,将发生的设备事件被返回给应用程序层中支持信息推送的应用。
系统库可以包括多个功能模块。例如:表面管理器(surface manager),媒体库(Media Libraries),三维图形处理库(例如:OpenGL ES),二维图形引擎(例如:SGL)等。
表面管理器用于对显示子系统进行管理,并且为多个应用程序提供了二维和三维图层的融合。
媒体库支持多种常用的音频,视频格式回放和录制,以及静态图像文件等。媒体库可以支持多种音视频编码格式,例如: MPEG4,H.264,MP3等。
三维图形处理库用于实现三维图形绘图,图像渲染,合成,图层处理等。
二维图形引擎是二维绘图的绘图引擎。
内核层是硬件和软件之间的层。内核层至少包含显示驱动,传感器驱动等。其中,传感器驱动是传感器模块980的驱动层,主要负责和硬件的交互。比如,传感器驱动可以启动硬件层的陀螺仪传感器980B,被启动的陀螺仪传感器980B可以采集角速度信号。
继续参见图11,服务器820的软件系统按功能划分可以包括数据层、样本构建层和模型训练层。
其中,数据层中包括数据库,数据库可以存储来自手机810的事件流以及对事件流中的各设备事件结构化解析得到的特征数据项。其中解析过程包括提取设备事件的各特征项,将每个特征项按照属性分别存储于原始数据表的各字段中。数据层中还包括数据模型、因果样本、领域特定语言(doman specific language,DSL)查询语言文档等。
样本构建层包括模型构建模块和样本构建模块,其中,服务器根据模型构建模块来根据模型训练层中的算法或模型需要用到的因果样本的结构特点信息构建数据模型如元模型、逻辑模型和物理模型,并将数据模型部署到数据层中。服务器通过样本构建模块在数据库中输入查询语句(如DSL查询语言构建的查询语句)来查询设备事件,以构建因果样本,其中,DSL查询语言是根据数据模型定义的属性、常数和操作符构建的语言。
模型训练层包括训练模块,其中,服务器通过训练模块将原因事件和结果事件输入待训练的目标事件预测模型中,以带标注的结果事件作为监督,训练该待训练的目标事件预测模型,最终得到目标事件预测模型。一方面,服务器中可以存储目标事件预测模型,以便于根据手机发送的设备事件对用户行为进行预测,并向手机发送预测的结果事件。另一方面,服务器将模型训练层的目标事件预测模型发送给手机810,使手机部署目标事件预测模型并具备事件预测能力。
至此,需要说明的是,上述图11对手机810和服务器820的软件功能的划分仅为示例性的,实际实施时,也可以增加功能模块、减少功能模块等。例如,在手机810的应用程序框架层中增加样本构建模块,在服务器的软件架构中可以省去模型训练层。那么手机810可以接收服务器820发送的待训练的目标事件预测模型,并在样本构建模块中构建因果样本,用于对待训练的目标事件预测模型进行训练,以得到目标事件预测模型。本申请实施例对此不作具体限定。
下面结合附图说明本申请实施例的方法。
本申请实施例提供了一种因果样本获取方法,包括构建模型、构建DSL语言、服务器侧构建样本、电子设备侧构建样本这四个过程。其中,过程一提供了一种数据处理方法,通过提取因果样本的结构特点信息来建立数据模型。
过程一:构建模型。
构建模型包括构建元模型,构建逻辑模型以及映射。
步骤1.1、构建元模型。
参考图12,元模型包括属性、常数和操作符三大部分。
其中,属性用于描述因果样本的数据类型,因果样本包括多个由特征数据项来描述的设备事件,且每个设备事件包括多个特征项,其中事件内容和上下文信息这两个特征还包括多个特征数据,所以属性包括用于描述特征数据项的数据类型,用于描述特征项的数据类型,以及用于描述特征数据的数据类型。
属性包括简单属性、对象(Object)、对象数组(Array[Object])和模型(Model)。
简单属性包括简单类型和数组(Array[简单类型]),简单类型包括字符串(String),数值(整型(Int)、长整型(Long)和浮点(Real)),布尔值(Boolean)和时间戳(Timestamp)。数组由多个简单类型组成。
对象由简单属性中的各属性以及对象的至少两种组成。如对象object包括aaa,11,{aaa,11},其中,aaa的属性为字符串,11的属性为整型,二者属于简单属性,{aaa,11}的属性为对象。以Wi-Fi设备事件的事件内容为例,其包含Wi-Fi名称、Wi-Fi事件类型、Wi-Fi强度、Wi-Fi基础服务集这四个特征数据对应的数据值,各个特征数据对应的数据值的数据类型不同,所以将事件内容的属性设为对象,从而存储四个不同属性的特征数据。
对象数组由对象和简单属性组成,如对象数组表示为[string,int,object]。对象数组中不同元素的数据类型可以不一致,比如对象数组[aaa,150,{aaa,11}]中,第一个元素的数据类型为字符串,第二个元素的数据类型为整型,第三个元素的数据类型为对象。对象数组是特征数据项的属性,或者可理解为对象数组是每个设备事件的属性。
模型由简单属性,对象和对象数组组成。
元模型中属性是根据因果样本结构特点信息确定的,其中,对象是不同事件类型的设备事件特有的事件内容和上下文信息的属性,比如,Wi-Fi状态事件和运动状态变化事件的事件类型不同,那么Wi-Fi状态事件和运动状态变化事件除了包含共有的用户标识、事件发生时刻等预设关键字段之外,Wi-Fi状态事件还会包括多个特征数据,如Wi-Fi名称、Wi-Fi事件类型、Wi-Fi强度、Wi-Fi基础服务集等,运动状态变化事件还会包括运动状态、耳机连接状态等。在未设置对象属性的情况下,Wi-Fi状态事件和运动状态变化事件需要跨表存储,当查询Wi-Fi状态事件和运动状态变化事件时需要分别在两个表中查询,然后建立两个表的关联。通过设置对象属性实现了虽然Wi-Fi状态事件和运动状态变化事件包含的特征的数量不同,特征的数据类型也不同,但是都能存储于属性为对象的事件内容中,这样整合了不同事件类型的设备事件的描述事件内容的各特征,使得不同事件类型的设备事件可以存储于同一个表中。
除了属性外,元模型还定义有字符串、数值、布尔值、时间戳、枚举这五个常数。以及还定义有操作符,操作符用于确定定义为上述属性的特征项与常数之间的运算逻辑。比如“Wi-Fi强度大于2”中,“大于”表示操作符,用于筛选出Wi-Fi状态事件中“Wi-Fi强度”大于2的Wi-Fi状态事件,其中,Wi-Fi强度的属性为上述定义中的简单类型。操作符包括:用于简单类型和常数相比较的“<”,“>”,“=”,“<=”,“>=”,“in”;用于布尔值判断的“is”;用于对象存在判断的“Exist”;以及逻辑运算符“AND|OR|NOT”。
本申请实施例中,元模型架构是按照构建事件预测算法或事件预测模型所需的因果样本所涉及的属性、常数和操作符来设定的,其并不包括SQL数据库定义的所有属性、常数和操作符,元模型的架构在满足因果样本获取的要求上尽可能的简化了不必要的属性、常数或操作符,使得后续计算更简便。通过设置的属性使得不同事件类型的设备事件以特征项作为最小单元存储在原始数据表中,虽然不同事件类型的设备事件的特征的数量和数据结构不同,但是其特征项的数量和数据结构相同,所以不同事件类型的设备事件可以存储于同一个原始数据表中,在查询设备事件时不必跨表查询再建立关联,查询效率更高。
步骤1.2、构建逻辑模型。
上文提到,元模型定义了因果样本的属性,而因果样本中描述每个设备事件的特征数据项包含了多个特征项,多个特征项的属性可能相同或不相同,比如上下文信息和事件内容的属性是相同的。在存在多个特征项的属性相同的情况下,仅定义属性无法满足构建因果样本的业务需求。
因此,在定义了属性的基础上,为每个数据项定义其业务属性,以业务属性构成逻辑模型。业务属性是区分各数据项的特征项的名称,每个特征项的名称对应的数据项的属性是元模型定义的属性。其中,数据项指上文提到的特征数据项、特征项或特征数据。
以业务属性满足查询业务需求的方法如下,按照设置的因果样本的属性,将电子设备采集的设备事件存储至原始数据表中,其中,原始数据表包括多个字段,用于从原始数据表中查询各字段的特征项的名称是逻辑模型定义的业务属性。多个字段包括用户标识字段、事件发生时刻字段、事件内容字段,那么业务属性对应包括用户标识的名称、事件发生时刻的名称、内容字段的名称。用户标识的名称用于查询属性是字符串的用户标识,事件发生时刻的名称用于查询属性是时间戳的事件发生时刻,事件内容的名称用于查询属性是对象的事件内容。这样通过数据项的业务属性可以实现了查询,满足了业务查询需求。
当然,逻辑模型中的业务属性还可以是除了上文提到的用户标识的名称、事件发生时刻的名称、事件内容的名称之外的特征项的名称,下面进一步对逻辑模型定义的各业务属性进行介绍。
逻辑模型的业务属性根据是否必要分为系统属性和第二自定义属性。
其中,第二自定义属性是上下文信息的业务属性。其中,上下文信息包括天气信息、时间信息和位置信息。第二自定义属性是可选的,即查询的设备事件可以不包含第二自定义属性。第二自定义属性也可自定义为除了上下文信息的其他数据项,如定义为事件标识,如果事件标识为1,则设备事件为预设预测事件,如果事件标识为0,则设备事件不为预设预测事件。
系统属性是构建因果样本必要的业务属性,系统属性根据是否是每个因果样本所共有的,分为每个因果样本共有的业务属性:如图13中的用户标识、预测日期、预测时间戳以及采样任务标识,其中,用户标识(以sys_usid表示)的属性为字符串,预测日期(以sys_predict_date表示)的属性也为字符串,所以设置业务属性能将两个同为字符串属性的数据项进行区分。图13中,预测时间戳(以sys_predict_time表示)的属性为时间戳,采样任务标识(以sys_task_id表示)的属性为数组。
系统属性还分为每个因果样本特有的业务属性,如图13所示的事件(以event表示)表示,event是特征数据项的业务属性。
业务属性为事件的特征数据项中,包括多个特征项,分别以图13所示的对象创建时间、对象版本、预设预测事件所属的采样任务标识以及第一自定义属性作为各特征项的业务属性。
其中,对象创建时间(以sys_time表示)的属性为时间戳,对象版本(以sys_version表示)的属性为字符串,预设预测事件所属的采样任务标识(以sys_label_task_id表示)的属性为数组。
其中,第一自定义属性是事件内容的业务属性,通过业务属性中的第二自定义属性和第一自定义属性将同为对象属性的事件内容和上下文信息进行了业务区分。
事件内容中,不同事件类型的设备事件的事件内容因为特征数据的不同而不同,比如Wi-Fi状态事件的事件内容包括Wi-Fi名称、Wi-Fi事件类型、Wi-Fi强度、Wi-Fi基础服务集这四个特征数据,运动状态变化事件的事件内容包括运动状态、耳机连接状态这两个特征数据。继续以Wi-Fi状态事件为例,其业务属性为第一自定义属性的事件内容中包含Wi-Fi名称、Wi-Fi事件类型、Wi-Fi强度、Wi-Fi基础服务集这四个特征数据,Wi-Fi名称(以wifiSsid表示)的属性为字符串,Wi-Fi事件类型(以eventType表示)的属性为整型,Wi-Fi强度(以wifiLevel表示)的属性为整型,Wi-Fi基础服务集(以wifiBssid表示)的属性为字符串,可以看到,四个特征数据也存在相同属性的数据值,所以事件内容中的各特征数据也通过定义业务属性来区分。
步骤1.3、建立映射关系。
本申请实施例中,电子设备侧和服务器侧都可以存储设备事件,因而电子设备侧和服务器侧都需部署一套为存储设备事件而定义的物理模型,设备事件通过服务器侧和电子设备侧的物理模型指定的数据存储方式进行存储,如数据存储方式包括:在数据库中设备事件以表结构存储、在文件中设备事件以键值对结构存储、在内存中设备事件以map对象(或称键值映射对象)结构存储等。由于电子设备侧和服务器侧的数据存储方式不同,所以在电子设备侧和服务器侧构建的物理模型中,数据的物理结构也就是数据的存储属性不同。不同于逻辑模型中定义的业务属性,物理模型中的存储属性指的是设备事件中的数据存储时的具体字段名称。
示例性的,用户标识在逻辑模型中的业务属性和在物理模型中的存储属性是不同的:其在逻辑模型中定义的业务属性为sys_usid,而在物理模型中定义的存储模型为us_id。在构建查询语句从电子设备侧或服务器侧获取因果样本时,查询语句是针对用户标识的业务属性(对应待查询特征项的名称)sys_usid构建的,而用户标识的实际存储时的具体字段名称是用户标识的存储属性us_id。
为了实现同一个查询语句能够分别满足在服务器侧和电子设备侧存储的设备事件中查询的目的,本申请实施例建立了设备事件中的各数据项的业务属性和存储属性之间的映射,其中,设备事件中的各数据项包含上文提到的特征数据项、特征项、特征数据。通过映射可以使逻辑模型定义的业务属性适配电子设备侧和服务器侧,减少了开发成本;屏蔽底层的存储介质和结构,能保持查询语言的稳定,支持更多种存储形式。
下面示例性地以特征项对映射方式进行说明。
如果原始数据表中的字段的具体字段名称和查询语句中的待查询特征项的名称不同,且都用于表示同一个数据项,则构建该数据项在原始数据表中的具体字段名称和在查询列表中的待查询特征项的名称之间的映射关系。其中,原始数据表中的具体字段名称反映的是数据项在物理模型中的存储属性,查询语句中的待查询特征项的名称反映的是数据项在逻辑模型中的业务属性。那么建立了上述映射关系相当于建立了特征项在逻辑模型中的业务属性和在物理模型中的存储属性之间的映射关系。将各个特征项对应的映射关系作为映射文件内容保存到电子设备侧和/或服务器侧。如映射文件内容保存在电子设备侧的情况下,部署在电子设备侧的查询引擎会根据映射文件内容把逻辑模型中的变量(相当于上文的业务属性)替换为物理地址中的数值(相当于上文的字段),然后将物理地址中的数值代入查询语句中计算。这样可使得逻辑模型中定义的业务属性对应到电子设备侧hive表的列或者对应的列中json结构体内的键值。
作为一种示例,映射文件内容如下所示:
{“mappingType”:“hive”,
“version”:“1.0.0”,
“mappings”:[
{“logicName”:“sys_usid”,“physicalName”:“us_id”},
{“logicName”:“sys_predict_date”,“physicalName”:“l_date”},
{“logicName”:“sys_predict_time”,“physicalName”:“event_time”},
{“logicName”:“sys_task_id”,“physicalName”:“predict_task_id_list”,“converFun”:“ID_LIST”},
{“logicName”:“sys_type_id”,“physicalName”:“item_type_id”},
{“logicName”:“sys_time”,“physicalName”:“event_time”},
{“logicName”:“sys_version”,“physicalName”:“item_version”},
{“logicName”:“sys_label_task_id”,“physicalName”:“label_task_id_list”,“converFun”:“ID_LIST”},
{“logicName”:“context.*”,“physicalName”:“context”,“converFun”:“JSON”},
{“logicName”:“event.*”,“physicalName”:“content”,“converFun”:“JSON”},
]}。
参照上述映射文件内容,以查询语句:WHERE sys_task_id=‘99'为例,任务标识“99”的业务属性为sys_task_id,任务标识“99”的存储属性为predict_task_id_list。根据sys_task_id和predict_task_id_list的映射关系,电子设备侧会从物理存储表中获取predict_task_id_list列中的数值按照ID_LIST做数组展开,数组中各元素的id值与常量'99'进行大小比较,并将等于常量'99'的id值所在行输出,以实现过滤包含不等于常量'99'的id值的设备事件的目的。在该查询过程中,存储在电子设备侧的hive表中的具体字段名称以及查询语句中的特征项的名称都没有改动,而是建立了映射关系,因此减少了开发成本;且屏蔽底层的存储介质和结构,能保持查询语言的稳定,支持更多种存储形式。
下面示例性说明上文提到的构建模型过程在具体场景中的实施方式。
以因果样本用于训练订餐推送模型为例。订餐推送是指:手机能够在用户进入车厢时触发乘车围栏,并在触发乘车围栏时(相当于上文预测时刻)推测用户是不是需要订餐。如果需要订餐,则会向用户推送订餐界面,实现便捷订餐服务。为实现上述目的,可以构建因果样本训练订餐推送模型,使训练得到的订餐推送模型在每次触发乘车围栏时进行推测。
在构建因果样本前需要先数据建模。建模方式如图14所示,包括S1401-S1408。
S1401、手机采集设备事件。
用户使用手机的过程中,用户行为使得手机的窗口内容、网络状态、地理位置、运动状态等发生变化,产生了设备事件。设备事件以事件发生时刻的的先后顺序排序,一条设备事件表示一个发生的事件,比如,t1时刻切换了网络,t2时刻切换了网络,t2时刻进入电梯,该例中有3个设备事件,前两个设备事件的事件发生时刻不同,后两个设备事件的事件内容不同。
排序后的设备事件经编码处理,不断生成和更新得到了事件流。
根据采集方式不同,设备事件包括窗口内容变化事件、网络状态变化事件、地理位置变化事件、运动状态变化事件等。具体的,窗口内容变化事件包括三方应用事件,如三方应用进程启动或进程关闭,还包括系统应用事件,如系统应用进程启动或进程关闭,以及还包括息屏亮屏事件等。网络状态变化事件(简称网络事件)包括Wi-Fi状态事件,如Wi-Fi接入、Wi-Fi断开、Wi-Fi自动连接开启、Wi-Fi自动连接关闭,还包括蜂窝移动网络(如4G、5G)、蓝牙状态事件。地理位置变化事件包括:位于电梯、位于车厢、位于街道、位于餐厅等。运动状态变化事件(简称运动状态事件)包括:走、跑、静止、跳跃、爬梯等。
作为一种示例,手机可以通过传感器实时采集设备事件,也可以通过监听器监听设备事件,并在监听到设备事件发生时采集。
S1402、手机向服务器发送设备事件。
本实施例中服务器为处理数据的执行主体,所以手机采集设备事件后,向服务器发送设备事件,以便服务器基于设备事件执行后文步骤。可以理解的是,如果手机为处理数据的执行主体,则手机无需执行S1402步骤,手机可以直接执行下文S1403-S1409中服务器执行的步骤。
在一些实施例中,S1401之前,服务器向手机发送采样任务,采样任务描述了采样对象,比如采样对象为网络状态变化事件,那么手机仅采集网络状态变化事件。或者,采样任务还描述了采样任务的开始时刻和采样任务的结束时刻。那么手机接收到采样任务后,在采样任务的开始时刻采集设备事件,手机在采样任务的结束时刻停止采集设备事件。然后手机向服务器发送设备事件。
在一些实施例中,手机可以在预设时间段触发采集事件流以及向服务器发送事件流的操作,比如预设时间段为联网后的时段,手机休眠时段,充电息屏时段或用户休息时段(如2:00-5:00时段)等。
S1403、服务器获取设备事件中的每个实体的数据类型,将每个实体的数据类型作为每个实体对应的属性。
其中,实体是指设备事件中具有实际含义的事物,实体相当于上文提到的特征。比如,用户标识、预测日期、预测时间戳、采样任务标识、Wi-Fi名称、Wi-Fi事件类型、Wi-Fi强度和Wi-Fi基础服务集都属于实体。提取实体的数据类型,数据类型包括字符串、数值、布尔值、时间戳、数组。
S1404、服务器获取订餐推送模型所需因果样本的结构特点信息。
其中,结构特点信息包括:因果样本中的每个设备事件结构化处理后得到多个特征项;多个特征项包括:设备事件的用户标识、设备事件的事件发生时刻以及设备事件的事件内容;其中,事件内容包含至少一个特征数据,且不同事件类型的设备事件的事件内容中包含的特征数据的数据类型不同。
根据因果样本的结构特点信息可以看出,订餐推送模型所需的因果样本包括多个设备事件,每个设备事件又包括多个特征项,且存在事件内容这个特征项包括了多个不同数据类型的特征数据,意味着如果将每个特征数据存储到每个字段中,则不同事件类型的设备事件需要跨表存储。那么在查询涉及多个类型的设备事件构建因果样本时,需要跨表查询。跨表查询的查询语句为:
select timestamp,packageName from collectEncrypt.RawAppGeneral wheretimestamp>= ! AND timestamp<= ! limit !;
select timestamp,eventType,status from collectEncrypt.RawMSDPMovementwhere timestamp>= ! AND timestamp<= ! AND status in (!,!) order by timestampdesc;
select eventType,timestamp,wifiSsid,wifiBssid,wifiLevel fromcollectEncrypt.RawWifiStatus where timestamp>= ! AND timestamp<= ! AND(eventType = 1 OR eventType = 2) order by timestamp ASC;
查询语句中,!替代的是为了简化查询语句而被隐去的常数。3个“select”说明在3个表中查询,即执行了3次查询,3次查询得到的结果需要通过关联计算相关联。因此这种查询方式构建的查询语句过于复杂,且计算量大不适用于查询因果样本。所以在获取实体的属性之后,服务器并未将每个实体作为一个特征项来存储,而是执行S1404,以通过因果样本的结构特点信息来确定实体的存储方式。
表1-2为原始数据表的一种示例,表1-2中,每行数据表示特征数据项,每列数据表示特征项,其中,特征项包括:用户标识us_id、数据项编号item_type_id、数据项版本item_version、事件发生时刻event_time、客户端标识client_id、触发预测的事件所属的采样任务标识列表predict_task_id_list、预设预测事件所属的采样任务标识列表label_task_id_list、事件内容content、上下文信息context等。
用户标识us_id用于区分不同的用户,即同一个用户对应的设备事件的用户标识us_id相同,不同用户对应的设备事件的用户标识us_id不同。
数据项编号item_type_id是指每个设备事件的编号,不同设备事件的数据项编号item_type_id不同,对应为表1-2中每行数据项对应一个数据项编号item_type_id,且不同行数据项的数据项编号item_type_id不同。
数据项版本item_version是指数据项迭代的版本号,比如数据项经过了一次迭代那么版本号为2。
事件发生时刻event_time是指设备事件发生的时刻。
客户端标识client_id是客户端的唯一标识,客户端是指为用户提供本地服务的程序,如客户端可以是电子设备、服务器。
触发预测的事件所属的采样任务标识列表predict_task_id_list用于标记该设备事件属于哪个采样任务,如第一行数据项中触发预测的事件所属的采样任务标识列表predict_task_id_list是[44],是指该设备事件是触发预测的事件且该设备事件是电子设备根据采样任务标识为44的采样任务采集得到的。设置这个数据项是为了对触发预测的事件进行标注。标注后,在对电子设备根据采样任务标识为44的采样任务所采集的多个设备事件进行查询从而构建因果样本或者构建原因事件的情况下,构建因果样本或者构建原因事件所需获取的预测时刻便是该触发预测的设备事件的事件发生时刻。
预设预测事件所属的采样任务标识列表label_task_id_list用于标记该设备事件属于哪个采样任务,如第一行数据项中预设预测事件所属的采样任务标识列表label_task_id_list是[33,11],是指该设备事件是预设预测事件且该设备事件是电子设备根据采样任务标识为33的采样任务采集得到的。设置这个数据项是为了对预设预测事件进行标注。
事件内容content是不同事件类型的设备事件特有的,事件内容content包括多个特征数据,每个特征数据是一个实体,事件内容content中不同特征数据的数据结构不同。不同事件内容content中的特征数据的数量、数据结构都可能不同。
上下文信息context是指在预测时刻采集到的天气信息、时间信息和位置信息等。
根据业务场景可以增加/删除/修改原始数据表的数据项,比如,删除数据项版本item_version,那么数据项版本item_version列在表1-2中被删除。
表1-2中的每个序号所在行的各个特征项组成了一个设备事件。表1-2中序号2对应的设备事件为运动状态变化事件,序号5对应的设备事件为网络状态变化事件,可见通过事件内容关联多个不同数据类型的特征数据后,每个设备事件都包括事件内容,且不同设备事件的事件内容的名称(都为content)和属性(都为对象)都是相同的。那么原始数据表能够存储不同事件类型的设备事件。
表1-2
/>
S1405、服务器根据结构特点信息,构建因果样本的属性。
其中,特征数据项的属性为对象数组,用于存放多个不同属性的特征项;特征项包括事件内容、用户标识、事件发生时刻等,事件内容的属性为对象,用于存放多个不同属性的特征数据,另外,用户标识的属性为字符串,事件发生时刻的属性为时间戳。
定义各个特征项的属性之后,这些特征项可以分别存储于原始数据表的各个字段下。
步骤S1403仅考虑了设备事件中的每个实体的属性,所以在获取因果样本时,若涉及到对多个实体在不同表中都包含的查询,则需要分别查询每个表中的实体,然后对每个查询结果进行关联。本步骤进一步提取了特征项的属性,特征项包含至少一个实体。比如,在事件内容这个特征项中,事件内容可以包含多个不同属性的实体。以Wi-Fi状态事件为例,事件内容包括:Wi-Fi名称、Wi-Fi名称、Wi-Fi事件类型、Wi-Fi强度和Wi-Fi基础服务集。那么这些实体都存储于事件内容这个特征项对应的字段下,且这些实体的属性并不相同,所以事件内容的属性为对象,从而能够存储不同属性的实体。再比如,在用户标识这个特征项中,只包含用户标识这一个实体,所以用户标识这个特征项的属性是用户标识这个实体的属性,为字符串。
另外,服务器还确定了包含这些特征项的特征数据项的属性,其属性为对象数组。对象是对象数组中的一个元素,所以特征项是特征数据项中的一个元素。那么在获取因果样本时,若涉及到对多个特征项的查询,则不必分别查询每个特征项,而是先查询特征数据项,再查询特征数据项中的特征项,也就是说先查询设备事件,再查询设备事件中的各特征项,这样查询效率较高。
通过上述S1405,服务器根据因果样本的结构特点信息构建了因果样本的属性,属性包括:特征数据项的属性为对象数组,以及仅包含一个实体的特征项的属性为实体的属性,包含多个数据类型不同的实体的特征项的属性为对象。
S1406、服务器获取过滤条件。
过滤条件用于从设备事件中筛选符合条件的目标设备事件。如查询预测时刻前30分钟的前N个app特征,查询预测时刻前30分钟设备的运动状态,查询预测时刻前30分钟的Wi-Fi状态都是过滤条件。
S1407、服务器从过滤条件中提取常数和操作符。
该步骤对应图14中的提取常数和操作符。其中,过滤条件用于筛选特征数据项、特征项或特征数据,具体的,在不设置过滤条件的情况下,因果样本包含原始数据表中的每个特征数据项,在设置过滤条件之后,因果样本包括原始数据表中符合过滤条件的特征数据项以及符合过滤条件的特征项。
过滤条件可以是用户设定的,过滤条件能够通过属性比较或者判断对象是否存在来选取符合条件的设备事件构成因果样本。其中,属性比较是指将实体、特征项或特征数据项与常数进行比较,如SELECT sys_usid = 'ddffg'为属性比较表达式(或称第二判断式)。判断对象是否存在是指判断查询的对象数组或者对象是否为空(也就是判断多个设备事件中是否没有某个事件类型的设备事件),如exist event(rawwifistatus)为对象存在表达式(或称第一判断式),该表达式的含义是判断Wi-Fi状态事件是否存在。关于常数和操作符的描述,可参考上文步骤1.1的说明。
下面示例性的给出一种用于获取设置常数和操作符的方式。
判断设备事件包括的各特征项中是否存在属性是对象的特征项。在该实施例中,事件内容和上下文信息的属性是对象,所以判断结果为存在属性是对象的特征项。
针对属性是对象的特征项有两种判断式,其一是用于判断特征项是否存在的第一判断式,从第一判断式中提取出来的操作符为Exist,提取出来的常数为布尔值。其二是用于判断特征项与常数大小关系的第二判断式,从第二判断式中提取出来的操作符包括<、>、=、<=、>=或in的至少一种,提取出来的常数包括字符串、数值、布尔值、时间戳、枚举的至少一种。
通过上述步骤,服务器确定了属性、常数和操作符,服务器可以执行S1408构建元模型。
S1408、服务器根据属性、常数和操作符构建元模型。
关于元模型的描述可参考上文步骤1.1的说明。
构建元模型之后,服务器定义因果样本的业务属性,业务属性是方便数据被查询而设置的每个数据项的名称,其中,数据项包括特征数据项、特征项或特征数据。业务属性是基于描述因果事件流业务场景的目的在元模型的基础上定义的,比如,元模型中定义有字符串String类型,逻辑模型将属性为字符串的用户标识的业务属性定义为sys_usid,以及将属性为字符串的预测日期的业务属性定义为sys_predict_date。元模型中定义有时间戳Timestamp属性,逻辑模型将属性为时间戳的预测时间戳的业务属性定义为sys_predict_time。元模型中定义有数组Array[Int]属性,逻辑模型将属性为数组Array[Int]的采样任务标识的业务属性定义为sys_task_id。元模型中定义有对象数组Array[Object]属性,逻辑模型将属性为对象数组Array[Object]的特征数据项定义为event,在特征数据项中,逻辑模型将属性为时间戳的对象创建时间(或称设备事件的事件发生时刻)的业务属性为sys_time,逻辑模型将属性为字符串的对象版本的业务属性定义为sys_version,以及将属性为数组的预设预测事件所属的采样任务标识的业务属性定义为sys_label_task_id。这些业务属性每个因果样本都具有的业务属性,称为系统属性,此外,在每个因果样本特有的属性为对象数组的事件中,服务器将事件内容的业务属性定义为content,以及将上下文信息的业务属性定义为context,content是触发预测的事件才有的特征项“上下文信息”的名称。
构建逻辑模型之后,将逻辑模型中的业务属性与物理模型的存储属性之间建立映射,其中,物理模型定义了指原始数据表中的各数据的存储属性,逻辑模型定义了查询语句中各数据的业务属性,构建同一数据在物理模型中的存储属性和在逻辑模型中的业务属性建立映射关系,实现了物理模型和逻辑模型分离的同时逻辑模型定义的业务属性同时适配电子设备侧和服务器侧,那么根据业务属性构建的查询语句也能同时适配电子设备侧和服务器侧,减少了开发成本。如图15所示,逻辑模型中的sys_usid与服务器原始数据表中的us_id建立了映射关系。逻辑模型中的sys_predict_time与服务器原始数据表中的event_time建立了映射关系。逻辑模型中的predict_task_id_list与服务器原始数据表中的sys_task_id建立了映射关系。
过程二:构建DSL语言。
上文提到,事件流以原始数据表的形式存储于服务器,原始数据表中的各数据项的属性都按照元模型定义的属性来承载。为了适配各数据项的属性,本实施例提供一种DSL语言,其是根据数据结构定义的属性、常数和操作符而构建的语言。在DSL语言的基础上,本实施例还提供一种数据查询方法,能够根据DSL语言构建的查询语句能够快速从原始数据表中查询设备事件。下面依次进行说明。
构建DSL语言的过程分为定义样本查询的语法、定义样本统计的语法和定义数据集操作的语法三个过程。下面依次进行说明。
步骤2.1、定义样本查询的语法。
样本查询是指从原始数据表中查询多个设备事件,得到作为因果样本的数据集。样本查询语法用到元模型定义的属性、操作符和常数以及逻辑模型定义的业务属性,其中DSL语言中的特征项的名称为业务属性,特征项的名称下的各数据的数据类型为属性,操作符、常数可以配合业务属性组成查询语句,对特征数据项进行筛选。常数还可以确定样本数量上限值,从而查询指定数量的设备事件作为因果样本。
步骤2.1.1、定义语法规则。
在定义样本查询语法前,首先定义语法规则(或称预设查询语法),语法规则是对原始数据表进行增删改查操作时约定俗成的语言的规则。作为一种示例,语法规则包括:①总是以以下关键字作为开始,如SELECT、CREATE、DESC、WRITE、READ、DELETE、SHOW,并以分号作为结尾。②所有关键字不区分大小写,但数据的名称、属性区分大小写。③别名是以字母作为开头,由字母、数字和下划线三种字符组成的字符串,不区分大小写。
步骤2.1.2、定义样本查询的语法。
根据以上三种语法规则,样本查询可采用以下语法表示:
SELECT 查询列表 <WHERE 样本选取条件><LIMIT 样本数量上限值>。
该语法中以SELECT作为开始就是上文定义的语法规则。
下面分别对查询列表,样本选取条件和样本数量上限值进行说明。
步骤2.1.2.1、定义查询列表的语法。
查询列表包括至少一个待查询特征项的名称以及每个待查询特征项中至少一个待查询特征数据的名称,该至少一个待查询特征项包括用户标识、事件发生时刻、事件内容中的至少一项。
查询列表可采用以下语法表示:
属性 <,属性>。
其中,属性是元模型定义的简单属性或者对象数组属性,每个属性对应的特征项的名称是业务属性,业务属性可以通过定义别名使得查询出来的数据项的名称更具可读性。
作为一种示例,属性的语法结构可采用以下语法表示:
简单属性|对象数组属性<AS 别名>。
其中,简单属性和对象数组属性可参考上文步骤1.1的介绍。
如表2-1所示,在逻辑模型定义的业务属性对应的分别是sys_usid、sys_predict_date、sys_predict_time和sys_task_id,返回结果的数据类型为元模型定义的简单类型属性:sys_usid和sys_predict_date返回字符串,sys_predict_time返回时间戳,sys_task_id返回整型。
元模型中定义的对象数组属性,在逻辑模型对应的业务属性为event,其查询列表为EVENT | POSTEVENT(对象名称).PROPERTY(简单属性 <AS 别名 ><,简单属性 <AS 别名>>)<.WHERE(属性比较表达式)><数据切片 | 数组索引>。该查询列表中包含至少一个待查询特征项的名称:简单属性 <AS 别名 ><,简单属性 <AS 别名 >>,或者还包含属性比较表达式:<.WHERE(属性比较表达式)>,或者还包含数据切片和数据索引:<数据切片 | 数组索引>。下面逐一介绍:属性比较表达式是指将特征数据项与常数进行比较,描述原因事件的特征数据项以EVENT表示,描述结果事件的特征数据项以POSTEVENT表示。切片是指从EVENT或POSTEVENT中选取一些数据,索引是指从EVENT或POSTEVENT中选取一个数据。该查询列表的返回结果分三种情况,第一种情况是无需数据切片和数据索引,返回结果为对象数组类型;第二种情况是需要数据切片,返回结果为数组类型;第三种情况是需要数据索引,返回结果为简单类型。
表2-1
针对表2-1对象数组属性的查询列表中可以包含多个属性比较表达式,多个属性比较表达式之间通过AND|OR连接符来连接,表示表达式1和/或表达式2。作为一种示例,属性比较表达式可采用以下语法表示:
比较表达式 | (属性比较表达式) <AND | OR 比较表达式 | (属性比较表达式)>。
其中,每个比较表达式(相当于第一判断式或第二判断式)可采用以下语法表示:
<NOT> 简单属性< | > |= | >= | <= | IN | IS 常数。
针对表2-1中对象数组属性的查询列表中可以包含数据切片,数据切片返回的是一个数据片段,片段包括片段起始和片段结束,数据切片可采用以下语法表示:
[起始值,结束值]。
针对表2-1对象数组属性的查询列表中可以包含数据索引,数据索引返回的是某个数据。数据索引中索引值为正数,还引入了索引值的符合,在索引值的符号为正时,索引值N表示提取结果中靠近预测时刻的第N个设备事件。在索引值的符号为负时,索引值N表示提取结果中远离预测时刻的第N个设备事件,其中,N为正整数。作为一种示例,数据索引可采用以下语法表示:
[索引值]。
下面以查询Wi-Fi状态事件为例,对上文介绍的针对对象数组属性的查询列表进行说明。
Wi-Fi状态事件的业务属性为event,以大写的EVENT表示,所以查询Wi-Fi状态事件的查询列表为:
EVENT(RawWifiStatus).PROPERTY(eventType,wifiBssid).WHERE(wifiLevel>=2)[1,3]。
查询列表中各特征项的名称的含义如下:
EVENT(RawWifiStatus):Wi-Fi状态事件,表示查询的业务属性为event且是event中的Wi-Fi状态事件。
PROPERTY(eventType,wifiBssid):Wi-Fi事件类型和Wi-Fi基础服务集,表示查询的是Wi-Fi状态事件中的Wi-Fi事件类型和Wi-Fi基础服务集。
WHERE(wifiLevel>=2):Wi-Fi强度大于或等于2,表示查询的是Wi-Fi强度大于或等于2的Wi-Fi状态事件。
[1,3]:切片为1至3个数据项,表示取所有满足条件的Wi-Fi状态事件中的第1个事件至第3个事件。
步骤2.1.2.2、定义样本选取条件的语法。
样本选取条件可理解为筛选条件,如果查询语句中没有样本选取条件,那么可理解为查询原始数据表中查询列表的所有数据。而当查询语句中有样本选取条件,那么可理解为在查询列表的所有数据中筛选出符合样本选取条件的数据作为输出。
样本选取条件有两种表达方式,第一种为属性比较表达式(或称第二判断式),与上文属性比较表达式相类似,区别在于,查询列表中的属性比较表达式针对的是对象数组属性,样本选取条件中的属性比较表达式针对的是简单属性,样本选取条件中的属性比较表达式的语法为:
<NOT> 简单属性< | > |= | >= | <= | IN | IS 常数。
例如,查询用户标识时用到的样本选取条件为“sys_usid ='ddffg'”。该样本选取条件为属性比较表达式,表示查询用户标识为'ddffg'的设备事件。
第二种为对象存在表达式(或称第一判断式),对象存在表达式针对的是对象数组,查询的是某个事件类型的设备事件是否存在,其语法为:
<NOT>EXIST 对象数组<时间区域>。
例如,查询Wi-Fi状态事件是否存在时用到的样本选取条件为:exist event(rawwifistatus),该样本选取条件的表达方式是对象存在表达式,表示在Wi-Fi状态事件存在的情况下查询。
在对象存在表达式中,<时间区域>的语法为:
WITHIN | OUTSIDE 时间。
其中时间可定义为单位为秒(s)的整数,在未设置时间的情况下,缺省判断范围为WITHIN t,T 范围,默认值为1800,即时间范围是1800s内,其中,t表示预测时刻predict的预设时段T3前的时刻,T表示预测时刻的预设时段T2后的时刻。如未设时间区域且预测时刻predict=2000s,那么T2=T3=1800s。
t=predict-T3=2000-1800=200,T=predict+T2=2000+1800=3800。
在时间不为缺省值的情况下,时间可以有两种设置方式,如下所示:
WITHIN:表示预测时刻发生前/后时间内。
OUTSIDE:表示预测时刻发生前后时间外。
再次以查询Wi-Fi状态事件是否存在为例,样本选取条件为:exist event(rawwifistatus)within 300,该样本选取条件为对象存在表达式,表示在靠近预测时刻的300s内存在Wi-Fi状态事件的情况下查询。
步骤2.1.2.3、定义样本数量上限值的语法。
样本数量上限值表示一个因果样本中获取的设备事件的数量。在未设置样本数量上限值时,样本数量上限值可以默认为1000个,在设置样本数量上限值时,设备事件的数量为设置的数值。
样本数量上限值为不等于0的整数,若样本数量上限值小于零,则获取所有的设备事件。
例如,需要获取500个设备事件,那么样本数量上限值为:limit 500。需要获取1000个设备事件,那么样本数量上限值为:limit 1000或者为空。需要获取所有设备事件,那么样本数量上限值为limit -N,N为正整数。
作为一种示例,创建样本数量上限值后,从组成因果样本的设备事件中查询设备事件的事件发生时刻靠近预测时刻的N个设备事件,N为样本数量上限值。也就是说,在根据样本数量上限值筛选设备事件的情况下,优先将靠近预测时刻的设备事件筛选出来,剔除远离预测时刻的设备事件,这样构建出来的因果样本既能包含有利于目标事件预测模型进行特征学习的设备事件,也能减少对目标事件预测模型特征学习帮助较小的设备事件的数量。
上文分别针对查询列表、查询语句和样本数量上限值进行了介绍,下面以构建规律支付因果样本为例对定义的样本查询语法整体进行示例性说明。
针对上文表1-2表示的原始数据表执行查询操作,可采用如下查询语句:
SELECT sys_usid AS usid,
sys_predict_time AS predictTime,
EVENT(RawWifiStatus).PROPERTY(sys_time)[1],
EVENT(RawWifiStatus).PROPERTY(eventType,wifiBssid).WHERE(wifiLevel>=2)[1,3],
EVENT(RawMSDPMovement).PROPERTY(status)[1,3]
WHERE ((EXIST EVENT(RawWifiStatus) WITHIN 300)
AND (EXIST EVENT(RawMSDPMovement) WITHIN 300)) AND sys_task_id=33;
其中,查询语句可以是服务器或电子设备响应于构建用于训练目标事件预测模型的目标因果样本的指令创建得到的,该指令可以是服务器或电子设备接收到用户点击开始创建按钮的操作后发出的。查询语句需要按照预设查询语法(即上文定义的语法)来设置,所以查询预计包括预设查询语法,查询语句还包括查询列表。或者查询语句还包括至少一个判断式和/或样本数量上限值。
在上文示出的查询语句中,查询语句包含了预设查询语法、查询列表和至少一个判断式。该查询语句中:
sys_usid AS usid表示选择名为sys_usid(用户标识)且别名为usid的列。
sys_predict_time AS predictTime表示选择名为sys_predict_time(预测时刻)且别名为predictTime的列。
EVENT(RawWifiStatus).PROPERTY(sys_time)[1]表示选择EVENT(RawWifiStatus)(wifi状态事件)中的sys_time(事件发生时刻)的列中的第1个数据。
EVENT(RawWifiStatus).PROPERTY(eventType,wifiBssid).WHERE(wifiLevel>=2)[1,3]表示选择EVENT(RawWifiStatus)(Wi-Fi状态事件)中wifiLevel>=2(Wi-Fi强度大于或等于2)的eventType(Wi-Fi事件类型)的列和wifiBssid(Wi-Fi基础服务集)的列中的第1个至第3个数据。
WHERE((EXIST EVENT(RawWifiStatus) WITHIN 300)表示在靠近预测时刻的300s内存在Wi-Fi状态事件的情况下查询。
AND(EXIST EVENT(RawMSDPMovement)WITHIN 300)) 表示在靠近预测时刻的300s内存在运动状态变化事件的情况下查询。
sys_task_id=33表示采样任务标识为33。
所以该查询语句表示:预测时刻前300s内存在Wi-Fi状态事件、运动状态事件且在采样任务标识33对应的采样任务的情况下采集查询列表为①用户标识列,②预测时刻列、③预测时刻前最近一次Wi-Fi状态事件的事件发生时刻,④预测时刻前Wi-Fi强度大于等于2的第1个到第2个Wi-Fi状态事件的Wi-Fi事件类型和Wi-Fi基础服务集以及⑤预测时刻前第1个到第2个运动状态事件的运动状态。
查询得到的结果如表2-2所示。从表2-2中可以看到,用户标识为“4d9a55875…”的用户的Wi-Fi事件从未接入Wi-Fi改变为接入了无线路由器的MAC地址为“-1469271442,-14…”的Wi-Fi,且该用户的运动状态事件从电梯改变为跑。
表2-2
上文介绍了样本查询的过程,DSL语言将查询不同样本事件的查询语法统一为一个语法,即不论是网络事件、传感器事件、设备运动状态事件、系统应用事件还是三方应用事件,都可采用SELECT 查询列表 <WHERE 样本选取条件><LIMIT 样本数量上限值>来进行样本查询。其中的查询列表里不同对象数组都可以采用相同表达式来查询,所以样本查询语句能够复用,开发效率高。
除了样本查询的语法外,本实施例还基于数据模型提供样本统计的语法,具体如下所示。
步骤2.2、定义样本统计的语法。
样本统计的语法是统计样本数据的数量的语法,样本对应的是前文的特征数据项、特征项。在查询样本之前,先执行统计样本数量的操作,在样本数据的数量不为零的情况下,再进行样本查询就能够输出不为空的样本。
样本统计可采用以下语法表示:
SELECT 统计<WHERE 样本选取条件>。
其中,样本选取条件可参考上文步骤1.2.2的说明,下面对样本统计的语法中的统计进行介绍。
步骤2.2.1、定义统计函数的语法。
COUNT()。
其中,COUNT()用于查询因果样本数量。样本数量为100,说明有100个因果样本。
COUNT(对象数组) 。
其中,COUNT(对象数组)用于查询event的数量,比如event是Wi-Fi状态事件,对象数组的数量为100,表示原始数据表中有100个Wi-Fi状态事件。
AVG(对象数组)。
其中,AVG(对象数组)用于查询平均每个因果样本含有的某个或某些事件类型的设备事件的平均数量,AVG(对象数组)与COUNT(对象数组) / COUNT()的查询结果相同。比如event是Wi-Fi状态事件,AVG(Wi-Fi状态事件)= 100,表示平均每个因果样本包括100个Wi-Fi设备事件。
步骤2.2.2、定义统计语法表达式。
COUNT(<EVENT | POSTEVENT(对象名称).<.WHERE(属性比较表达式)><数据切片| 数组索引>>)。
AVG(EVENT | POSTEVENT(对象名称).<.WHERE(属性比较表达式)><数据切片 |数组索引>)。
表达式中,EVENT和POSTEVENT的属性是对象数组,查询时需要输入对象名称,如对象名称为RawWifiStatus,表示查询的是Wi-Fi状态事件,统计语法表达式1为:
COUNT(EVENT(RawWifiStatus).WHERE(wifiLevel>=2)) AS wifiNum。
其中,WHERE(wifiLevel>=2)表示需满足Wi-Fi强度大于或等于2。EVENT(RawWifiStatus表示查询的是Wi-Fi状态事件。AS wifiNum表示将查询结果的具体字段名称命名为别名wifiNum。统计语法表达式1查询的是原始数据表中Wi-Fi状态事件的数量。
统计语法表达式2为:
AVG(EVENT(RawMSDPMovement)) AS avgMsdpNum。
其中,EVENT(RawMSDPMovement)表示运动状态事件,AS avgMsdpNum表示将查询结果的具体字段名称命名为别名avgMsdpNum。统计语法表达式2查询的是平均每个因果样本含有的运动状态事件的数量。
下面以构建规律支付事件样本为例对定义的样本统计的语法进行示例性说明。
例如,可采用以下结构体对表1-2展示的原始数据表做数据统计:
SELECT COUNT() AS sampleNum,
COUNT(EVENT(RawWifiStatus).WHERE(wifiLevel>=2)) AS wifiNum,
COUNT(EVENT(RawMSDPMovement)) AS msdpNum,
AVG(EVENT(RawMSDPMovement)) AS avgMsdpNum
WHERE ((EXIST EVENT(RawWifiStatus) WITHIN 300)
AND (EXIST EVENT(RawMSDPMovement) WITHIN 300)) AND sys_task_id=33;
该结构体中:
COUNT() AS sampleNum表示查询因果样本的样本数量,并以别名sampleNum作为查询得到的样本数量的具体字段名称。
COUNT(EVENT(RawWifiStatus).WHERE(wifiLevel>=2)) AS wifiNum表示查询Wi-Fi强度大于或等于2的Wi-Fi状态事件的数量,并以别名wifiNum作为查询得到的Wi-Fi状态事件的具体字段名称。
COUNT(EVENT(RawMSDPMovement)) AS msdpNum表示查询运动状态事件的数量,并以别名msdpNum作为运动状态事件的数量所在列的别名。
AVG(EVENT(RawMSDPMovement)) AS avgMsdpNum表示查询平均每个因果样本含有运动状态事件的数量,并以avgMsdpNum作为运动状态事件的平均数量所在列的别名。
WHERE ((EXIST EVENT(RawWifiStatus) WITHIN 300)表示靠近预测时刻(predict)的300s内存在Wi-Fi状态事件。
AND(EXIST EVENT(RawMSDPMovement)WITHIN 300)) 表示靠近预测时刻(predict)的300s内存在运动状态事件。
sys_task_id=33表示采样任务标识为33。
样本数量查询结果如表2-3所示。从表2-3可以看到,通过对表1-2做样本数量查询操作,能够确定表1-2中有545048个因果样本,1807479个Wi-Fi状态事件,18176265个运动状态事件以及平均每个因果样本中有33.35个运动状态事件。
表2-3
上文介绍了样本统计的过程,由于数据建模中,将描述设备事件的特征数据项的属性定义为对象数组,所以在样本统计时就可以通过EVENT|POSTEVENT(对象数组)统计设备事件数量,可以提高样本统计的效率。
通过样本查询或者样本统计后样本查询,服务器能够得到数据集,数据集中包含查询得到的数据,服务器可以对数据集做增删读写查的操作,具体参考下文介绍。
步骤2.3、定义数据集操作的语法。
定义数据集操作的语法目的在于能够实现对数据集的操作,数据集中包含查询得到的用于构建因果样本的设备事件,所以当进行模型选型或者模型训练、推理时,可以将数据集中的设备事件输入算法或模型中,而不必多次从原始数据表中执行样本查询操作。
作为一种示例,将上文获取到的靠近预测时刻的N个设备事件存储到数据集中,数据集中的N个设备事件被用于训练目标事件预测模型,N为样本数量上限值。
步骤2.3.1、定义创建数据集的语法。
CREATE DATASET 数据集名称(属性名称 类型<, 属性名称 类型>);
步骤2.3.2、定义展示数据集信息的语法。
DSC 数据集名称;
步骤2.3.3、定义向数据集中写入数据的语法。
WRITE DATASET 数据集名称 样本查询| 样本统计;
步骤2.3.4、定义读数据集数据的语法。
READ DATASET 数据集名称;
步骤2.3.5、定义删除数据集的语法。
DELETE DATASET 数据集名称;
步骤2.3.6、定义查看数据集列表的语法。
SHOW DATASETS;
下面以构建规律支付事件样本为例对定义的数据集操作的语法进行示例性说明。
在查询到规律支付事件样本后,创建数据集。
例如,可采用如下结构体:
CREATE DATASET regualrPaySamples( sys_predict_date STRING,
usid STRING,
predictTime LONG,
wifi_sys_time LONG,
wifi_eventtype ARRAY[INT],
wifi_wifibssid ARRAY[STRING],
msdp_status ARRAY[STRING]);
该结构体中:
CREATE DATASET regualrPaySamples表示创建名为regualrPaySamples(规律支付因果样本)的数据集。
sys_predict_date STRING表示数据集中有一列名为sys_predict_date(预测日期)的数据,这列数据的属性为String(字符串)。
usid STRING表示数据集中有一列名为usid(用户标识)的数据,这列数据的属性为String(字符串)。
predictTime LONG表示数据集中有一列名为predictTime(预测时刻)的数据,这列数据的属性为Long(长整型)。
wifi_eventtype ARRAY[INT]表示数据集中有一列名为wifi_eventtype(Wi-Fi事件类型)的数据,这列数据的属性为Array[Int](数组)。
wifi_wifibssid ARRAY[STRING]表示数据集中有一列名为wifi_wifibssid(Wi-Fi基础服务集)的数据,这列数据的属性为Array[String](数组)。
msdp_status ARRAY[STRING]表示数据集中有一列名为msdp_status(运动状态)的数据,这列数据的属性为Array[String](数组)。
创建数据集后,可以查看数据集信息。例如,可采用如下表达式:
DESCC regualrPaySamples;
该表达式表示查看名为regualrPaySamples(规律支付因果样本)的数据集。
服务器还可以向数据集中写入数据,例如,可采用如下结构体:
WRITE DATASET regualrPaySamples SELECT sys_usid AS usid,
sys_predict_time AS predictTime,
EVENT(RawWifiStatus).PROPERTY(sys_time)[1],
EVENT(RawWifiStatus).PROPERTY(eventType,wifiBssid).WHERE(wifiLevel>=2)[1,3],
EVENT(RawMSDPMovement).PROPERTY(status)[1,3]
WHERE((EXISTEVENT(RawWifiStatus) WITHIN300)
AND(EXISTEVENT(RawMSDPMovement)WITHIN 300)) AND sys_task_id=33;
该结构体中:
WRITE DATASET regualrPaySample表示向名为regualrPaySample(规律支付事件)的数据集写入样本数据。
写入的样本数据如下:
sys_usid AS usid表示选择名为sys_usid(用户标识)且别名为usid的列。
sys_predict_time AS predictTime表示选择名为sys_predict_time(预测时刻)且别名为predictTime的列。
EVENT(RawWifiStatus).PROPERTY(sys_time)[1]表示选择名为EVENT(RawWifiStatus)的列中的sys_time索引值为1的数据。
EVENT(RawWifiStatus).PROPERTY(eventType,wifiBssid).WHERE(wifiLevel>=2)[1,3]表示选择名为EVENT(RawWifiStatus)的列中的eventType为wifiBssid,且wifiLevel>=2的切片为[1,3]的数据。
WHERE((EXIST EVENT(RawWifiStatus) WITHIN 300)表示在靠近预测时刻(predict)的300s内存在Wi-Fi状态事件的情况下查询。
AND(EXIST EVENT(RawMSDPMovement)WITHIN 300)) 表示在靠近预测时刻(predict)的300s内存在运动事件的情况下查询。
sys_task_id=33表示采样任务标识为33。
此外,服务器还可以读数据集数据:READ DATASET regualrPaySamples,删除数据集DELETE DATASET regualrPaySamples和查看数据集列表SHOW DATASETS。
综上,本申请实施例提供一种数据查询方法,该方法以数据模型定义的属性、业务属性来构建查询语句,其中,查询语句中的待查询特征项、待查询特征数据的名称是业务属性,查询语句中待查询的特征项的存储类型是属性。根据查询语句执行对设备事件的查询操作。示例性的,该方法如图16所示,包括S1601-S1603。
S1601、获取原始数据表,原始数据表存储有设备事件结构化处理后得到的多个特征项;多个特征项包括:设备事件对应的用户标识、设备事件的事件发生时刻以及设备事件的事件内容;其中,事件内容包含至少一个特征数据,且不同事件类型的设备事件的事件内容中包含的特征数据的数据类型不同;其中,用户标识以字符串为存储类型存储于原始数据表的用户标识字段里,事件发生时刻以时间戳为存储类型存储于原始数据表的事件发生时刻字段里,事件内容以对象为存储类型存储于原始数据表的事件内容字段里。
S1602、获取查询语句,查询语句用于从原始数据表中查询组成目标因果样本的设备事件。
S1603、若查询语句指示查询事件内容字段中的至少一个特征数据,则先根据事件内容字段查询事件内容,再从事件内容中查询至少一个特征数据,得到包含至少一个特征数据的设备事件。
由于数据模型定义了描述事件内容的对象属性,用于存储多个特征数据;以及定义了描述设备事件的对象数组属性,用于存储多特征项,所以数据查询方法可以直接对属性为对象或者对象数组的字段执行查询,不必分别查询这些字段下的各特征数据,再在这些特征数据在不同表中都存在时建立跨表关联,因此查询效率更高。
过程二介绍了数据查询的过程,当查询得到多个设备事件后,多个设备事件可能组成了多个因果样本,所以需要从多个设备事件中按照每个因果样本的特点来构建单个因果样本,在服务器侧构建样本可参考过程三的介绍,在电子设备侧构建样本可参考过程四的介绍。
过程三、服务器侧构建样本。
作为一种示例,服务器侧可直接从电子设备采集的设备事件中构建因果样本。该实施例中,因果样本构建方法如图17所示,包括S1701-S1703。
S1701、获取电子设备采集的多个设备事件,并获取目标事件预测模型进行推理预测将发生的设备事件的预测时刻。
S1702、如果从预测时刻开始的第二时长内的第一设备事件为预设预测事件,则从多个设备事件中获取预测时刻前第一时长内电子设备采集的设备事件,得到至少一个原因事件;以及从多个设备事件中获取从预设时刻开始到第一设备事件的事件发生时刻之间的时段内电子设备采集的设备事件,得到至少一个结果事件。
S1703、以至少一个原因事件与至少一个结果事件构建用于训练目标事件预测模型的一个目标因果样本。
作为另一种示例,服务器侧在构建目标因果样本前先从原始数据表中筛选出符合要求的设备事件,然后从符合要求的设备事件中选取设备事件来构建因果样本。如图18所示,该实施例包括下文步骤3.1-步骤3.8。
步骤3.1、获取查询对象。
在获取查询语句后,查询引擎通过对查询语句进行分词、词法分析、语法分析,将由字符串表示的查询语句转化为能够查询的数据结构(查询对象)。
查询对象包括查询语句中的三部分,分别是Select查询语句(对应上文查询列表),Where查询语句(对应上文样本选取条件),Limit查询语句(对应上文样本数量上限值)。
根据Select查询语句、Where查询语句、Limit查询语句执行的先后顺序构建二叉树,二叉树中的每个子节点保存一个查询语句(如Select查询语句、Where查询语句、Limit查询语句)。
步骤3.2、查询数据项。
遍历因果样本中的每个数据项,判断数据项是否符合Select查询语句、Where查询语句、Limit查询语句,如果数据项符合Select查询语句、Where查询语句、Limit查询语句,输出该数据项对应的设备事件,如果数据项不符合Select查询语句、Where查询语句、Limit查询语句,则不输出该数据项对应的设备事件。
为了提高后续构建样本的速度,服务器会查询事件发生时刻EventTime和数据项编号ItemTypeID,其中,通过事件发生时刻EventTime可以将数据项内容按时间顺序排序,通过数据项编号ItemTypeID可以快速定位到对应的数据项。
上文步骤3.1和步骤3.2是电子设备或服务器中部署的查询引擎执行的步骤,查询引擎具备解析查询语句得到查询对象,输出符合查询对象的数据项所对应的设备事件的查询能力。
查询得到符合查询对象的数据项所对应的设备事件之后,执行步骤3.3。
步骤3.3、构建结构数据集。
结构数据集包含多个结构数据,每个结构数据以键值对形式表示,键名key存储用户标识(usId)和事件发生日期(date),键值value存储数据项,如步骤3.1提供的查询语句中,键值value存储数据项:事件发生时刻EventTime、数据项编号ItemTypeID,以及存储特征数据:Wi-Fi事件类型eventType和Wi-Fi基础服务集wifiBssid。
作为一种示例,可以拼接键名key的各字段内容,比如,得到key:usId+Date以及value:EventTime,ItemTypeID,eventType,wifiBssid得到结构数据,每个设备事件在构建因果样本时以结构数据表征。
步骤3.4、数据集排序。
为了提高对结构数据集的筛选速度,可以对结构数据集中的各个结构数据进行排序。具体的,可以按照键名中的usId对各个结构数据排序。或者按照键值中的事件发生时刻EventTime对各个结构数据进行排序。其中各个结构数据按事件发生时刻的先后顺序排列则表示各个结构数据表示的设备事件按事件发生顺序排列。通过排序使得结构数据有次序进入队列,能提高构建样本的效率,具体参考步骤3.5的说明。
步骤3.5、构建样本。
作为一种示例,每个数据结构是按照键名key来分区的,相同用户标识的设备事件排在一起,且相同用户标识的设备事件中,相同事件发生日期的设备事件排在一起,按照键名key实现了分区。每个数据结构还按照键值value来排序,每个分区中,按照事件发生时刻的先后顺序将事件发生时刻在前的设备事件排在前,事件发生时刻在后的设备事件排在后。
对结构数据分区排序后,首先,初始化事件缓存队列eventBufferQueue用于存放结构数据集中所有结构数据,初始化构建中样本队列unfinishedSampleQueue用于存放构建中样本sample,初始化样本列表sampleList List[Sample]用于存放构建好的样本sample。其中,样本sample相当于上文因果样本,样本sample用于存放结构数据。
构建样本包括:遍历各个结构数据。
构建样本还包括:将经过排序的每个结构数据插入事件缓存队列eventBufferQueue。
事件缓存队列的特点是,结构数据从队尾进队,从队头出队,先进事件缓存队列的结构数据先出。
其中,步骤3.3-步骤3.4是为了简化后续构建因果样本的时间,在一些实施例中,步骤3.3-步骤3.4可省略,即步骤3.2之后,按照多个设备事件的事件发生时刻的先后顺序,依次将多个设备事件插入缓存队列eventBufferQueue。
构建样本还包括:从事件缓存队列中对t之前的结构数据执行出队操作。
其中,t为预测时刻predict前的第一时长的第一时刻,相对应还有第二时刻T,T为预测时刻predict开始的第二时长的时刻。设置t,T的目的在于为因果样本中的结构数据设置前后时间区间,[t,predict]之间的结构数据用于描述原因事件,(predict,T]之间的结构数据用于描述结果事件。t之前以及T之后的结构数据剔除在因果样本外,从而避免这些对模型训练效果起到作用较小的结构数据对模型选型、模型训练、模型推理造成干扰。
构建样本还包括:针对t之后的结构数据,如果该结构数据对应的设备事件发生时刻EventTime是预测时刻predict,则将[t,predict]内的结构数据作为样本sample,此时样本sample表示因果样本中的原因事件。构建完成包含原因事件的样本sample后,将样本sample插入构建中样本队列unfinishedSampleQueue。
构建样本还包括:正因果样本出队列。
针对t之后的结构数据,如果该结构数据对应的事件发生时刻EventTime不是预测时刻predict,遍历构建中样本队列unfinishedSampleQueue中的每个结构数据,如果该结构数据是预设预测事件对应的结构数据,那么将该结构数据及(predict,T]内的结构数据插入样本sample中,此时样本sample既包含描述原因事件的结构数据,也包含描述结果事件的结构数据,样本sample便构建完成,因此样本sample从构建中样本队列unfinishedSampleQueue中出队,并插入到List[Sample]中。
构建样本还包括:负因果样本出队列。
针对构建中样本队列unfinishedSampleQueue中的每个样本sample,如果T时刻sample未出队,说明该样本sample不包含预设预测事件对应的结构数据,那么在T时刻将(predict,T]内的结构数据插入样本sample中,并将样本sample从构建中样本队列unfinishedSampleQueue出队,并插入到List[Sample]中。
下面以一具体示例对步骤3.5进一步说明。如图19所示,E0,E1…E7表示结构数据。t是根据predict创建的第一时刻,t'是根据predict'创建的第一时刻,T是根据predict创建的第二时刻,T'是根据predict'创建的第二时刻。
构建样本包括图20所示的步骤S2001-S2014。
S2001、构建用于存放按照事件发生时刻的先后顺序排列的结构数据的结构数据集。
其中,按照事件发生时刻的先后顺序排列是指先发生的设备事件排在前,后发生的设备事件排在后。
执行S2001之后,结构数据集中包含图19所示的E0,E1…E7。
S2002、判断结构数据集是否为空。
遍历结构数据集,如果结构数据集为空,则说明结构数据集中没有结构数据,可结束流程(图20中未示出),如果结构数据集不为空,则说明结构数据集中有结构数据,那么执行S2003。
S2003、如果结构数据集不为空,按照先后顺序将结构数据集中的结构数据插入事件缓存队列。
具体的,首先,向事件缓存队列eventBufferQueue插入结构数据集中的第一个结构数据,第一个结构数据对应图19中的E0,用于表示根据查询列表查询到的所有设备事件中第一个发生的设备事件。插入第一个结构数据后,针对第一个数据类型执行S2004。然后插入结构数据集中的第二个结构数据,第二个结构数据对应图19中的E1,用于表示根据查询列表查询到的所有设备事件中第二个发生的设备事件。插入第二个结构数据后,针对第二个数据类型执行S2004。结构数据集中的其他结构数据以此类推,直到针对结构数据集中的最后一个结构数据执行S2004便停止执行S2003。
需要说明的是,在设备事件未经过上文步骤3.3-步骤3.4处理的情况下,S2003可替代为:
如果存在多个设备事件,则按照多个设备事件的事件发生时刻的先后顺序,依次将多个设备事件插入事件缓存队列。
S2004、判断事件缓存队列中队尾的结构数据的事件发生时刻与事件缓存队列中队头的结构数据的事件发生时刻之间的差值是否大于或等于第一时长。
如果事件缓存队列中队尾的结构数据的事件发生时刻与事件缓存队列中队头的结构数据的事件发生时刻之间的差值大于或等于第一时长,则执行S2005。如果事件缓存队列中队尾的结构数据的事件发生时刻与事件缓存队列中队头的结构数据的事件发生时刻之间的差值小于第一时长,则执行S2006。
其中,队尾的结构数据指的是最近插入事件缓存队列的结构数据,队头的结构数据指的是事件缓存队列中最早入队的结构数据。
S2005、如果差值大于或等于第一时长,对事件缓存队列中队头的结构数据执行出队操作。
如图19所示,在E2插入事件缓存队列eventBufferQueue后,E0出队。
S2004-S2005目的在于将事件发生时刻不满足[t,predict]的设备事件从事件缓存队列eventBufferQueue剔除。在每个结构数据都插入过事件缓存队列eventBufferQueue且执行了S2004-S2005之后,事件缓存队列eventBufferQueue存储的是表示原因事件的结构数据,即事件缓存队列eventBufferQueue中包含了多个原因事件。在S2005之后,执行下文S2006。
S2006、判断事件缓存队列中队尾的结构数据的事件发生时刻是否是预测时刻。
如果队尾的结构数据的事件发生时刻是预测时刻,执行下文S2007,如果队尾的结构数据的事件发生时刻不是预测时刻,执行下文S2210。
S2007、初始化样本。
在预测时刻predict初始化样本sample。样本sample用于存储原因事件对应的结构数据以及在有结果事件的情况下,还存储结果事件对应的结构数据。
样本sample中的每个结构数据包括设备标识、预测日期、任务标识、预测时刻等数据项。初始化样本sample目的是记录各数据项的值,记录完毕后,一个样本sample就是一个因果样本。
S2008、选取原因事件。
将图19中[t,predict]内的E1,E2,E3加入第一个样本sample中。将图19中[t',predict']内的E2,E3,E4,E5加入第二个样本sample中。
S2009、将样本插入构建中样本队列。
对应于图19为,将第一个样本sample和第二个样本sample插入构建中样本队列unfinishedSampleQueue中。
S2007-S2009目的是将事件缓存队列eventBufferQueue存储的是原因事件对应的结构数据插入样本sample中,构建出因果样本的原因事件。
S2010、判断构建中样本队列是否为空。
如果构建中样本队列为空,说明还未构建存储有原因事件的因果样本。那么返回S2002。如果构建中样本队列不为空,执行S2011。
S2011、遍历构建中样本队列。
S2012、如果事件缓存队列中队尾的结构数据是预设预测事件对应的结构数据,则完成样本sample构建,将样本sample插入到样本列表,并将样本sample从构建中样本队列unfinishedSampleQueue出队。
该步骤目的是将正因果样本(即样本sample)构建完成。在预测时刻的第二时长后,完成样本构建,将样本sample插入到样本列表,并从构建中样本队列出队。
S2012还包括:如果预测时刻后的第二时长内事件缓存队列的结构数据都不是预设预测事件对应的结构数据,则将事件缓存队列中剩余的结构数据加入到样本中。
由于前文对表示原因事件的结构事件执行了出队操作,所以事件缓存队列中剩余的结构数据描述的是电子设备从预测时刻开始采集的第二时长内的设备事件,这些设备事件都不是预设预测事件,因此以这些设备事件与原因事件构建的因果样本为负因果样本。
对应于图19为,将E4加入第一个样本sample中,结束对第一个样本的构建,第一个样本sample包含E1、E2、E3、E4。将E6加入第二个样本中,结束对第二个样本的构建,第二个样本包括E2、E3、E4、E5、E6。
作为一种示例,在S2012之后,还包括:
S2013、判断构建中样本队列是否为空。
如果构建中样本队列为空,则说明构建中样本队列unfinishedSampleQueue中的所有样本sample都构建完成,且都已出队,那么结束构建样本(图20中未示出)。
如果构建中样本队列不为空,说明构建中样本队列unfinishedSampleQueue还有未构建完成的样本sample,因此执行S2014。
S2014、如果构建中样本队列不为空,将构建中样本队列中的样本出队,插入样本列表。
通过S2014,便可进一步利用到未构建完成的样本sample中的结构数据,有助于扩大训练目标事件预测模型的样本数量。
在构建样本之后,还根据查询语句中的过滤条件执行对因果样本的筛选步骤。具体的,用于筛选因果样本的过滤表达式参考下文步骤3.6,用于筛选因果样本中的各数据项的过滤表达式参考下文步骤3.7。
步骤3.6、选取样本。
可采用步骤2.1.2描述的属性比较表达式来选取样本,关于属性比较表达式的介绍可参考上文说明,在此不予赘述。选取样本的目的在于将同一事件类型的设备事件选取出来,经过选取样本后,样本中包含的都是同一事件类型的设备事件,如都为Wi-Fi状态事件。
如图21所示,选取样本的过程包括:
S2101、判断样本列表是否为空。
如果样本列表不为空,执行S2102,如果样本列表为空,结束流程(图21中未示出)。
S2102、输入因果样本。
其中,因果样本是经过步骤3.5构建得到的样本sample。
S2103、判断因果样本是否满足过滤表达式。
过滤表达式用于筛选因果样本中的描述设备事件的结构数据,其中结构数据相当于上文特征数据项,因此筛选因果样本的过滤表达式相当于筛选对象数组的属性比较表达式,如果因果样本满足过滤表达式,则因果样本被输出,如果因果样本不满足过滤表达式,则因果样本被剔除。
作为一种示例,为了减少筛选因果样本的次数,提高选取效率,S2103进一步包括:
S2103a、对所有用于筛选因果样本的过滤表达式做二叉树解析处理,得到解析结果。
其中,解析结果记为whereFlag。
解析结果为布尔值,即解析结果为true或false。
S2103b、判断解析结果是否为真。
如果解析结果为真,执行S2103c,否则执行S2101。
S2103c、如果解析结果为真,即whereFlag=ture,将样本列表中的因果样本插入到选取样本列表中。
在S2103c执行结束后,返回S2101。
S2104、输出满足过滤表达式的因果样本。
通过S2101-S2104,服务器从因果样本(样本sample)中筛选符合过滤表达式的结构数据,输出符合过滤表达式的因果样本。比如,样本sample中包括E1、E2、E3、E4,经过筛选后样本sample包括E2、E3。
在S2103a中,针对不同类型的过滤表达式之间的二叉树解析的返回结果,S2103a进一步包括S1、S2或S3。
S1、采用过滤器1对简单表达式进行二叉树解析。
其中,简单表达式是针对简单类型的表达式(如上文提到的第一判断式),如采样任务标识为33中的采样任务标识为简单类型,所以该表达式为简单表达式。
过滤器1为针对单个简单表达式进行过滤的过滤器Filter。
S2、采用过滤器2和过滤器3对对象数组表达式进行二叉树解析。
其中,对象数组表达式是针对对象数组类型的表达式(如上文提到的第二判断式),如300s存在Wi-Fi状态事件为一个判断Wi-Fi状态事件是否存在的表达式,该表达式中的Wi-Fi状态事件的属性为对象数组,所以该表达式为对象数组表达式。
对象数组表达式中可以嵌套有DotWhereExpression(或称嵌套表达式),嵌套表达式嵌套有多个简单表达式。针对嵌套表达式进行过滤的过滤器2先分别通过多个过滤器1对多个简单表达式进行过滤,输出解析结果,再将多个过滤器1输出的解析结果做逻辑运算,得到嵌套表达式对应的解析结果。
对象数组表达式嵌套有嵌套表达式是指对象数组表达式既包括对象数组表达式,还包括嵌套表达式。针对对象数组表达式进行过滤的过滤器3先分别采用过滤器3对对象数组表达式进行过滤输出解析结果以及采用过滤器2对嵌套表达式进行过滤输出解析结果,再将过滤器3输出的解析结果和过滤器2输出的解析结果做逻辑运算,得到对象数组表达式对应的解析结果。
如果对象数组表达式中未嵌套有嵌套表达式而是仅包含对象数组表达式,那么针对对象数组表达式进行过滤的过滤器3对对象数组表达式进行过滤输出解析结果。
S3、采用过滤器4、过滤器1和过滤器3对混合表达式进行二叉树解析。
其中,混合表达式包含简单表达式以及对象数组表达式。混合表达式是针对组合类型的表达式。
解析混合表达式需要分别对简单表达式和对象数组表达式进行解析,再将简单表达式的解析结果和对象数组表达式的解析结果做逻辑运算。
采用过滤器4对混合表达式进行过滤,过滤器4中包含了过滤器1和过滤器3,过滤器1用于对简单表达式进行过滤,过滤器3用于对对象数组表达式进行过滤。过滤器1的解析结果和过滤器3的解析结果做逻辑运算,得到过滤器4的解析结果。
在S1、S2和S3执行之后,都会返回解析结果,并结束解析。
下面对过滤器1的实现流程进行说明。
如图22所示,该方法包括:
S2201、输入简单表达式以及因果样本。
S2202、初始化选取样本列表。
其中,选取样本列表selectSampleList用于存放符合简单表达式的因果样本。
S2203、根据简单表达式中的数据项、操作符和常量,推导出解析结果,解析结果为布尔值。
示例性的,将查询引擎会调用因果样本中简单表达式所针对的数据项,如简单表达式针对用户标识,那么输入简单表达式以及用户标识。查询引擎将每个用户标识与简单表达式做运算,如果用户标识符合简单表达式,则输出的解析结果为真true,表示数据项“用户标识”对应的设备事件需要被获取,如果用户标识不符合简单表达式,则输出的解析结果为假false,表示数据项“用户标识”对应的设备事件不需要被获取。
S2204、将符合解析结果的设备事件插入选取样本列表中。
下面对过滤器2的实现流程进行说明。
过滤器2分别采用多个过滤器1根据每个简单表达式中的数据项、操作符和常量,推导出解析结果,解析结果为布尔值。将每个过滤器1输出的解析结果做逻辑运算,得到过滤器2输出的布尔值。
比如,两个过滤器1推导出的解析结果为真true,那么过滤器2对两个解析结果做逻辑运算输出的布尔值为真true。两个过滤器1中的任一个过滤器1推导出的解析结果为假false,那么过滤器2对两个解析结果做逻辑运算输出的布尔值为假false。
下面对过滤器3的实现流程进行说明。
如图23所示,该方法包括:S2301-S2308,其中,S2301-S2304是针对“对象存在表达式”的解析过程,对象存在表达式以Exist或者NOT Exist起始,表示对象存在或者对象不存在。S2305-S2306是针对“属性比较表达式”的解析过程,属性比较表达式以Where起始,包含属性、操作符和常数。S2307-S2308是结果的输出。
S2301、判断对象数组是否存在于定义的属性中。
如果对象数组在定义的数据模型中不存在,则执行S2308。如果对象数组在定义的数据模型中存在,则执行S2302。
以对象数组表达式为:exist event(rawwifistatus)within 300为例,rawwifistatus为对象数组,其是逻辑模型中定义的系统属性,存在于定义的属性中,那么执行S2302。
S2302、判断对象数组是否存在于因果样本中。
其中,因果样本是指构建样本后得到的因果样本,如上文中样本列表sampleList中的每个样本sample。示例性的,若样本sample针对的是事件是Wi-Fi状态事件,而对象数组针对的事件是运动状态事件,则说明对象数组不存在于因果样本中,执行S2308。反之,如果对象数组存在于因果样本,则执行S2303。
S2303、判断时间范围是否为空。
其中,时间范围对应上文表达式中的within 300,如果时间范围不为空,说明该表达式限制了时间范围,那么执行S2304。如果时间范围为空,则说明该表达式不限制时间范围,那么执行S2305。
S2304、判断时间范围是否存在于定义的属性中。
在元模型中定义有时间范围为within和outside,那么判断时间范围是否存在于定义的属性中是指判断时间范围是否是within或outside。如果时间范围不存在于定义的属性,则执行S2308,如果时间范围存在于定义的属性,则执行S2305。
S2305、判断对象数组表达式中是否包含属性比较表达式。
如果对象数组表达式中不包含属性比较表达式,则说明属性比较表达式为空,即where==NULL,那么执行S2307。如果对象数组表达式中包含属性比较表达式,则说明属性比较表达式不为空,那么执行S2306。
S2306、判断属性比较表达式是否存在于定义的样本查询条件中。
样本查询条件中定义了属性比较表达式的表达式结构,包括“where 属性 操作符常数”。如果属性比较表达式存在于定义的样本查询条件中,则符合解析要求,那么执行S2307,如果属性比较表达式不存在与定义的样本查询条件中,则不符合解析要求,那么执行S2308。
S2307、返回解析结果,解析结果为真。
S2308、结束解析过程。
上文分别对简单表达式和对象数组表达式单独做解析处理。下面介绍对混合有简单表达式和对象数组表达式的解析处理过程。
将混合有简单表达式和对象数组表达式的表达式称为混合表达式,如:
WHERE ((EXIST EVENT(RawWifiStatus) WITHIN 300) AND (EXIST EVENT(RawMSDPMovement) WITHIN 300)) AND sys_task_id=33。
在该表达式中,既包含针对对象数组“RawWifiStatus”的表达式以及针对对象数组“RawMSDPMovement”的表达式,又包含针对简单属性“sys_task_id”的表达式。
针对混合表达式,首先采用上文提到的针对简单表达式的解析方法和针对对象数组表达式的解析方法分别得到对应的解析结果,解析结果为布尔值。
如图24所示,二叉树为对查询语句解析得到的能够查询的数据结构(查询对象)。
该表达式中,得到的针对RawWifiStatus的表达式(记为表达式1)的解析结果为false,针对RawMSDPMovement的表达式(记为表达式2)的解析结果为true,针对sys_task_id的表达式(记为表达式3)的解析结果为true。然后对三个解析结果做逻辑运算。具体的,表达式是1和表达式2之间以“AND”连接,表示两个表达式都需要满足,因此对表达式1的解析结果和表达式2的解析结果做AND逻辑运算,得到表达式1 AND 表达式2的混合表达式(记为表达式4)的解析结果为false。然后,表达式4和表达式3之间以“AND”连接,表示两个表达式都需要满足,因此对表达式4的解析结果和表达式1的解析结果做AND逻辑运算,得到表达式4 AND 表达式3的混合表达式(记为表达式5)的解析结果为false。所以上述混合表达式的解析结果为false,那么不输出设备事件。
作为一种示例,对该表达式的解析过程如图25所示,包括S2501-S2505。
S2501、输入混合表达式、因果样本,初始化第一栈和第二栈,第一栈用于记录二叉树每个节点中的布尔值,第二栈用于记录二叉树每个节点的表达式。
其中,混合表达式中的各个简单表达式或对象数组表达式对应存储于二叉树的节点中,
二叉树中的父节点对应的表达式是其两个子节点的表达式组合。
S2502、遍历左子树,针对左子树中任一个节点,如果该节点对应的是混合表达式,插入第二栈中并设置为未访问状态,否则,插入第二栈中并设置为访问状态。
S2503、读取第二栈的栈顶元素,如果右子树不为空,且右子树中的节点为未访问状态,将节点对应的表达式插入第二栈。
第二栈中允许进行插入和删除操作的一端称为栈顶,另一端为栈底,栈顶元素是指第二栈中允许插入的一端读取的表达式。
S2502的目的是将非混合表达式的表达式(即表达式1,表达式2和表达式3)插入第二栈,S2503的目的是将混合表达式(即表达式4,表达式5)插入第二栈。那么根据第二栈中先插入栈中的元素先出栈的特点,优先出第二栈的是简单表达式和对象数组表达式,最后出第二栈的是混合表达式。也就是说,S2502和S2503将二叉树中各节点的表达式插入第二栈的目的是使得混合表达式中的各个表达式按优先级高低进行逻辑运算,以输出正确结果。
S2504、针对第二栈中的栈顶元素,如果该栈顶元素是混合表达式,则计算栈顶元素对应节点的两个子节点的布尔值运算结果,并将布尔值运算结果作为栈顶元素对应节点的布尔值插入第一栈;否则,计算栈顶元素节点的布尔值,并将栈顶元素节点的布尔值插入第一栈。
S2505、获取第一栈的栈顶值,将栈顶值作为混合表达式的解析结果。
另外,针对包含简单表达式、对象数组表达式和混合表达式的表达式(记为复杂表达式),如图26所示的方式解析,通过过滤器1对简单表达式进行解析,输出每个特征数据是否满足简单表达式对应的解析结果。采用过滤器3对对象数组表达式进行解析,输出每个特征数据是否满足对象数组表达式或混合表达式的解析结果。并采用过滤器4对混合表达式进行解析,输出每个特征数据是否满足同时对象数组表达式和混合表达式的解析结果。然后对过滤器3输出的解析结果和过滤器4输出的解析结果进行逻辑运算,以及对过滤器1输出的解析结果和经过逻辑运算得到的解析结果进行逻辑运算,得到每个特征数据是否满足复杂表达式的解析结果,根据解析结果来过滤特征数据(获取包含解析结果为真True的特征数据的设备事件),输出最终的过滤结果。其中,关于过滤器1、过滤器3和过滤器4的解释可参考图22-图23及其相关说明。
步骤3.7、选取特征数据。
该步骤用于对每个因果样本中的各特征数据进行筛选。如特征数据是Wi-Fi状态事件的Wi-Fi名称,选取特征数据是用于选取Wi-Fi名称符合条件的目标Wi-Fi名称所对应的设备事件。筛选分为两个部分,其一是通过属性比较表达式筛选符合条件的特征数据,其二是通过切片或索引从符合条件的特征数据中进一步筛选目标特征数据,得到包含目标特征数据的设备事件。属性比较表达式和切片或索引这两个部分都是可选的,具体的,如果没有属性比较表达式和切片、索引,则选取的是因果样本的事件内容中的所有特征数据。如果只有属性比较表达式,那么选取的是因果样本中符合条件的特征数据。如果只有切片、索引,那么选取的是因果样本中目标特征数据。
如图27所示,选取特征数据包括S2701-S2703。
S2701、遍历选中的样本。
S2702、获取单个样本。
针对每个样本,执行下文S2702a-S2702e。
S2702a、遍历查询列表。
S2702b、选取符合属性表达式的特征数据。
S2702c、对选取符合属性表达式的特征数据执行切片或索引操作。
S2702d、获取切片对应的数组或索引对应的属性值。
S2702e、返回单个样本。
S2703、输出样本集。
下面以执行步骤3.6后得到的选取样本列表中的样本sample作为因果样本为例,说明本步骤选取特征数据的具体过程。如图28所示,该方法包括:
S2801、遍历选取样本列表。
其中,选取样本列表selectSampleList中的样本sample包含多个特征数据项,每个特征数据项包含事件内容,特征数据存储于样本列表中的事件内容字段中。
S2802、判断属性选取条件是否仅针对简单属性。
简单属性是元模型定义的属性,如字符串、数值、布尔值、时间戳。如果不止针对简单属性,则执行S2803,否则,返回经过切片和索引后的设备事件(图28中未示出)。
S2803、判断属性选取条件是否包含属性比较表达式。
若属性选取条件包含属性比较表达式,则执行S2804,若属性选取条件不包含属性比较表达式,执行S2805。
S2804、从因果样本中筛选符合属性比较表达式的设备事件。
S2805、判断属性选取条件中是否包含切片。
若属性选取条件中不包含切片,则执行S2806,若属性选取条件中包含切片,执行S2807。
S2806、判断属性选取条件中是否包含索引。
若属性选取条件中包含索引,执行S2808,若属性选取条件中不包含索引,则执行S2807。
S2807、从符合属性比较表达式的设备事件中筛选切片范围内的设备事件。
S2808、从符合属性比较表达式的设备事件中筛选索引对应的设备事件。
S2809、输出符合属性比较表达式的设备事件。
S2807至S2809的任一步骤执行结束,则执行S2810,以存储结果。
S2810、将设备事件存储于样本列表中。
在S2810之后,再从选取样本列表中获取第二个样本sample,并针对第二个样本sample执行S2802-S2810,直至遍历完选取样本列表中的最后一个样本sample,结束循环。此时得到的样本列表中包含选取样本列表中各个样本sample经过属性选取后的设备事件,因此结束属性选取的流程。
下面对索引和切片的方法进一步说明,如图29所示,该方法包括:
S2901、获取因果样本。
本实施例中,因果样本的属性为对象数组,因果样本包括多个特征数据项,每个特征数据项由多个特征项组成,而切片和索引是针对特征项“事件内容”中的各特征数据的筛选操作,基于对特征数据的筛选从而获取包含有符合筛选条件的设备事件。
S2902、判断针对因果样本中的设备事件的筛选操作是否为索引操作。
该步骤可参考上文S2806,如果属性选取条件中包含索引,则说明筛选操作是索引操作。若属性选取条件中包含索引,则执行S2903,若属性选取条件中不包含索引,则执行S2911。
S2903、从属性选取条件中获取索引值。
S2904、获取索引操作所针对的设备事件的数组长度。
针对每一类设备事件,设备事件的数组长度表示设备事件的数量。示例性的,如果有10个Wi-Fi状态事件,那么对应有10个设备事件项,在因果样本中不包含缺省值的情况下,Wi-Fi状态事件的Wi-Fi名称有10个,那么索引所针对的Wi-Fi名称的数组长度是10。在Wi-Fi名称有缺省值的情况下,如缺两个值,那么Wi-Fi状态事件的Wi-Fi名称有10个,索引值所对应的数组长度是8。在本步骤中,可以将Wi-Fi名称保存到数组中,通过查询数组长度从而确定Wi-Fi名称的数量。
S2905、判断索引范围是否在数组范围内。
比较索引值和数组长度的大小,若索引值小于或等于数组长度,则索引范围在数组范围内,那么可以从存储设备事件的数组中获取到索引值对应的设备事件,则执行S2906,反之则不能够获取到,执行S2910。
S2906、判断是否为正索引。
作为一种示例,可以通过字段is_post指示索引的正负性,如果is_post为true,则索引为正,如果is_post为false,则索引为负。
本实施例引入负索引表示能够以正索引相反的查询顺序查询索引值对应的设备事件。所以该步骤中,判断索引正负性能够确定索引值所指示的查询顺序。
比如将正索引值定义为以数组的第一个到最后一个的顺序查询索引值对应的设备事件。那么负索引值就定义为从数组的最后一个到第一个的顺序查询索引值对应的设备事件。在设备事件数量大的情况下,通过引入负索引值可以即使输入的是较小的索引值也能够获取到数组中靠后的设备事件,使属性选取条件更简洁。
执行S2906之后,如果判断结果为是,则执行S2907,如果判断结果为否,则执行S2909。
S2907、从存放设备事件的数组中获取索引值对应的设备事件。
S2908、输出索引结果,索引结果包括索引值对应的设备事件。
S2909、对存放设备事件的数组进行翻转,得到翻转数组,从翻转数组中获取索引值对应的设备事件。
翻转数组与存放设备事件的数组相比,数组内位置互相对称的两个设备事件交换了位置。
在S2909之后,执行S2908。
S2910、输出索引结果,索引结果为空。
索引结果为空,说明未输出设备事件。因此该索引值所在的属性选取条件对属性的筛选结果为空,意味着不输出设备事件。
S2903-S2910是针对数据索引操作的实现流程,下面对数据切片操作的实现流程进行说明。
S2911、根据切片操作的切片范围确定切片起始值和切片结束值。
S2912、获取切片操作所针对的设备事件的数组范围。
S2913、获取切片范围和数组范围共有的范围,作为有效切片范围。
S2914、判断切片标识是否有效。
若切片标识有效,则执行S2915,若切片标识无效,则执行S2919。
S2915、判断是否为正切片。
作为一种示例,可以通过字段is_post指示切片的正负性,如果is_post为true,则切片为正,如果is_post为false,则切片为负。负切片的切片范围与正切片的切片范围相反。
如果是正切片,则执行S2916,如果是负切片,则执行S2918。
S2916、从存放设备事件的数组中获取有效切片范围对应的设备事件。
S2917、输出切片结果,切片结果包括有效切片范围对应的设备事件。
S2918、对存放设备事件的数组进行翻转,得到翻转数组,从翻转数组中获取有效切片范围对应的设备事件。
该步骤可参考上文S2909的说明。在S2918之后,执行S2917。
S2919、输出切片结果,切片结果为空。
S2911-S2919是针对数据切片操作的实现流程,数据切片操作和上文的数据索引操作是两个并且实施的方案,在完成切片操作和切片索引后,将索引结果和切片结果进行存储,即执行S2920。
S2920、将切片结果和索引结果保存到结果集中。
其中,结果集sliceDataList在S2901之前初始化,结果集存放的是因果样本经过切片操作和索引操作后对应的目标因果样本,然后,服务器执行步骤3.8,以输出样本。
步骤3.8、输出样本。
该步骤中,服务器可以构建将目标因果样本保存至结果集sliceDataList,对结果集的操作可参考上文步骤2.3介绍的数据集操作语法。目标因果样本可用于模型选型、模型训练或模型推理。
需要说明的是,上文步骤3.6-步骤3.8介绍了在构建因果样本之后,按照过程2定义的查询语句对因果样本中的设备事件进行筛选的过程。在具体实施时,这些步骤也可省略,即步骤3.5之后,不对因果样本进行筛选,直接输出样本。
过程四、电子设备侧构建样本。
上文提到,服务器通过因果样本在多个算法中选型,其中,因果样本可以从某个电子设备发送的设备事件中构建得到,也可以从多个电子设备发送的设备事件中构建得到。当算法的精准度得到论证后,作为一种示例,服务器以某个电子设备采集的多个设备事件构建得到的因果样本对待训练的目标事件预测模型进行训练,得到针对单个用户具有更好推荐效果的目标事件预测模型。训练完成后,服务器将目标事件预测模型发送给电子设备。电子设备能够使用目标事件预测模型实现模型推理,并基于推理得到结果事件向用户推送信息,如结果事件为预设预测事件时,向用户推送与预设预测事件相关的信息。也就是说,该示例中模型推理在电子设备侧执行,且在电子设备侧模型推理以设备事件构建样本,将电子设备侧构建的样本称为原因事件。
目前设备事件存储于数据库中,模型推理需获取因果样本时,需要从数据库(如spark SQL数据库)中获取设备事件来构建因果样本,电子设备侧构建因果样本存在的问题是,第一,查询时需要做大量跨表关联运算,计算复杂且重复开发,运行效率低,所以因果样本的构建速度慢,无法满足算法实时推理的目的,第二,数据库涉及多表存储,其存储效率低,查询特征数据项中各特征项的时延、功耗高。
针对第一点,通过数据建模方法和围绕建模得到的数据模型构建的查询方法能够解决,具体可参考服务器侧构建样本的介绍,而针对第二点,本申请实施例提供了一种原因事件构建方法,能够较快的构建原因事件,从而较快的基于原因事件进行模型推理。
电子设备侧可采用如图8所示的数据中台实现特征数据项的写入和读取过程。具体的,数据中台的结构如图30所示,
数据中台包括:北向API层、业务层、业务组件层、基础组件层和南向API层。
北向API层提供数据中台和基础架构层之间通信的接口服务,北向API层包括数据接入API和数据读取API。
数据接入API提供数据接入服务,数据接入API能够接入设备事件转换的特征数据项,还能够接入业务事件如系统应用事件、三方应用事件等。
数据读取API提供数据读取服务,数据读取API能够在模型推理时查询特征数据项。其中,查询方式可以是DSL查询,参考上文过程三所示,查询方式也可以是SQL查询。
业务层提供采样管理服务、存储管理服务和查询管理服务。
采样管理服务用于管理电子设备的采样策略,如采样策略包括:将特征数据项作为分析数据(对应图30中分析数据);采样策略还包括是否将特征数据项上云保存(对应图30中上云存储);以及采样策略还包括:电子设备是否主动采集设备数据(对应图30中主动采集)。
存储管理服务用于管理电子设备的存储策略,如存储策略包括:白名单、路由、双写、批流,其中,白名单策略是指设定白名单应用,如果开启信息推送的应用是白名单应用,则进行推荐,否则不推荐。路由是指通过对路由的控制实现对数据流量的控制。双写策略是指是否支持双写,其中双写是指特征数据项或业务事件双向写入两个数据库。批流策略是指是否支持批流,其中批流是指同时离线计算和实时计算。存储策略还包括老化/克隆,其中,老化策略能够对数据的生命周期进行管理,实现超过生命周期的数据被清理的作用。克隆策略能够实现数据的迁移。
查询管理服务器用于管理电子设备的查询策略。如查询策略包括:从缓存中查询(对应图30中的缓存),从冷热库中查询(对应图30中的冷热库)。以及查询策略包括:采用DSL语言查询(对应图30中的DSL),采用RawSQL语言查询(或称原始SQL语言查询)(对应图30中的RawSQL)。如果采用DSL语言查询,则通过DSL引擎将DSL语言转化为对缓存的操作。如果采用RawSQL语言查询,则通过Sqlite引擎将RawSQL语言转换为对数据库的操作。
业务组件层提供缓存管理服务和持久化管理服务。
缓存管理服务将设备事件或业务数据保存在缓存中,如图30所示,缓存可以是pipeline缓存(对应图30中管道缓存)。DSL引擎将以DSL语法构建的查询语句转换为查询对象在pipeline缓存中匹配对应的设备事件,并将匹配到的设备事件输出。
持久化管理将特征数据项持久化存储,也就是说,当应用进程关闭,或手机重启时,持久化存储的特征数据项仍保留在数据库中。具体的,可以将数据库分为冷库、热库和原始库。其中,原始库可以存储所有特征数据项,冷库存储冷数据,冷数据是指使用率低的数据。热库存储热数据,热数据是指使用率高的数据。
基础组件层提供基础管理服务和通用数据库服务。
其中,基础管理服务包括:质量管控、权限管控、配置管理、安全策略、功耗管理、打点统计等。通用数据库服务包括定时调度、支持与内容提供器(content provider)交互(对应图30中的内容提供器)、以及支持SP、XML、JSON格式数据存储(对应图30中的SP、XML、JSON)、表达式解析、压缩、加解密等。
南向API提供数据中台和上层应用层之间通信的服务。南向API包括主采订阅感知服务、采样、特定配置下载服务以及采样、特定配置上传服务。
具体的,pipeline缓存与DSL引擎的配合过程如图31所示,将设备事件经过规范化处理,转换为特征数据项。由pipeline缓存预设的入队策略确定是否将特征数据项插入队列中。入队策略包括:pipeline缓存周期内,数据进队(对应图31中接收),pipeline缓存周期外,数据被清理(对应图31中拒绝)。或者,入队策略包括:pipeline缓存剩余容量小于阈值,数据进队,pipeline缓存剩余容量大于或等于阈值,数据被清理。具体的,缓存周期是一个缓存时间段,如缓存周期为9:00-12:00,那么在该时间段内,数据进队,在该时间段外,数据不入队。
进入pipeline缓存的特征数据项可按照事件类型分区存储,如Wi-Fi状态事件对应的特征数据项存储于缓存区域1中、运动状态事件对应的特征数据项存储于缓存区域2中,位置事件存储于缓存区域3中。Pipeline缓存通过内存管理器实时统计缓存中特征数据项占用内存大小。如果特征数据项所占用内存容量大于预设值即缓存的剩余缓存容量不足时,则对队头的特征数据项执行出队操作。另外,pipeline缓存还可以通过内存管理器实现数据老化检查操作。
进入pipeline缓存的特征数据项还可由pipeline持久化管理器执行持久化操作,具体的,在持久化管理器中可以对特征数据项进行备份,如备份为sp文件(或称服务包,Service Pack),从而在重启时能够对特征数据项进行恢复。以预设备份时长为两个缓存周期为例,将第一个缓存周期入队的特征数据项备份到SP1文件,将第二个缓存周期入队的特征数据项备份到SP2文件。当第三个缓存周期,特征数据项入队时,SP1文件被清理,将第三个缓存周期入队的设备事件备份到SP3文件中,也就是说备份的SP文件最多保持两个,以满足应用重启或者崩溃时的数据恢复需求。
参考图32,其为本申请实施例提供的一种原因事件构建方法,该方法应用于电子设备,电子设备部署有信息推送应用,电子设备中的信息推送应用通过目标事件预测模型基于电子设备上已发生的设备事件预测电子设备上将发生的设备事件并进行信息推送,设备事件包括电子设备按事件类型划分的窗口内容变化事件、网络状态变化事件、地理位置变化事件以及运动状态变化事件中的至少一种。
该方法包括S3201-S3204。
S3201、采集设备事件。
该步骤可参考上文S1401的说明。
S3202、将采集到的每个设备事件存储于缓存中。
其中,缓存中的设备事件在信息推送应用的进程关闭后被清理。缓存可以是上文介绍的pipeline缓存。该步骤可参考上文采用pipeline缓存设备事件。
S3203、当触发目标事件预测模型进行推理时,获取当前时刻,将当前时刻作为该目标事件预测模型进行推理预测将发生的设备事件的预测时刻。
示例性的,可以将目标事件预测模型进行推理的触发条件设为固定时刻触发,或者采集到某个设备事件时触发。比如采集到电子设备进入地理围栏的设备事件时触发目标事件预测模型进行推理。
S3204、从缓存中获取预测时刻前第一时长内的设备事件,得到至少一个原因事件。其中,至少一个原因事件被用于输入到目标事件预测模型中,得到由目标事件预测模型输出的结果事件,结果事件被用于信息推送应用进行信息推送。
作为一种示例,存入缓存中的设备事件是从原始数据表中查询得到的设备事件,而原始数据表基于上文提到的数据模型建立,所以查询设备事件的效率较高。
作为另一种示例,从缓存中获取至少一个原因事件后,还可以对至少一个原因事件进行筛选,如进行如上文介绍的选取样本、选取特征项等,筛选后得到的设备事件过滤了不利于目标事件预测模型预测出正确的结果事件的数据,因此用于输入目标事件预测模型中能够得到更为准确的推理结果。如推理结果为预设预测事件,那么电子设备向用户提供预设预测事件相关的信息。
将步骤3和步骤4进行比较可以发现,通过本申请实施例提供的数据处理方法和数据查询方法,实现了在电子设备侧和服务器侧查询设备事件时能够采用同一套查询步骤,查询步骤包括:获取查询语句,将查询语句中的业务属性转化为映射的物理属性,以物理属性代替查询语句中的业务属性从物理介质中查询设备事件。
下面对每个查询步骤进行说明。
步骤5.1、获取查询语句。
采用DSL语法构建查询语句,查询语句包括查询列表,或者还包括至少一个判断式和/或样本数量上限值。
查询列表包括至少一个待查询特征项的名称以及每个待查询特征项中至少一个待查询特征数据的名称,待查询特征项的名称和待查询特征数据的名称是基于元模型定义的属性以及逻辑模型定义的业务属性确定的。待查询特征项的名称和待查询特征数据的名称所查询的特征项和特征数据的存储类型为元模型定义的属性,待查询特征项的名称和待查询特征数据的名称是逻辑模型定义的业务属性。
作为一种示例,电子设备侧和服务器侧的设备事件都包含同样的数据项编号,如设备事件1在电子设备侧存储的数据项编号是001,那么将设备事件1在服务器侧存储的数据项编号也设为001,这样在查询设备事件1时,可以通过相同的数据项编号进行查询,更便于电子设备侧和服务器侧的同步查询。
首先,查询引擎会解析查询语句,由于在电子设备侧和服务器侧查询的查询语句都采用DSL语法构建,所以可以通过同一个语法解析器将查询语句转换为能够查询的结构体。
示例性的,电子设备侧和服务器侧的查询引擎依次对查询语句进行分词、词法分析、语法分析等处理,将查询语句转化为能够查询的数据结构。能够查询的数据结构由查询子句(selectClause)、条件子式(whereClause)、数量限制子式(limitClause)组成。
然后,电子设备和服务器从能够查询的数据结构中获取查询子式,并将查询对象作为参数传给电子设备侧的查询引擎以及服务器侧的查询引擎。
其中,查询子式可参考上文S2103的混合表达式、嵌套表达式、复杂表达式、简单表达式、对象数组表达式的说明。
之后,查询引擎执行查询。
服务器侧部署的查询引擎(如SparkTM)会调用每个查询子式相关的数据项,调用过程可以在分布式计算环境下执行。每个数据项对应原始数据表中的一个字段所在列的数据,一行数据项构成了一个设备事件。在服务器侧数据的存储方式可以是对象存储服务(Object Storage Service,OBS),在查询引擎中以读hive表的方式读取数据,将每个数据与每个查询子式做逻辑运算,其中逻辑运算是指将hive表中的各列数据项与查询子式中的常数做大于、等于或小于的运算,从而在服务器侧查询到符合查询子式的设备事件。
电子设备侧部署的查询引擎也同样采用服务器侧的方式输出查询得到的设备事件,由于设备事件在电子设备侧和服务器侧的存储形式可能不同,如电子设备侧在AndroidTM系统的查询引擎下查询,那么调用的每个查询子式相关的数据项以json格式表示。电子设备侧可以从缓存中调用数据项,目的是减少调用时间。在电子设备侧数据的存储方式可以是Java 语言的软件开发工具包(Java Development Kit ,JDK)规定的基础数据结构。采用过滤器针对每个查询子式做逻辑运算,其中,过滤器可参考S2103中对过滤器的说明。
在查询到设备事件后,电子设备侧和服务器侧的查询引擎返回设备事件,设备事件能被用来构建因果样本或者构建原因事件。
下面以另一示例对电子设备侧和服务器侧查询设备事件时能够采用同一套查询步骤进行说明。本申请实施例提供了一种数据查询方法,用于查询与上文提到的待训练的目标事件预测模型相关的设备事件。目标事件预测模型具备基于电子设备上已发生的设备事件预测电子设备上将发生的设备事件的能力,目标事件预测模型的预测结果用于电子设备进行信息推送。设备事件包括电子设备按事件类型划分的窗口内容变化事件、网络状态变化事件、地理位置变化事件以及运动状态变化事件中的至少一种。
电子设备和服务器均存储有设备事件经结构化处理后得到的多个特征项,多个特征项包括:设备事件对应的用户标识、设备事件的事件发生时刻以及设备事件的事件内容,事件内容包含至少一个特征数据,且不同事件类型的设备事件的事件内容中包含的特征数据的数据类型不同。
至少一个待查询特征项包括用户标识、事件发生时刻、事件内容中的至少一项;至少一个判断式包括第一判断式和/或第二判断式,第一判断式用于指示判断事件内容是否存在,第二判断式用于指示判断特征项与常数的大小关系。
电子设备或服务器可以从多个特征项中查询待查询事件内容的名称对应的至少一个第一事件内容,再从第一事件内容中查询待查询特征数据的名称对应的至少一个第一特征数据;再从至少一个第一特征数据中筛选符合至少一个判断式的至少一个目标特征数据,得到包括至少一个目标特征数据的目标设备事件。
如图33所示,电子设备或服务器可以执行如下方法。
S3301、获取查询语句;查询语句包括查询列表和至少一个判断式,查询列表包括至少一个待查询特征项的名称以及每个待查询特征项中至少一个待查询特征数据的名称,至少一个待查询特征项包括用户标识、事件发生时刻、事件内容中的至少一项;至少一个判断式包括第一判断式和/或第二判断式,第一判断式用于指示判断事件内容是否存在,第二判断式用于指示判断特征项与常数的大小关系。
S3302、从多个特征项中查询待查询事件内容的名称对应的至少一个第一事件内容,再从第一事件内容中查询待查询特征数据的名称对应的至少一个第一特征数据。
S3303、从至少一个第一特征数据中筛选符合至少一个判断式的至少一个目标特征数据,得到包括至少一个目标特征数据的目标设备事件。
作为一种示例,用户标识以字符串为存储类型存储于电子设备中的第一存储区域的第一用户标识字段里,事件发生时刻以时间戳为存储类型存储于第一存储区域(如上文提到的pipeline缓存)的第一事件发生时刻字段里,事件内容以对象为存储类型存储于第一存储区域的第一事件内容字段里;
用户标识还以字符串为存储类型存储于服务器中的第二存储区域(如上文提到的hive表)的第二用户标识字段里,事件发生时刻以时间戳为存储类型存储于第二存储区域的第二事件发生时刻字段里,事件内容以对象为存储类型存储于第二存储区域的第二事件内容字段里;
其中,第一用户标识字段和第二用户字段包含属性是字符串的用户标识,第一事件发生时刻字段和第二事件发生字段包含属性是时间戳的事件发生时刻,第一事件内容字段和第二事件内容字段包含属性是对象的事件内容。通过待查询特征项的名称可以查询到字段中的特征项以及通过待查询特征数据的名称可以查询到字段中的特征项包含的目标特征数据。
电子设备从多个特征项中查询待查询事件内容的名称指示的第一事件内容字段中的事件内容,得到至少一个第一事件内容。
服务器从多个特征项中查询待查询事件内容的名称指示的第二事件内容字段中的事件内容,得到至少一个第一事件内容。
本申请另一些实施例提供了一种电子设备,该电子设备可以包括:存储器和一个或多个处理器。该存储器和处理器耦合。该存储器用于存储计算机程序代码,该计算机程序代码包括计算机指令。当处理器执行计算机指令时,电子设备可执行上述方法实施例中电子设备侧执行的各个功能或者步骤。该电子设备的结构可以参考图9所示的结构。
本申请另一些实施例提供了一种服务器,该服务器可以包括存储器、处理器和通信模块,通信模块用于接收电子设备采集的设备事件,处理器用于执行上述方法实施例中服务器侧执行的各个功能或者步骤。
本申请实施例还提供一种计算机可读存储介质,该计算机可读存储介质包括计算机指令,当所述计算机指令在上述电子设备上运行时,使得该电子设备执行上述方法实施例中手机执行的各个功能或者步骤。
本申请实施例还提供一种计算机程序产品,当所述计算机程序产品在计算机上运行时,使得所述计算机执行上述方法实施例中手机执行的各个功能或者步骤。
通过以上实施方式的描述,所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个装置,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是一个物理单元或多个物理单元,即可以位于一个地方,或者也可以分布到多个不同地方。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该软件产品存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(read only memory,ROM)、随机存取存储器(random access memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上内容,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何在本申请揭露的技术范围内的变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。

Claims (12)

1.一种数据查询方法,其特征在于,应用于电子设备或服务器,所述电子设备或所述服务器包括待训练的目标事件预测模型,所述目标事件预测模型用于基于所述电子设备上已发生的设备事件预测所述电子设备上将发生的设备事件以触发所述电子设备进行信息推送,所述设备事件包括所述电子设备按事件类型划分的窗口内容变化事件、网络状态变化事件、地理位置变化事件以及运动状态变化事件中的至少一种;
所述方法包括:
获取原始数据表,所述原始数据表存储有所述设备事件结构化处理后得到的多个特征项;所述多个特征项包括:所述设备事件对应的用户标识、所述设备事件的事件发生时刻以及所述设备事件的事件内容;其中,所述事件内容包含至少一个特征数据,且不同事件类型的所述设备事件的所述事件内容中包含的特征数据的数据类型不同;
其中,所述用户标识以字符串为存储类型存储于所述原始数据表的用户标识字段里,所述事件发生时刻以时间戳为存储类型存储于所述原始数据表的事件发生时刻字段里,所述事件内容以对象为存储类型存储于所述原始数据表的事件内容字段里;
获取查询语句,所述查询语句用于从所述原始数据表中查询组成目标因果样本的设备事件;
若所述查询语句指示查询所述事件内容字段中的至少一个特征数据,则先根据所述事件内容字段查询所述事件内容,再从所述事件内容中查询所述至少一个特征数据,得到包含所述至少一个特征数据的设备事件。
2.根据权利要求1所述的方法,其特征在于,所述查询语句包括查询列表和至少一个判断式,所述查询列表包括至少一个待查询特征项的名称以及每个待查询特征项中至少一个待查询特征数据的名称,所述至少一个待查询特征项包括所述用户标识、所述事件发生时刻、所述事件内容中的至少一项;所述至少一个判断式包括第一判断式和/或第二判断式,所述第一判断式用于指示判断所述事件内容是否存在,所述第二判断式用于指示判断所述特征项与常数的大小关系;
所述先根据所述事件内容字段查询所述事件内容,再从所述事件内容中查询所述至少一个特征数据,得到包含所述至少一个特征数据的设备事件,包括:
从所述原始数据表中查询待查询事件内容的名称指示的所述事件内容字段中的至少一个第一事件内容,再从所述第一事件内容中查询所述待查询特征数据的名称对应的至少一个第一特征数据;
从所述至少一个第一特征数据中筛选符合所述至少一个判断式的至少一个目标特征数据,得到包括所述至少一个目标特征数据的设备事件。
3.根据权利要求1或2所述的方法,其特征在于,在得到包含所述至少一个特征数据的设备事件之后,所述方法还包括:
从包含所述至少一个特征数据的设备事件中查询设备事件的事件发生时刻靠近预测时刻的N个设备事件,其中,N为样本数量上限值。
4.根据权利要求3所述的方法,其特征在于,所述方法还包括:
将所述N个设备事件存储到数据集中,所述数据集中的所述N个设备事件被用于训练所述待训练的目标事件预测模型。
5.根据权利要求1或2所述的方法,其特征在于,在所述获取原始数据表之前,所述方法还包括:
获取用于训练所述事件预测模型的多个因果样本的结构特点信息;其中,每个所述因果样本包括多个所述设备事件,每个所述因果样本的结构特点信息包括:所述因果样本中的每个所述设备事件结构化处理后得到多个特征项;所述多个特征项包括:所述设备事件的用户标识、所述设备事件的事件发生时刻以及所述设备事件的事件内容;其中,所述事件内容包含至少一个特征数据,且不同事件类型的所述设备事件的所述事件内容中包含的特征数据的数据类型不同;
根据所述因果样本的结构特点信息,设置所述因果样本的属性;其中,所述因果样本中,所述用户标识的属性是字符串,所述事件发生时刻的属性是时间戳以及所述事件内容的属性是对象;其中,所述因果样本的属性用于确定所述设备事件对应的所述多个特征项中的每个特征项的存储类型;
按照设置的因果样本的属性,将所述电子设备采集的设备事件存储至所述原始数据表中;
其中,所述原始数据表包括多个字段,所述多个字段包括用户标识字段、事件发生时刻字段和事件内容字段,所述用户标识字段用于存储属性是字符串的所述用户标识,所述事件发生时刻字段用于存储属性是时间戳的所述事件发生时刻,所述事件内容字段用于存储属性是对象的所述事件内容。
6.根据权利要求5所述的方法,其特征在于,在所述设置所述因果样本的属性之前,所述方法还包括:
从每个所述设备事件中获取描述所述事件内容的多个所述特征数据的数据类型;
所述事件内容的属性是对象,包括:
如果存在任一所述设备事件中,描述所述事件内容的多个所述特征数据中任意两个所述特征数据的数据类型不同,则以所述对象作为每个所述设备事件的事件内容的属性。
7.根据权利要求6所述的方法,其特征在于,所述事件内容为Wi-Fi状态事件内容,描述所述Wi-Fi状态事件内容的特征数据包括Wi-Fi名称、Wi-Fi事件类型、Wi-Fi强度和Wi-Fi基础服务集;
所述从每个所述设备事件中获取描述所述事件内容的多个所述特征数据的数据类型,包括:
获取所述Wi-Fi名称、所述Wi-Fi事件类型、所述Wi-Fi强度和所述Wi-Fi基础服务集的数据类型,得到所述Wi-Fi名称对应的数据类型为时间戳,所述Wi-Fi事件类型对应的数据类型为字符串,所述Wi-Fi强度对应的数据类型为整型以及所述Wi-Fi基础服务集的数据类型为字符串;
所述如果存在任一所述设备事件中,描述所述事件内容的多个所述特征数据中任意两个所述特征数据的数据类型不同,则以所述对象作为每个所述设备事件的事件内容的属性,包括:
所述Wi-Fi状态事件的所述Wi-Fi名称、所述Wi-Fi事件类型、所述Wi-Fi强度和所述Wi-Fi基础服务集中,所述Wi-Fi名称的数据类型、所述Wi-Fi事件类型的数据类型和所述Wi-Fi强度的数据类型各不相同,确定以所述对象作为所述设备事件的Wi-Fi状态事件内容的属性。
8.根据权利要求2所述的方法,其特征在于,所述方法还包括:
为所述特征项设置常数和操作符,所述常数和所述操作符用于与所述特征项组成所述判断式。
9.一种电子设备,其特征在于,包括:处理器,和用于存储所述处理器可执行指令的存储器,所述处理器被配置为执行所述指令时,使得所述电子设备实现如权利要求1至8中任一项所述的方法。
10.一种服务器,其特征在于,包括:处理器、通信模块和用于存储所述处理器可执行指令的存储器,所述服务器通过所述通信模块接收电子设备发送的所述设备事件,所述处理器被配置为执行所述指令时,使得所述服务器实现如权利要求1至8中任一项所述的方法。
11.一种数据查询系统,其特征在于,包括:服务器和电子设备,所述服务器用于向所述电子设备发送采样任务;
所述电子设备用于向所述服务器发送根据所述采样任务采集的所述设备事件;
所述服务器用于在接收到所述电子设备发送的所述设备事件之后,执行如权利要求1至8中任一项所述的方法。
12.一种计算机可读存储介质,其特征在于,包括计算机指令,当所述计算机指令在电子设备或服务器上运行时,使得所述电子设备或所述服务器执行如权利要求1至8中任一项所述的方法。
CN202310845530.5A 2023-07-11 2023-07-11 一种数据查询方法、电子设备、服务器及数据查询系统 Active CN116561184B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310845530.5A CN116561184B (zh) 2023-07-11 2023-07-11 一种数据查询方法、电子设备、服务器及数据查询系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310845530.5A CN116561184B (zh) 2023-07-11 2023-07-11 一种数据查询方法、电子设备、服务器及数据查询系统

Publications (2)

Publication Number Publication Date
CN116561184A CN116561184A (zh) 2023-08-08
CN116561184B true CN116561184B (zh) 2023-11-24

Family

ID=87495157

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310845530.5A Active CN116561184B (zh) 2023-07-11 2023-07-11 一种数据查询方法、电子设备、服务器及数据查询系统

Country Status (1)

Country Link
CN (1) CN116561184B (zh)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109726293A (zh) * 2018-11-14 2019-05-07 数据地平线(广州)科技有限公司 一种因果事件图谱构建方法、系统、装置及存储介质
US10467327B1 (en) * 2013-03-15 2019-11-05 Matan Arazi Real-time event transcription system and method
CN114780810A (zh) * 2022-04-22 2022-07-22 中国电信股份有限公司 数据处理方法、装置、存储介质及电子设备

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10467327B1 (en) * 2013-03-15 2019-11-05 Matan Arazi Real-time event transcription system and method
CN109726293A (zh) * 2018-11-14 2019-05-07 数据地平线(广州)科技有限公司 一种因果事件图谱构建方法、系统、装置及存储介质
CN114780810A (zh) * 2022-04-22 2022-07-22 中国电信股份有限公司 数据处理方法、装置、存储介质及电子设备

Also Published As

Publication number Publication date
CN116561184A (zh) 2023-08-08

Similar Documents

Publication Publication Date Title
CN106649656B (zh) 一种面向数据库的时空轨迹大数据存储方法
Vyawahare et al. A hybrid database approach using graph and relational database
CN102880854B (zh) 基于分布式和哈希映射的室外海量物体识别方法和系统
CN111914113A (zh) 一种图像检索的方法以及相关装置
CN114244595B (zh) 权限信息的获取方法、装置、计算机设备及存储介质
Ding et al. SeaCloudDM: a database cluster framework for managing and querying massive heterogeneous sensor sampling data
US11100141B2 (en) Monitoring organization-wide state and classification of data stored in disparate data sources of an organization
CN112235253B (zh) 数据资产的梳理方法、装置、计算机设备和存储介质
CN112256682B (zh) 一种多维异构数据的数据质量检测方法及装置
Havers et al. DRIVEN: A framework for efficient Data Retrieval and clustering in Vehicular Networks
CN111738341A (zh) 一种分布式大规模人脸聚类方法及装置
CN116561184B (zh) 一种数据查询方法、电子设备、服务器及数据查询系统
CN104750860B (zh) 一种不确定数据的数据存储方法
CN116561186B (zh) 一种因果样本构建方法、服务器及存储介质
CN116561185B (zh) 一种数据处理方法、系统及存储介质
CN116578597B (zh) 一种原因事件构建方法、电子设备及存储介质
CN116578598B (zh) 一种数据查询方法、系统及存储介质
CN111797175B (zh) 数据存储方法、装置、存储介质及电子设备
CN108021607A (zh) 一种基于大数据平台的无线城市审计数据离线分析方法
CN110196923B (zh) 一种面向水下探测的多源异构数据预处理方法及系统
GB2566939A (en) Method and system for indexing of video data for faceted classification
CN113312346A (zh) 索引构建方法、轨迹查询方法、装置、设备及可读介质
CN116962516A (zh) 一种数据查询方法、装置、设备及存储介质
CN114169247A (zh) 仿真交通流的生成方法、装置、设备和计算机可读存储介质
KR20220095654A (ko) 소셜 데이터 수집 분석 시스템

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant