一种提供数据的方法和装置
技术领域
本发明涉及计算机技术领域,特别涉及一种提供数据的方法和装置。
背景技术
在大数据处理领域中,目前主流的技术均是对数据进行离线批处理,并且具有比较成熟的开源的查询工具,这些查询工具大多都是基于结构化查询语言SQL,如查询工具hive与shark等。
随着用户对实时性要求越来越高,对于数据的准实时或实时的需求日益迫切。目前在实时数据的查询领域还没有成熟的技术与方法,实时数据的查询还处于类似hadoop的mapreduce阶段,即,在分布式基础架构下的大规模数据集的并行运算阶段。
现有的数据实时查询方法,不管是基于哪种技术框架,在进行数据查询的时候,对于用户不同的需求,对于不同的数据库表,以及不同的数据库,都需要开发人员要进行相应的开发,因而造成无法对实时数据进行准确和高效的查询的问题。
发明内容
有鉴于此,本发明提供一种提供数据的方法和装置,能够生成满足用户需求的数据报表,解决了针对用户的不同需求,开发人员要进行相应的开发的问题,有助于实现对实时数据进行准确和高效的查询。
为实现上述目的,根据本发明的一个方面,提供了一种提供数据的方法。
本发明的提供数据的方法包括:步骤A:在当前预设的指标所对应的配置表中,记录该指标所涉及的一个或多个属性以及该属性所处的属性表的表名,以及记录根据该一个或多个属性的属性值计算该指标的计算方式;步骤B:根据用户提供的当前指标确定对应的配置表,从指定的订单范围内中获取当前订单在该配置表中记录的一个或多个属性的属性值,再根据获取的属性值,按照该配置表中记录的所述计算方式计算得出所述当前指标的值。
可选地,所述步骤A之前包括:将订单数据中包含的对应于预设的一个或多个属性和/或属性表的数据保存于第一数据表中;所述第一数据表各行与订单一一对应,并且各行包含一个或多个属性的属性值和/或属性表的行标识;所述第一数据表以订单所对应的行标识作为键,以包含的所述一个或多个属性的属性值和/或属性表的行标识作为值。
可选地,所述步骤A之后包括:将第一数据表与配置表中所记录的一个或多个属性的属性表设置关联关系;所述步骤B包括:根据用户提供的当前指标确定对应的配置表;在第一数据表中,获取当前订单在所述第一数据表中对应的行标识,以及该行所包括的配置表中记录的一个或多个属性所处的属性表的行标识,然后根据所设置的关联关系查找对应于一个或多个属性的属性值;根据获取的属性值,按照该配置表中记录的所述计算方式计算得到所述当前指标的值。
可选地,所述将第一数据表与配置表中所记录的一个或多个属性的属性表设置关联关系的步骤包括:将订单在第一数据表中对应的行标识与其中一个属性表的行标识进行关联;将下一个未进行关联的属性表的行标识与上一个已关联的属性表的行标识进行关联,直到所有的行标识完成关联设置。
根据本发明的另一方面,提供了一种提供数据的装置。
本发明的提供数据的装置包括:记录模块,用于在当前预设的指标所对应的配置表中,记录该指标所涉及的一个或多个属性以及该属性所处的属性表的表名,以及记录根据该一个或多个属性的属性值计算该指标的计算方式;处理模块,用于根据用户提供的当前指标确定对应的配置表,从指定的订单范围内中获取当前订单在该配置表中记录的一个或多个属性的属性值,再根据获取的属性值,按照该配置表中记录的所述计算方式计算得出所述当前指标的值。
可选地,还包括保存模块,用于将订单数据中包含的对应于预设的一个或多个属性和/或属性表的数据保存于第一数据表中;所述第一数据表各行与订单一一对应,并且各行包含一个或多个属性的属性值和/或属性表的行标识;所述第一数据表以订单所对应的行标识作为键,以包含的所述一个或多个属性的属性值和/或属性表的行标识作为值。
可选地,还包括设置模块,用于设置第一数据表与配置表中所记录的一个或多个属性的属性表之间的关联关系;所述处理模块还用于根据用户提供的当前指标确定对应的配置表,然后在第一数据表中,获取当前订单在所述第一数据表中对应的行标识,以及该行所包括的配置表中记录的一个或多个属性所处的属性表的行标识,并根据所设置的关联关系查找对应于一个或多个属性的属性值,从而根据获取的属性值,按照该配置表中记录的所述计算方式计算得到所述当前指标的值。
可选地,所述设置模块用于将订单在第一数据表中对应的行标识与其中一个属性表的行标识进行关联,然后将下一个未进行关联的属性表的行标识与上一个已关联的属性表的行标识进行关联,直到所有的行标识完成关联设置。
根据本发明的技术方案,由于配置了对应于不同指标的配置表,因而在用户提出指标需求时,能够根据指标需求确定对应的配置表,从而生成和提供满足用户需求的数据,解决了针对用户的不同需求,开发人员要进行相应的开发的问题,有助于实现对实时数据进行准确和高效的查询;而且,由于去掉了订单中一些与计算当前指标所不需要的数据,因此,在一定程度上节约了***的资源,而且通过将订单数据整理成表格的形式,有助于采用基于数据库的方式对数据进行处理,同时由于采取键值对的方式进行存储,因而也在一定程度上提高了数据的处理效率。
附图说明
附图用于更好地理解本发明,不构成对本发明的不当限定。其中:
图1是根据本发明实施例的一种提供数据的方法的示意图;
图2是根据本发明实施例的一种提供数据的装置的示意图。
具体实施方式
以下结合附图对本发明的示范性实施例做出说明,其中包括本发明实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本发明的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
图1是根据本发明实施例的一种提供数据的方法的示意图。如图1所示,该方法主要包括如下的步骤S10至S11。
步骤S10:在当前预设的指标所对应的配置表中,记录该指标所涉及的一个或多个属性以及该属性所处的属性表的表名,以及记录根据该一个或多个属性的属性值计算该指标的计算方式。例如,当前预设的指标为每种产品类型的交易金额和交易数量时,该指标所涉及的属性就包括产品类型、产品价格、采购数量、以及采购时间,而其中产品类型和产品价格所处的属性表的表名为产品表;采购数量以及采购时间可以从订单数据中直接获得,因此,应该将产品类型、产品价格、采购数量、采购时间、产品表、采购数量、以及采购时间记录在对应于该指标的配置表中;其中,指标中的交易金额是需要通过设定的计算方式进行计算的,因此,在该配置表中还记录了计算交易金额的计算方式:采购数量×产品价格。
步骤S11:根据用户提供的当前指标确定对应的配置表,从指定的订单范围内中获取当前订单在该配置表中记录的一个或多个属性的属性值,再根据获取的属性值,按照该配置表中记录的所述计算方式计算得出当前指标的值。当用户需要看到每种产品类型的交易金额和交易数量,即用户提供的当前指标为每种产品类型的交易金额和交易数量,那么需要根据用户所提供的指标在预设的配置表中确定对应于该指标的配置表,然后从指定的订单范围内中获取当前订单在该配置表中记录的一个或多个属性的属性值,再根据获取的属性值以及该配置表中所记录的计算方式得到对应于当前指标的值。
在步骤S10之前,还可以将订单数据中包含的对应于预设的一个或多个属性和/或属性表的数据保存于第一数据表中;第一数据表各行与订单一一对应,并且各行包含一个或多个属性的属性值和/或属性表的行标识;第一数据表以订单所对应的行标识作为键,以包含的所述一个或多个属性的属性值和/或属性表的行标识作为值。如表1所示,表1为本实施例提供的订单明细表,订单明细表即为第一数据表,订单明细表ID的每一个值都对应于一个订单,并且以订单所对应的行标识作为键,以包含的所述一个或多个属性的属性值和/或属性表的行标识作为值;在此例中,键为1;值为(100、200、300、10、以及2015012019:26)。在此步骤中,由于将订单中的数据根据所预设的一个或多个属性和/或属性表的数据保存于第一数据表中,去掉了一些与计算当前指标所不需要的数据,不仅在一定程度上节约了***的资源,而且通过将订单数据整理成表格的形式,有助于之后基于数据库对于数据进行处理,同时由于采取键值对的方式进行存储,因而也在一定程度上提高了数据的处理效率。
表1
在步骤S11之后,还可以将订单明细表与配置表中所记录的一个或多个属性的属性表设置关联关系;如表2所示,表2为本实施例提供的配置表,配置表中所记录的属性表包括产品表,因此,根据设置关联关系的步骤,将订单在订单明细表中对应的行标识(即订单明细表的ID)与在配置表中保存的属性表(即产品表)的行标识(即产品ID)进行关联,这是配置表中保存一个属性表时设置关联关系的步骤;如果配置表中保存了多个属性表,那么在上述步骤之后将下一个未关联的属性表的行标识与上一个已关联的属性表的行标识进行关联,直到所有的行标识完成关联设置位置。
因此,步骤S11的具体执行方式可以是:首先,根据用户提供的当前指标确定对应的配置表;其次,在订单明细表中,获取当前订单在该订单明细表中对应的行标识,以及该行所包括的配置表中记录的一个或多个属性所处的属性表的行标识,然后根据所设置的关联关系查找对应于一个或多个属性的属性值;最后,根据获取的属性值,按照该配置表中记录的所述计算方式计算得到用户指定的指标的值。在本实施例中,由于设置了订单明细表与配置表中所记录的一个或多个属性的属性表的关联关系,因而能够根据所设置的关联关系对当前指标所涉及的属性的属性值进行快速的查找,从而在一定程度上提高了数据的处理效率。
表2
图2是根据本发明实施例的一种提供数据的装置的示意图。如图2所示,本发明实施例的提供数据的装置20主要包括:记录模块21和处理模块22。记录模块21用于在当前预设的指标所对应的配置表中,记录该指标所涉及的一个或多个属性以及该属性所处的属性表的表名,以及记录根据该一个或多个属性的属性值计算该指标的计算方式;处理模块22用于根据用户提供的当前指标确定对应的配置表,从指定的订单范围内中获取当前订单在该配置表中记录的一个或多个属性的属性值,再根据获取的属性值,按照该配置表中记录的所述计算方式计算得出所述当前指标的值。
本发明实施例的提供数据的装置20还可包括保存模块(图中未示出),用于将订单数据中包含的对应于预设的一个或多个属性和/或属性表的数据保存于第一数据表中;第一数据表各行与订单一一对应,并且各行包含一个或多个属性的属性值和/或属性表的行标识;第一数据表以订单所对应的行标识作为键,以包含的所述一个或多个属性的属性值和/或属性表的行标识作为值。
本发明实施例的提供数据的装置20还可包括设置模块(图中未示出),用于设置第一数据表与配置表中所记录的一个或多个属性的属性表之间的关联关系;处理模块22还可用于根据用户提供的当前指标确定对应的配置表,然后在第一数据表中,获取当前订单在所述第一数据表中对应的行标识,以及该行所包括的配置表中记录的一个或多个属性所处的属性表的行标识,并根据所设置的关联关系查找对应于一个或多个属性的属性值,从而根据获取的属性值,按照该配置表中记录的所述计算方式计算得到所述当前指标的值。
设置模块还可用于将订单在第一数据表中对应的行标识与其中一个属性表的行标识进行关联,然后将下一个未进行关联的属性表的行标识与上一个已关联的属性表的行标识进行关联,直到所有的行标识完成关联设置。
根据本发明实施例的技术方案,由于配置了对应于不同指标的配置表,因而在用户提出指标需求时,能够根据指标需求确定对应的配置表,从而生成和提供满足用户需求的数据,解决了针对用户的不同需求,开发人员要进行相应的开发的问题,有助于实现对实时数据进行准确和高效的查询;而且,由于去掉了订单中一些与计算当前指标所不需要的数据,因此,在一定程度上节约了***的资源,而且通过将订单数据整理成表格的形式,有助于采用基于数据库的方式对数据进行处理,同时由于采取键值对的方式进行存储,因而也在一定程度上提高了数据的处理效率。
以上结合具体实施例描述了本发明的基本原理,在本发明的装置和方法中,显然,各部件或各步骤是可以分解和/或重新组合的。这些分解和/或重新组合应视为本发明的等效方案。并且,执行上述系列处理的步骤可以自然地按照说明的顺序按时间顺序执行,但是并不需要一定按照时间顺序执行。某些步骤可以并行或彼此独立地执行。
上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,取决于设计要求和其他因素,可以发生各种各样的修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。