数据仓库中减少计算量的方法、装置、设备和存储介质与流程

文档序号:33488470发布日期:2023-03-17 19:44阅读:25来源:国知局
1.本技术涉及数据仓库
技术领域
:,尤其涉及一种数据仓库中减少计算量的方法、装置、设备和存储介质。
背景技术
::2.离线计算是大数据计算技术之一,一般是基于分布式文件系统做批量并行计算。在计算开始之前,待计算数据就已经确定,计算过程中待计算数据不会改变。通常情况下,离线计算的数据量都比较大,所以计算会消耗额外的存储空间,计算所需耗时也比较长,即是一种消耗空间和时间的计算方式。但离线计算可以做复杂的计算且十分稳定,且对时效性要求不高,故在数据量大且计算复杂度高的数据仓库等领域广泛应用。3.现有技术中,离线计算是通过每天拉取出所有历史数据进行全量计算,而全量计算95%以上都属于重复计算。而且在贴源层拉取全量数据会较慢,消耗时间较长。另一种离线计算方式是增量抽取,但是在计算的时候也会将增量数据和存量数据合并为全量数据后进行全量计算,也会消耗较长的时间。事实上每次离线计算所使用的全量数据中变化的增量数据占全量的很少一部分,对于没有变化的数据进行计算会放大不必要的计算量,浪费较多的计算资源和存储资源,而且离线计算一般集中在一定的时间段,为了满足计算需求,就不得不在该时间段内堆砌计算资源;而在其他空闲时间又有大量资源闲置,从而导致了计算源的膨胀。技术实现要素:4.为了解决现有技术中离线计算耗时且占用计算资源和存储资源以及造成资源利用率低下的技术问题。本技术提供了一种数据仓库中减少计算量的方法、装置、设备和存储介质,其主要目的在于减少数据仓库中数据计算量,减少计算资源的浪费,使得计算资源得到充分利用,且节省存储资源。5.为实现上述目的,本技术提供了一种一种数据仓库中减少计算量的方法,该方法包括:6.根据监听到的触发事件启动当前轮离线计算任务;7.根据源表中变化的业务数据与全部业务数据及计算方式确定规则确定每张源表在当前运行的当前轮离线计算任务中的计算方式,其中,变化的业务数据为从上一轮离线计算任务开始到当前轮离线计算任务开始期间内抽取到的变化数据,计算方式为全量计算或增量计算;8.从确定为增量计算的源表中抽取变化的业务数据保存为对应的新表;9.根据全量计算逻辑、目标表和任务配置信息生成用于离线计算的离线计算逻辑,其中,所目标表包括计算方式为全量计算的源表和生成的新表;10.利用离线计算逻辑对目标表中的待计算数据进行计算,得到计算结果。11.此外,为实现上述目的,本技术还提供了一种数据仓库中减少计算量的装置,该装置包括:12.任务启动模块,用于根据监听到的触发事件启动当前轮离线计算任务;13.计算方式确定模块,用于根据源表中变化的业务数据与全部业务数据及计算方式确定规则确定每张源表在当前运行的当前轮离线计算任务中的计算方式,其中,变化的业务数据为从上一轮离线计算任务开始到当前轮离线计算任务开始期间内抽取到的变化数据,计算方式为全量计算或增量计算;14.第一数据抽取模块,用于从确定为增量计算的源表中抽取变化的业务数据保存为对应的新表;15.逻辑生成模块,用于根据全量计算逻辑、目标表和任务配置信息生成用于离线计算的离线计算逻辑,其中,所目标表包括计算方式为全量计算的源表和生成的新表;16.第一计算模块,用于利用离线计算逻辑对目标表中的待计算数据进行计算,得到计算结果。17.为实现上述目的,本技术还提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机可读指令,处理器执行计算机可读指令时执行如前面任一项的数据仓库中减少计算量的方法的步骤。18.为实现上述目的,本技术还提供了一种计算机可读存储介质,计算机可读存储介质上存储有计算机可读指令,计算机可读指令被处理器执行时,使得处理器执行如前面任一项的数据仓库中减少计算量的方法的步骤。19.本技术提出的数据仓库中减少计算量的方法、装置、设备和存储介质,通过对源表的计算方式进行确定来确定全量计算和增量计算的待计算数据,然后根据待计算数据和全量计算逻辑生成离线计算逻辑,利用离线计算逻辑对待计算数据进行计算。由于对全量计算的源表和增量计算的源表进行了区分,进而抽取部分源表中的增量数据和部分原表中的全量数据,因此可以减少对所有源表的全量数据进行全量计算,进而减少数据仓库中不必要的数据计算,降低了数据计算量,加快了计算速度,减少了计算资源的浪费,使得计算资源得到充分利用,减少资源堆砌,提高了资源利用率,且节省了存储资源。附图说明20.图1为本技术一实施例中数据仓库中减少计算量的方法的流程示意图;21.图2为本技术一实施例中数据仓库中减少计算量的装置的结构框图;22.图3为本技术一实施例中计算机设备的内部结构框图。23.本技术目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。具体实施方式24.为使本技术实施例的目的、技术方案和优点更加清楚,下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本技术的一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本技术保护的范围。应当理解,此处所描述的具体实施例仅仅用以解释本技术,并不用于限定本技术。25.图1为本技术一实施例中数据仓库中减少计算量的方法的流程示意图。参考图1,该数据仓库中减少计算量的方法包括以下步骤s100-s500。26.s100:根据监听到的触发事件启动当前轮离线计算任务。27.具体地,触发事件可以为定时事件或研发人员对离线计算任务的启动指令等。如果为定时任务在每间隔第一预设时长自动启动一次离线计算任务,每轮离线计算任务会耗时一定的时长。第一预设时长大于离线计算任务的耗时时长。离线计算任务的任务框架可以为例如mapreduce、spark批处理等不局限于此。28.在一个具体实施例中,可以是如果当前运行的当前轮离线计算任务为离线任务建立后初次或第一次运行,则从源表中抽取全量数据,对全量数据进行全量计算。如果当前轮离线计算任务为非第一轮离线计算任务,则执行步骤s200-s500。29.s200:根据源表中变化的业务数据与全部业务数据及计算方式确定规则确定每张源表在当前运行的当前轮离线计算任务中的计算方式,其中,变化的业务数据为从上一轮离线计算任务开始到当前轮离线计算任务开始期间内抽取到的变化数据,计算方式为全量计算或增量计算。30.具体地,源表为数据仓库中贴源层中的数据表,贴源层为数据仓库中业务库到数据仓库的第一层,贴源层的表结构和业务库一致,从业务库直接抽取变化的原始数据不做任务处理保存至源表中。31.源表中变化的业务数据包括相邻两轮离线计算任务产生变化的数据。如果是根据定时任务启动当前轮离线计算任务,则源表中变化的业务数据包括距当前轮离线计算任务的启动时刻前第一预设时长内抽取到的变化数据。变化的业务数据包括新增加的增量数据和被修改的数据。32.数据仓库中源表有多张,每张源表包括变化的业务数据不同。一张源表为主表或主表的关联表。对每张源表进行计算方式的确定,这样可以确定哪些源表使用全量计算,哪些源表使用增量计算。每张源表都是通过其变化的业务数据与其所包含的全部业务数据来进行计算方式的确定的。一般情况下,源表中数据越多越可能确定为增量计算;数据量少的时候全量计算耗时可能不会太长,因此数据量少的源表可以暂时不启动增量计算。具体地,可以通过变化的业务数据与全部业务数据在某些维度上的比值来确定计算方式;当然也可以直接根据源表所包含的全部业务数据的数据量来确定计算方式。33.计算方式判断的目的是:根据源表中每张表(主表和关联表)变化的业务数据与该表全部业务数据来判断该表是全量计算还是增量计算,如果为增量计算则提取该表中的变化数据存储至新表,如果是全量计算则计算的时候直接用该表。34.s300:从确定为增量计算的源表中抽取变化的业务数据保存为对应的新表。35.具体地,如果源表确定为全量计算,则在进行数据计算的时候该源表的全部业务数据都作为待计算数据;如果源表确定为增量计算,则提取该源表中的变化的数据为待计算数据并保存为一张新表。每张确定为增量计算的源表都对应一张新表。36.例如,某个源表有50个字段,变化的业务数据对应10个参与计算的字段,还有1个字段为关联字段,则提取这11个字段及对应取值生成了一张新表。这样待计算数据就从关联关50个字段的大表变化为关联11个字段的小表。可以将大表转化为小表,减少了计算量,加快了计算速度。37.s400:根据全量计算逻辑、目标表和任务配置信息生成用于离线计算的离线计算逻辑,其中,所目标表包括计算方式为全量计算的源表和生成的新表。38.具体地,对用于全量计算的全量计算逻辑进行解析得到相关计算信息,其中,相关计算信息包括主表及主表对应的关联表、查询字段、关联字段和聚合分组字段;根据相关计算信息、任务配置信息、为全量计算的源表和生成的新表生成用于离线计算的离线计算逻辑。其中,任务配置信息包括了计算方式确定规则。39.主表指需要计算的事实表,关联表一般指维表或者其他事实表,例如selectta.field_a,tb.field_bfromtable_ataleftjointable_btbonta.join_field=tb.join_field中,主表为table_a,关联表为table_b。主表一般是主数据,主表与关联表通过关联字段进行关联。查询字段即此次计算需要用到字段即待计算数据对应的字段,需要检索出来。聚合分组字段即sql中groupby后面的字段,会把数据分为多个分组,以进行分组内求和计数等计算。40.全量计算逻辑为数据仓库本身用于对所有业务数据进行全量计算的原始计算逻辑代码。本实施例会根据全量计算逻辑生成用于对目标表中的数据进行计算的离线计算逻辑。这样可以只针对源表中的部分数据进行计算而非全部数据进行计算,进而减少了不必要计算,降低了计算量。41.可以将相关计算信息作为前置关系数据保存至计算元数据中,计算元数据还保存有任务配置信息以及目标表。42.s500:利用离线计算逻辑对目标表中的待计算数据进行计算,得到计算结果。43.具体地,利用生成的离线计算逻辑对为全量计算的源表和生成的新表中的业务数据作为待计算数据进行计算,得到计算结果。44.计算完成后,可以将新表删除,这样可以减少新表对存储空间的占用。45.本实施例通过对源表的计算方式进行确定来确定全量计算和增量计算的待计算数据,然后根据待计算数据和全量计算逻辑生成离线计算逻辑,利用离线计算逻辑对待计算数据进行计算。由于对全量计算的源表和增量计算的源表进行了区分,进而抽取部分源表中的增量数据和部分原表中的全量数据,因此可以减少对所有源表的全量数据进行全量计算,进而减少数据仓库中不必要的数据计算,降低了数据计算量,加快了计算速度,减少了计算资源的浪费,使得计算资源得到充分利用,减少资源堆砌,提高了资源利用率,且节省了存储资源。46.在一个实施例中,步骤s200具体包括:47.分别统计每张源表中变化的业务数据在至少一个统计维度的第一统计数据,及对应源表的全部业务数据在相同维度的第二统计数据,其中,源表为主表或关联表;48.分别计算每个统计维度的第一统计数据与相同源表相同维度的第二统计数据的比值;49.基于计算方式确定规则,根据比值与对应第一阈值的大小确定对应源表在当前轮离线计算任务中的计算方式。50.具体地,对于任意一张源表,统计该源表中变化的业务数据在至少一个统计维度上的第一统计数据,同样统计该源表中所有业务数据在相同统计维度的第二统计数据。对于同一张源表,分别计算同一个统计维度的第一统计数据与第二统计数据的比值。每一个统计维度都对应一个第一阈值,将该源表相同统计维度的比值和第一阈值进行比较得到比较结果,根据该源表在所有统计维度对应的所有比较结果确定该源表在当前轮离线计算任务中的计算方式。比值越小越可能需要增量计算,因为比值越小说明该源表的全部业务数据量越多。本实施例会结合至少一个统计维度的比较结果来综合评判该源表的计算方式,判断结果更加全面准确。51.其他,统计维度可以包括数据的条数、数据所占字节数、所包含的字段个数、字段所占字节数等其中的一个或多个,本技术不局限于此。52.当然还可以直接根据每张源表中全部业务数据的统计数据即数据量统计结果来判断是进行增量计算还是全量计算。如果统计数据高于对应的数据量阈值,则判定为增量计算。53.在一个实施例中,分别统计每张源表中变化的业务数据在至少一个统计维度的第一统计数据,及对应源表的全部业务数据在相同维度的第二统计数据,包括以下至少一种维度的统计:54.分别统计每张源表中变化的业务数据的条数作为对应源表在第一维度的第一统计数据,统计对应源表所包含的全部业务数据的总条数作为对应源表在第一维度的第二统计数据;55.分别统计每张源表中变化的业务数据所占字节数作为对应源表在第二维度的第一统计数据,统计对应源表所包含的全部业务数据所占的总字节数作为对应源表在第二维度的第二统计数据;56.分别统计每张源表中变化的业务数据所包含的计算字段的个数作为对应源表在第三维度的第一统计数据,统计对应源表所包含的全部业务数据所包含的全部字段的总字段个数作为对应源表在第三维度的第二统计数据;57.分别统计每张源表中参与计算字段所占字节数作为对应源表在第四维度的第一统计数据,统计对应源表所包含的全部字段所占字节数作为在第四维度的第二统计数据。58.具体地,第一维度为数据的条数,第二维度为数据所占字节数,第三维度为所包含的字段个数,第四维度为字段所占字节数。可以选择这三种统计维度中的至少一种统计维度进行数据统计。59.上述中分别计算每个统计维度的第一统计数据与相同源表相同维度的第二统计数据的比值具体对应的包括以下至少一种:60.计算同一个源表在第一维度的第一统计数据与第一维度的第二统计数据的比值作为对应源表的第一比值,61.计算同一个源表在第二维度的第一统计数据与第二维度的第二统计数据的比值作为对应源表的第二比值,62.计算同一个源表在第三维度的第一统计数据与第三维度的第二统计数据的比值作为对应源表的第三比值;63.计算同一个源表在第四维度的第一统计数据与第四维度的第二统计数据的比值作为对应源表的第四比值。64.另外,为了避免下轮离线计算任务重复统计,可以将第二统计数据保存至计算元数据中。下轮离线计算任务只需要统计变化的业务数据的第一统计数据,并将此轮的第一统计数据与上一轮得到的第二统计数据进行合并得到此轮的第二统计数据,这样可以有效避免重复统计,减少计算量。65.在一个实施例中,基于计算方式确定规则,根据比值与对应第一阈值的大小确定对应源表在当前轮离线计算任务中的计算方式,包括:66.若同一个源表对应的所有比值中有预设数量的比值小于对应的第一阈值,则判定对应的源表在当前轮离线计算任务中的计算方式为增量计算,其中,预设数量不超过统计维度的个数。67.具体地,预设数量具体根据实际应用场景配置,预设数量为1与统计维度的总个数之间的任意数。68.如果预设数量为统计维度的总个数,则同一个源表对应的所有比值均小于对应的第一阈值才判定该源表在当前轮离线计算任务中满足增量计算执行条件。更具体地,若所有维度的比值均小于对应的第一阈值,则确定源表在当前轮离线计算任务中的计算方式为增量计算,若任意一个维度的比值不小于对应的第一阈值,则确定源表在当前轮离线计算任务中的计算方式为全量计算。69.如果预设数量为1,则同一个源表对应的所有比值中任意一个比值小于对应的第一阈值即判定该源表在当前轮离线计算任务中满足增量计算执行条件。更具体地,若任意一个维度的比值小于对应的第一阈值,则确定源表在当前轮离线计算任务中的计算方式为增量计算,若所有维度的比值均不小于对应的第一阈值,则确定源表在当前轮离线计算任务中的计算方式为全量计算。70.统计数据的比值更加直观,保存统计数据可以看到数据的变化趋势,可以根据统计数据调节统计维度的个数与第一阈值。71.第一阈值、预设数量可以都是从任务配置信息中获取的。72.在一个实施例中,步骤s500具体包括:73.根据离线计算逻辑中所包含的分组类型及分组顺序,对目标表中的待计算数据进行分组,得到多个分组数据;74.对每个分组数据进行计算,得到计算结果。75.具体地,离线计算逻辑中包括多表join计算和/或聚合计算。多表join计算即关联计算。分组类型包括关联分组和聚合分组。分组顺序是从任务配置信息中获取的。研发人员根据数据仓库中关联字段的取值、聚合分组字段的取值即值的分布分别确定关联分组、聚合分组对数据分组的粗细程度来配置分组顺序的。对数据分组越细,则越可能为优先使用的分组类型。76.例如,如果分组类型包括关联分组和聚合分组,且关联分组的分组顺序即优先级高于聚合分组,则根据主表与关联表之间的关联字段的取值对目标表中的待计算数据进行第一分组得到多个第一分组数据,然后根据聚合分组字段的取值对所有第一分组数据进行第二分组,得到多个第二分组数据。对第二分组数据进行计算得到计算结果。77.例如,在sql代码:selectta.field_a,tb.field_bfromtable_ataleftjointable_btbonta.join_field=tb.join_field中,join_field即为关联条件或关联字段;根据关联字段的取值对待计算数据进行分组。78.例如,在sql代码:selectfield_a,count(field_b)fromtablegroupbyfield_a中,field_a即为聚合条件或聚合分组字段;根据聚合分组字段的取值对待计算数据进行分组。79.其中,在关联分组中,根据主表与各个关联表的关联字段来确定分组方式,分组方式包括组合分组和/或非组合分组,即分组方式可能包括至少一次非组合分组,也可能包括至少一次次组合分组,还可能包括至少一次组合分组和非组合分组。组合分组指根据至少两个关联字段的组合对数据进行分组,非组合分组指根据一个关联字段对数据进行分组。80.如果主表与至少一个关联表通过至少两个不同的关联字段关联,则根据每个关联表与主表所对应的关联字段的个数,按照个数递减的方式先后从个数最多的一组关联字段开始对待计算数据进行组合分组或非组合分组。例如,主表a与关联表b有5个第一关联字段,主表a与关联表c有4个第二关联字段,主表a与关联表d有2个第三关联字段。则先根据5个第一关联字段对待计算数据进行第一分组,这5个第一关联字段可以用组合分组也可以用非组合分组;然后根据4个第二关联字段对第一分组得到的第一分组数据进行第二分组,最后根据2个第三关联字段对第二分组得到第二分组数据进行第三分组。其中,第一关联字、第二关联字段和第三关联字段如果有相同的关联字段,则相同的关联字段只在一次分组中使用。81.例如,主表a与关联表b通过关联字段f1和f2关联,主表a与关联表c通过关联字段f2关联,对表a、b、c所包含的待计算数据进行分组是先通过关联字段f2对待计算数据进行第一分组,再根据关联字段f1对第一分组得到的第一分组数据进行第二分组。82.再例如,主表a与关联表b通过关联字段f1和f3关联,主表a与关联表c通过关联字段f2关联,对表a、b、c所包含的待计算数据进行分组是先通过关联字段f1对待计算数据进行第一分组再通过关联字段f3对第一分组得到的第一分组数据进行第二分组,或,先通过关联字段f3对待计算数据进行第一分组再通过关联字段f1对第一分组得到的第一分组数据进行第二分组,或,通过关联字段f1和f3的组合对待计算数据进行组合分组;再根据关联字段f2对第二分组得到的第二分组数据或组合分组得到的组合分组数据进行第三分组。83.一个聚合分组字段可以包括多个不同的取值,例如,聚合分组字段为地区,地区的取值有北京、上海、广州和深圳。84.另外,本技术还可以根据待计算数据的数据量确定是否进行细粒度划分。如果数据量超过数据量阈值,则根据关联分组和/或聚合分组进行细粒度划分;如果数据量不超过数据量阈值,则不进行过于细粒度的划分或只根据其中部分分组类型进行划分。85.对每个分组数据进行计算,得到计算结果,包括:86.如果不存在聚合分组,则对每个分组数据独立计算,得到每个分组数据的子计算结果,所有子计算结果组成计算结果。87.如果存在关联分组和聚合分组,则先通过关联分组将待计算数据分为多个关联分组数据,再对每个关联分组数据进行聚合分组,得到每个关联分组数据对应的多个聚合分组数据。88.对于每个关联分组数据对应的多个聚合分组数据计算是从最细粒度的第一个聚合分组数据开始计算,得到每个关联分组数据对应的计算结果。聚合分组对应的分组数据为聚合计算,聚合计算一般包括求和、计数、均值、最大值、最小值等计算。89.对于数据分组和数据计算的方式不限于上述方式,本技术对此不做任何限定。90.在一个实施例中,步骤s500具体包括:91.基于离线计算逻辑中所包含的分组类型及分组顺序,从第一优先级别的分组类型开始对对目标表中的待计算数据进行分组;92.若通过当前分组类型分组后得到的多个分组数据中存在至少一个目标分组数据,其中,目标分组数据的数据量超过对应的第二阈值,则启用分组顺序中的下一个分组类型对目标分组数据进行继续分组;93.若通过当前分组类型分组后得到的多个分组数据中不存在目标分组数据或所有分组类型都启用过,则停止分组;94.对停止分组后得到的每个最终分组数据进行计算,得到计算结果。95.具体地,每个分组类型要尽可能的对数据多分组,如果先执行的分组类型对数据分组得非常细粒度即分组数据中不存在大数据量的分组数据,则不需要执行后面的分组类型对应的分组。96.更具体地,先根据分组顺序中位于第一优先级别的分组类型对目标表中的待计算数据进行分组得到多个第一分组;97.若多个第一分组中存在至少一个第一分组的数据量超过对应的第二阈值,则根据下一个优先级别的分组类型对第一分组中数据量超过对应的第二阈值的第一分组进行继续分组,其他没有超过数据量的第一分组可以不用继续分组。以此类推,直到没有数据量超过对应第二阈值的分组或者分组类型已经使用完。其中,第二阈值可以是从任务配置信息中获取的。98.本实施例对数据量大就细粒度划分,数据量不大就不进行过于细粒度的划分可以减少数据分组带来的计算开销,提高计算速度。99.在一个实施例中,在步骤s100之前,该方法还包括:100.从业务库抽取变化数据;101.将变化数据添加至对应的源表中或利用变化数据替换对应源表中的对应历史数据,对源表中的变化数据进行标识或记录操作时间戳或记录版本号。102.具体地,从业务库抽取变化数据可以是实时抽取也可以是启动当前轮离线计算任务后的离线抽取,离线抽取完成后才执行步骤s100-s500。103.优选地,以离线抽取为例,每次启动离线计算任务后在抽取数据之前,如果是通过标记的方式标记变化的数据,则先将所有标记清除,再从业务库抽取数据到源表中。抽取的变化数据如果是新增加的数据以存储的方式存储到对应的源表中,如果抽取的变化数据为修改数据,则可以以覆盖历史数据的形式替换对应源表中的历史数据,此时,可以在源表中变化数据打上指示变化的标识。在步骤s200中可以根据标识来识别每个源表中变化的业务数据。104.也可以以非覆盖存储的方式将修改数据存储到对应的源表中,此情况记录源表中变化数据的版本号或操作时间戳或为修改数据和新增数据打上指示变化的标识。在步骤s200中,根据操作时间戳或版本号或标识来识别每个源表中变化的业务数据。105.本实施例通过标识或操作时间戳或版本号极大方便了变化的业务数据的识别,使变化的业务数据能够被抽取任务精确的捕捉到,保证抽取数据的正确性,加快了数据计算速度。106.在一个实施例中,在得到计算结果之后,该方法还包括:107.在增量表中保存当前轮离线计算任务的计算结果;108.或,109.将当前轮离线计算任务的计算结果与源表中的存量数据进行合并,得到当前轮离线计算任务对应的全量数据。110.具体地,初次离线计算任务保存的是数据仓库中全部业务数据的全量计算的结果。在后面的每次离线计算任务中保存的是当前轮离线计算任务中目标表中的待计算数据的计算结果。111.或者,每次离线计算任务得到的计算结果与前一轮离线计算任务的存量数据进行合并得到当前轮离线计算任务的全量数据。112.由于除了第一次是全量计算之外,其余都是增量数据或修改数据等变化的业务数据的计算,因此,不需要全量计算,如果需要全量数据,只需要将离线计算任务得到的数据与存量数据合并即可得到全量数据。113.在一个实施例中,在得到计算结果之后,该方法还包括:114.计算当前轮离线计算任务中资源消耗的第三统计数据;115.根据第三统计数据对当前轮离线计算任务的计算效率进行评估;116.根据得到的评估结果对任务配置信息进行调整,其中,任务配置信息包括第一阈值、第二阈值、统计维度、分组顺序、计算方式确定规则中的至少一个。117.具体地,记录计算资源消耗的第三统计信息,并有计划的对离线计算任务的计算效率进行评估,用来调整计算方式确定规则和数据准备相关的阈值信息。通过反馈的方式自动对任务配置信息进行调整,有利于优化离线计算任务的执行效果,使离线计算任务更优。其中,计算资源包括cpu核心数、内存、磁盘io、网络io、运行时间等。计算效率的评估具体可以将计算中各种资源消耗归一化之后加权求和,算出一个指数;将该指数与全量计算所对应的资源消耗的指数进行对比,即可评估该离线计算任务是否效率更高。同时根据评估结果调整离线计算配置信息中的参数,评估参数调整的有效性,辅助参数调优。118.离线计算任务一般只计算变化的数据。但是如果关联条件或聚合条件的取值发生变化,则会依赖历史数据。将历史数据中变化的数据从历史数据中剔除,对部分历史数据重新计算;如果数据未发生变化,则不计算。119.具体地,若关联条件变化即关联字段的取值发生变化,则获取取值发生变化的关联字段所对应的第一历史存量业务数据,将剔除的取值所对应的第一目标业务数据从所述第一历史存量业务数据中剔除(即从分组中剔除),对剔除数据后余下的第一历史存量业务数据重新进行计算。因为新增的取值所对应的业务数据已经在离线计算任务中被计算了,因此只需要更新历史存量数据的计算。120.若聚合条件变化即聚合分组字段的取值发生变化,则获取取值发生变化的聚合分组字段所对应的第二历史存量业务数据,将剔除的取值所对应的第二目标业务数据从所述第二历史存量业务数据中剔除(即从分组中剔除),对剔除数据后余下的第二历史存量业务数据重新进行计算。因为新增的取值所对应的业务数据已经在离线计算任务中被计算了,因此只需要更新历史存量数据的计算。121.本技术通过离线计算优化方法将数据进行了细粒度的划分:根据数据的增量和存量的划分,根据关联条件分组划分和聚合条件分组划分。这样就可以只计算变化的业务数据,避免了全量计算造成的资源浪费,特别是减少了多表关联导致的计算放大浪费资源。并且只计算变化的业务数据,需要的时间更少,这样就可以提高数据的时效性,可以一定程度的避免必须t+1的计算;对变化的业务数据进行计算时大部分表只用保存增量数据,可以有效节省存储资源。122.应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本技术实施例的实施过程构成任何限定。123.图2为本技术一实施例中数据仓库中减少计算量的装置的结构框图。参考图2,该装置包括:124.任务启动模块100,用于根据监听到的触发事件启动当前轮离线计算任务;125.计算方式确定模块200,用于根据源表中变化的业务数据与全部业务数据及计算方式确定规则确定每张源表在当前运行的当前轮离线计算任务中的计算方式,其中,变化的业务数据为从上一轮离线计算任务开始到当前轮离线计算任务开始期间内抽取到的变化数据,计算方式为全量计算或增量计算;126.第一数据抽取模块300,用于从确定为增量计算的源表中抽取变化的业务数据保存为对应的新表;127.逻辑生成模块400,用于根据全量计算逻辑、目标表和任务配置信息生成用于离线计算的离线计算逻辑,其中,所目标表包括计算方式为全量计算的源表和生成的新表;128.第一计算模块500,用于利用离线计算逻辑对目标表中的待计算数据进行计算,得到计算结果。129.在一个实施例中,计算方式确定模块200具体包括:130.统计模块,用于分别统计每张源表中变化的业务数据在至少一个统计维度的第一统计数据,及对应源表的全部业务数据在相同维度的第二统计数据,其中,源表为主表或关联表;131.第二计算模块,用于分别计算每个统计维度的第一统计数据与相同源表相同维度的第二统计数据的比值;132.判定模块,用于基于计算方式确定规则,根据比值与对应第一阈值的大小确定对应源表在当前轮离线计算任务中的计算方式。133.在一个实施例中,统计模块包括以下至少一个模块:134.第一统计模块,用于分别统计每张源表中变化的业务数据的条数作为对应源表在第一维度的第一统计数据,统计对应源表所包含的全部业务数据的总条数作为对应源表在第一维度的第二统计数据;135.第二统计模块,用于分别统计每张源表中变化的业务数据所占字节数作为对应源表在第二维度的第一统计数据,统计对应源表所包含的全部业务数据所占的总字节数作为对应源表在第二维度的第二统计数据;136.第三统计模块,用于分别统计每张源表中变化的业务数据所包含的计算字段的个数作为对应源表在第三维度的第一统计数据,统计对应源表所包含的全部业务数据所包含的全部字段的总字段个数作为对应源表在第三维度的第二统计数据;137.第四统计模块,用于分别统计每张源表中参与计算字段所占字节数作为对应源表在第四维度的第一统计数据,统计对应源表所包含的全部字段所占字节数作为在第四维度的第二统计数据。138.在一个实施例中,判定模块,具体用于若同一个源表对应的所有比值中有预设数量的比值小于对应的第一阈值,则判定对应的源表在当前轮离线计算任务中的计算方式为增量计算,其中,预设数量不超过统计维度的个数。139.在一个实施例中,第一计算模块500具体包括:140.第一分组模块,用于根据离线计算逻辑中所包含的分组类型及分组顺序,对目标表中的待计算数据进行分组,得到多个分组数据;141.第一子计算模块,用于对每个分组数据进行计算,得到计算结果。142.在一个实施例中,第一计算模块500具体包括:143.第二分组模块,用于基于离线计算逻辑中所包含的分组类型及分组顺序,从第一优先级别的分组类型开始对对目标表中的待计算数据进行分组;144.继续分组模块,用于若通过当前分组类型分组后得到的多个分组数据中存在至少一个目标分组数据,其中,目标分组数据的数据量超过对应的第二阈值,则启用分组顺序中的下一个分组类型对目标分组数据进行继续分组;145.停止分组模块,用于若通过当前分组类型分组后得到的多个分组数据中不存在目标分组数据或所有分组类型都启用过,则停止分组;146.第二子计算模块,用于对停止分组后得到的每个最终分组数据进行计算,得到计算结果。147.在一个实施例中,该装置还包括:148.第二数据抽取模块,用于从业务库抽取变化数据;149.第一存储模块,用于将变化数据添加至对应的源表中或利用变化数据替换对应源表中的对应历史数据,对源表中的变化数据进行标识或记录操作时间戳或记录版本号。150.在一个实施例中,该装置还包括:151.第二存储模块,用于在增量表中保存当前轮离线计算任务的计算结果;152.或,153.数据合并存储模块,用于将当前轮离线计算任务的计算结果与源表中的存量数据进行合并,得到当前轮离线计算任务对应的全量数据。154.在一个实施例中,该装置还包括:155.第三计算模块,用于计算当前轮离线计算任务中资源消耗的第三统计数据;156.评估模块,用于根据第三统计数据对当前轮离线计算任务的计算效率进行评估;157.调整模块,用于根据得到的评估结果对任务配置信息进行调整,其中,任务配置信息包括第一阈值、第二阈值、统计维度、分组顺序、计算方式确定规则中的至少一个。158.其中上述模块/单元中的“第一”和“第二”的意义仅在于将不同的模块/单元加以区分,并不用于限定哪个模块/单元的优先级更高或者其它的限定意义。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或模块的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或模块,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或模块,本技术中所出现的模块的划分,仅仅是一种逻辑上的划分,实际应用中实现时可以有另外的划分方式。159.关于数据仓库中减少计算量的装置的具体限定可以参见上文中对于数据仓库中减少计算量的方法的限定,在此不再赘述。上述数据仓库中减少计算量的装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。160.图3为本技术一实施例中计算机设备的内部结构框图。如图3所示,该计算机设备包括通过系统总线连接的处理器、存储器、网络接口、输入装置和显示屏。其中,该计算机设备的处理器用于提供计算和控制能力。存储器包括存储介质和内存储器。存储介质可以是非易失性存储介质,也可以是易失性存储介质。存储介质存储有操作系统,还可存储有计算机可读指令,该计算机可读指令被处理器执行时,可使得处理器实现数据仓库中减少计算量的方法。该内存储器为存储介质中的操作系统和计算机可读指令的运行提供环境。该内存储器中也可储存有计算机可读指令,该计算机可读指令被处理器执行时,可使得处理器执行数据仓库中减少计算量的方法。该计算机设备的网络接口用于与外部服务器通过网络连接通信。计算机设备的显示屏可以是液晶显示屏或者电子墨水显示屏,计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。161.在一个实施例中,提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机可读指令(例如计算机程序),处理器执行计算机可读指令时实现上述实施例中数据仓库中减少计算量的方法的步骤,例如图1所示的步骤s100至步骤s500及该方法的其它扩展和相关步骤的延伸。或者,处理器执行计算机可读指令时实现上述实施例中数据仓库中减少计算量的装置的各模块/单元的功能,例如图2所示模块100至模块500的功能。为避免重复,这里不再赘述。162.处理器可以是中央处理单元(centralprocessingunit,cpu),还可以是其他通用处理器、数字信号处理器(digitalsignalprocessor,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现成可编程门阵列(field-programmablegatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等,处理器是计算机装置的控制中心,利用各种接口和线路连接整个计算机装置的各个部分。163.存储器可用于存储计算机可读指令和/或模块,处理器通过运行或执行存储在存储器内的计算机可读指令和/或模块,以及调用存储在存储器内的数据,实现计算机装置的各种功能。存储器可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据手机的使用所创建的数据(比如音频数据、视频数据等)等。164.存储器可以集成在处理器中,也可以与处理器分开设置。165.本领域技术人员可以理解,图3中示出的结构,仅仅是与本技术方案相关的部分结构的框图,并不构成对本技术方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。166.在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机可读指令,计算机可读指令被处理器执行时实现上述实施例中数据仓库中减少计算量的方法的步骤,例如图1所示的步骤s100至步骤s500及该方法的其它扩展和相关步骤的延伸。或者,计算机可读指令被处理器执行时实现上述实施例中数据仓库中减少计算量的装置的各模块/单元的功能,例如图2所示模块100至模块500的功能。为避免重复,这里不再赘述。167.本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机可读指令来指示相关的硬件来完成,所述的计算机可读指令可存储于一计算机可读取存储介质中,该计算机可读指令在执行时,可包括如上述各方法的实施例的流程。其中,本技术所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(rom)、可编程rom(prom)、电可编程rom(eprom)、电可擦除可编程rom(eeprom)或闪存。易失性存储器可包括随机存取存储器(ram)或者外部高速缓冲存储器。作为说明而非局限,ram以多种形式可得,诸如静态ram(sram)、动态ram(dram)、同步dram(sdram)、双倍速率sdram(ddrsdram)、增强型sdram(esdram)、同步链路(synchlink)dram(sldram)、存储器总线(rambus)直接ram(rdram)、直接存储器总线动态ram(drdram)、以及存储器总线动态ram(rdram)等。168.需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、装置、物品或者方法不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、装置、物品或者方法所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、装置、物品或者方法中还存在另外的相同要素。169.上述本技术实施例序号仅仅为了描述,不代表实施例的优劣。通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在如上所述的一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本技术各个实施例所述的方法。170.以上仅为本技术的优选实施例,并非因此限制本技术的专利范围,凡是利用本技术说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的
技术领域
:,均同理包括在本技术的专利保护范围内。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1