一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种数据处理方法及装置与流程

2022-07-30 12:34:37 来源:中国专利 TAG:


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.在一种可能的实施方式中,所述根据所述多个预设计算任务各自对应的第一中间数据,分别执行所述多个预设计算任务之前,还包括:
27.将所述多个预设计算任务分别设置在多个线程中;其中,每个所述线程中设置一种类型的所述预设计算任务;
28.根据所述多个预设计算任务各自对应的第一中间数据,分别执行所述多个预设计算任务,包括:
29.根据所述多个预设计算任务各自对应的第一中间数据,在所述多个线程中分别执行所述多个预设计算任务。
30.在一种可能的实施方式中,所述多个线程均设置有线程锁。
31.在一种可能的实施方式中,所述在所述多个线程中分别执行所述多个预设计算任务,包括:
32.分别对所述多个线程开启线程锁;
33.在开启线程锁的所述多个线程中分别执行所述多个预设计算任务。
34.在一种可能的实施方式中,所述方法还包括:
35.按照预设频率生成包括所述第一用户的相关数据的表。
36.在一种可能的实施方式中,所述第一表为第t天生成的所述第一用户的相关数据的表,所述第二表为第t-1天生成的所述第一用户的相关数据的表,所述t为大于1的整数。
37.在一种可能的实施方式中,所述第一表为估值表。
38.在一种可能的实施方式中,所述第一中间数据包括下述的一种或多种:最新波段净价开仓额、最新波段净价平仓额、最新波段全价开仓额、最新波段全价平仓额、历史全价开仓额或历史全价平仓额。
39.第二方面,本技术实施例提供一种数据处理装置,包括处理单元和获取单元;
40.所述处理单元,具体用于接收针对第一表的导入事件,所述第一表包括第一用户的相关数据;
41.所述处理单元,具体还用于根据所述第一表,确定针对第一用户的第一事件是否发生;
42.所述获取单元,具体用于在所述第一事件发生时,获取所述第一事件的多个预设计算任务;
43.所述获取单元,具体还用于在数据库中获取各所述预设计算任务对应的第一中间数据;其中,所述第一中间数据为根据源数据计算得到的中间数据,所述源数据为所述第一用户历史发生所述第一事件时产生的源数据;
44.所述处理单元,具体还用于根据所述多个预设计算任务各自对应的第一中间数据,分别执行所述多个预设计算任务,得到各所述预设计算任务对应的第二中间数据,以及在所述数据库中更新所述第一中间数据为所述第二中间数据;
45.所述处理单元,具体还用于根据所述第二中间数据计算所述第一事件的目标数据变化情况。
46.在一种可能的实施方式中,所述处理单元,具体还用于对所述第一表进行字段分析;
47.所述处理单元,具体还用于在所述第一表的字段与预先获取的第二表中的字段存在不同的情况下,确定针对所述第一用户的所述第一事件发生;其中,所述第二表的生成日期早于所述第一表。
48.在一种可能的实施方式中,所述第一事件包括第一数据,所述处理单元,具体还用于对所述第一数据进行字段分析;
49.所述获取单元,具体还用于在所述第一数据中存在目标字段,且所述第一数据中的目标字段与预设的第三表中的目标字段不同的情况下,获取所述目标字段对应的多个预设计算任务。
50.在一种可能的实施方式中,所述处理单元,具体还用于判断所述第一事件是否对应有第二事件;
51.所述获取单元,具体还用于在所述第一事件对应没有所述第二事件的情况下,在数据库中获取与所述第二事件相关的预设计算任务对应的第一中间数据。
52.在一种可能的实施方式中,所述处理单元,具体还用于在所述第一数据中的字段与预设的第三表中的字段存在不同的情况下,将所述第一数据导入所述第三表中;
53.所述处理单元,具体还用于比较所述第一数据中的目标字段与所述第三表中的目标字段;
54.所述获取单元,具体还用于在所述第一数据中的目标字段与所述第三表中的目标字段不同的情况下,获取所述目标字段对应的多个预设计算任务。
55.在一种可能的实施方式中,所述处理单元,具体还用于将所述多个预设计算任务分别设置在多个线程中;其中,每个所述线程中设置一种类型的所述预设计算任务;
56.所述处理单元,具体还用于根据所述多个预设计算任务各自对应的第一中间数据,分别执行所述多个预设计算任务,包括:
57.所述处理单元,具体还用于根据所述多个预设计算任务各自对应的第一中间数据,在所述多个线程中分别执行所述多个预设计算任务。
58.在一种可能的实施方式中,所述多个线程均设置有线程锁。
59.在一种可能的实施方式中,所述处理单元,具体还用于分别对所述多个线程开启线程锁;
60.所述处理单元,具体还用于在开启线程锁的所述多个线程中分别执行所述多个预设计算任务。
61.在一种可能的实施方式中,所述处理单元,具体还用于按照预设频率生成包括所述第一用户的相关数据的表。
62.在一种可能的实施方式中,所述第一表为第t天生成的所述第一用户的相关数据的表,所述第二表为第t-1天生成的所述第一用户的相关数据的表,所述t为大于1的整数。
63.在一种可能的实施方式中,所述第一表为估值表。
64.在一种可能的实施方式中,所述第一中间数据包括下述的一种或多种:最新波段净价开仓额、最新波段净价平仓额、最新波段全价开仓额、最新波段全价平仓额、历史全价开仓额或历史全价平仓额。
65.第三方面,本技术实施例提供一种电子设备,包括:存储器和处理器。存储器,用于存储程序指令;处理器,用于调用并执行所述存储器中的程序指令,执行如上任一项所述的方法。
66.第四方面,本技术实施例提供一种计算机可读存储介质,计算机可读存储介质中存储有计算机程序,当计算机程序被处理器执行时,实现如上任一项所述的方法。
67.本技术实施例中,在根据第一表确定针对第一用户的第一事件发生后,获取第一事件的多个预设计算任务根据在数据库中获取各预设计算任务对应的第一中间数据,分别执行多个预设计算任务,得到各预设计算任务对应的第二中间数据,以及在数据库中更新第一中间数据为第二中间数据。这样,可以在根据第一表来确定针对第一用户的第一事件是否发生,在确定第一用户的第一事件发生后,在上一次得到的中间数据的基础上计算本次的中间数据,并根据本次的中间数据计算第一事件的目标数据变化情况,不需要对历史第一事件对应的数据进行汇总,可以提高处理效率,减少资源消耗。
附图说明
68.此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。
69.图1为本技术实施例提供的一种数据处理方法的流程示意图;
70.图2为本技术实施例提供的一种多线程执行计算任务的示意图;
71.图3为本技术实施例提供的一种数据处理方法的流程示意图;
72.图4为本技术实施例提供的一种电子设备的结构示意图。
73.通过上述附图,已示出本公开明确的实施例,后文中将有更详细的描述。这些附图和文字描述并不是为了通过任何方式限制本公开构思的范围,而是通过参考特定实施例为本领域技术人员说明本公开的概念。
具体实施方式
74.这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例
中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
75.随着社会生活水平的提高及理财观念的普及,越来越多的人通过购买股票、基金等方式进行理财。因此,资产管理业务蓬勃发展,在资产管理业务中,证券、期货、基金和/或股票等金融投资公司作为资产管理人,根据资产管理合同约定的方式、条件、要求及限制,对客户资产进行经营运作,为客户提供证券、期货、基金和/或股票等金融产品的投资管理服务。
76.在资产管理业务架构中,持仓中心可以根据估值表,推导持仓数据和成交数据,例如,持仓中心在接收到估值表后,将历史每一次成交数据对应的净价开仓额、净价平仓额、全价开仓额和全价平仓额分别进行累加,并根据累加的结果推导持仓数据。
77.然而,上述方法每次接收估值表数据后,都需要将历史成交数据进行累加,存在处理效率较低的问题。而且在接收估值表数据后,没有确认该估值表数据是否发生变化,存在重复计算导致资源浪费的问题。
78.基于上述问题,本技术实施例提供一种数据处理方法,通过接收第一表的导入事件,在根据第一表确定针对第一用户的第一事件发生后,获取第一事件的多个预设计算任务根据在数据库中获取各预设计算任务对应的第一中间数据,分别执行多个预设计算任务,得到各预设计算任务对应的第二中间数据,以及在数据库中更新第一中间数据为第二中间数据。这样,可以在根据第一表来确定针对第一用户的第一事件是否发生,在确定第一用户的第一事件发生后,在上一次得到的中间数据的基础上计算本次的中间数据,并根据本次的中间数据计算第一事件的目标数据变化情况,不需要对历史第一事件对应的数据进行汇总,可以提高处理效率,减少资源消耗。
79.图1为本技术实施例提供的一种数据处理方法,如图1所示,该方法包括:
80.s101:接收针对第一表的导入事件。
81.本技术实施例中,第一表包括第一用户的相关数据。例如,第一表中可以包括第一用户持有商品的数量、种类及每种商品对应的价格等信息。
82.本技术实施例中,第一用户可以是系统的注册用户中的任一用户,本技术实施例不作限定。其中,系统可以为资产管理系统或购物系统等。
83.可能的实现方式中,可以按照预设频率生成包括第一用户的相关数据的表。
84.示例性的,若电子设备每天生成包括第一用户的相关数据的表,可以理解为,若第一表为8月8日生成了包括第一用户的相关数据的表,则电子设备在8月7日也生成了包括第一用户的相关数据的表。
85.s102:根据第一表,确定针对第一用户的第一事件是否发生。
86.本技术实施例中,第一事件可以是与交易相关的事件,例如,第一事件可以是第一用户在系统中购买了某商品,本技术实施例对第一事件的具体类型不作具体限定。
87.可能的实现方式中,可以通过对第一表中的相关数据与历史生成的表的相关数据进行对比,在第一表中的相关数据与历史生成的表的相关数据存在不同的情况下,确定针对第一用户的第一事件发生。其他情况可以认为针对第一用户的第一事件没有发生。在确定针对第一用户的第一事件没有发生的情况下,下述s103、s104和s105为可选步骤,可以理解为,第一用户没有发生交易行为,因此可以不再推导目标数据的变化情况,节省计算资
源。
88.示例性的,若第一表为8月8日生成的包括第一用户的相关数据的表,第一表中显示第一用户持有商品数量为100,而8月7日生成的包括第一用户的相关数据的表中显示第一用户持有商品数量为80,则在接收对第一表的导入事件之后,可以判断第一表中的商品数量与8月7日生成的表中的商品数量不同,则可以确定针对第一用户的第一事件发生。
89.可能的实现方式中,在确定第一事件发生后,可以通过第一表确定第一事件对应的第一数据。第一数据可以为第一用户的成交数据或订单信息等。在确定第一事件对应的第一数据后,可以将第一数据存储至数据库中,其中,数据库可以包括关系型数据库和缓存数据库。
90.s103:在第一事件发生时,获取第一事件的多个预设计算任务。
91.本技术实施例中,每个预设计算任务可以用于计算一种中间数据,例如预设计算任务可以是第一事件对应多个中间数据的计算方法,计算方法可以包括累加或者取较小值等。该预设计算任务可以是提前设置在数据库中的,在第一事件发生时,可以根据第一事件的具体类型,获取相应的多个预设计算任务。在每次执行完预设计算任务后,可以将得到的中间数据存储至数据库中,便于第一用户下次发生第一事件后使用。
92.示例性的,某系统在计算某商品的历史销售额时,在第一用户购买该商品后,对应的预设计算任务可以是在上一次购买该商品后的历史总销售额的基础上累加当次第一用户的交易额,并将累加得到的总销售额存储至数据库中。
93.示例性的,某系统在统计某商品的历史单日销售量最大值时,在第一用户购买该商品后,对应的预设计算任务可以是将当天的购买数量与历史单日购买数量中的最大值进行比较,得到最新单日销售量最大值,并将最新单日销售量最大值存储至数据库中。
94.s104:在数据库中获取各预设计算任务对应的第一中间数据。
95.本技术实施例中,第一中间数据为根据源数据计算得到的中间数据,源数据为第一用户历史发生第一事件时产生的源数据。
96.可能的实现方式中,第一中间数据为最接近第一事件发生时间的历史第一事件对应的中间数据。在第一用户每次发生第一事件后,可以根据该第一事件对应的第一数据计算得到对应的中间数据。
97.示例性的,系统在计算某商品的历史销售额时,在第一用户购买该商品后,对应的预设计算任务可以是在上一次购买该商品后的历史总销售额的基础上累加当次第一用户的交易额,在这种情况下,第一中间数据为上一次购买商品后的历史销售额。
98.s105:根据多个预设计算任务各自对应的第一中间数据,分别执行多个预设计算任务,得到各预设计算任务对应的第二中间数据,以及在数据库中更新第一中间数据为第二中间数据。
99.可能的实现方式中,根据多个预设计算任务各自对应的第一中间数据,将第一用户对应的第一事件的第一数据与第一中间数据进行累加,得到各预计计算任务对应的第二中间数据,并在数据库中更新第一中间数据为第二中间数据。
100.可能的理解方式中,第二中间数据为最新发生的第一事件对应的中间数据。
101.示例性的,用户购买某商品后,将上一次购买商品后的历史销售额与本次购买商品的交易额进行累加,得到最新的商品销售额,并在数据库中将上一次购买商品后的历史
销售额更新为最新的商品销售额。
102.s106:根据第二中间数据计算第一事件的目标数据变化情况。
103.本技术实施例中,目标数据可以是与第一事件相关的数据,例如目标数据可以包括商品销售额、商品库存、持仓数据和/或投资组合估值,本技术实施例对目标数据的具体含义不作限定。
104.示例性的,当基于成交数据推导持仓数据和/或投资组合估值时,根据第二中间数据,得到最新波段净价开仓额、最新波段净价平仓额、最新波段全价开仓额和/或最新波段全价平仓额等数据,计算持仓数据表中最新波段净价总成本和浮动收益,以及组合估值表中的总收益和总规模。
105.其中,持仓数据表中的最新波段净价总成本=最新波段净价开仓额-最新波段净价平仓额 费用(例如,佣金手续费税费等),持仓数据表中的浮动收益=最新波段全价平仓额-最新波段全价开仓额-费用(佣金手续费税费等),总收益=历史全价平仓额-历史全价开仓额 市值。
106.其中,总规模=初始规模 总收益,初始规模为第一用户的初始资金。
107.本技术实施例中,接收第一表的导入事件,在根据第一表确定针对第一用户的第一事件发生后,获取第一事件的多个预设计算任务根据在数据库中获取各预设计算任务对应的第一中间数据,分别执行多个预设计算任务,得到各预设计算任务对应的第二中间数据,以及在数据库中更新第一中间数据为第二中间数据。这样,可以在根据第一表来确定针对第一用户的第一事件是否发生,在确定第一用户的第一事件发生后,在上一次得到的中间数据的基础上计算本次的中间数据,并根据本次的中间数据计算第一事件的目标数据变化情况,不需要对历史第一事件对应的数据进行汇总,可以提高处理效率,减少资源消耗。
108.在图1对应的实施例的基础上,一种可能的实现方式中,s102包括:对第一表进行字段分析,在第一表的字段与预先获取的第二表中的字段存在不同的情况下,确定针对第一用户的第一事件发生。
109.本技术实施例中,第一表和第二表为按照预设频率生成的包括第一用户的相关数据的表,例如,第一表可以为估值表,其中,第二表的生成日期早于第一表。
110.示例性的,若系统每天生成一张包括第一用户的相关数据的表,则第一表为第t天生成的第一用户的相关数据的表,第二表为第t-1天生成的第一用户的相关数据的表,其中,t为大于1的整数。
111.可能的理解方式中,在对第一表进行字段分析后,可以得到第一表中的字段信息,例如,第一用户所持有商品的数量和价格等。
112.可能的实现方式中,在第一表的字段与预先获取的第二表中的字段存在不同的情况下,确定针对第一用户的第一事件发生。
113.示例性的,当第一事件为第一用户对证券、期货、基金和/或股票等金融产品的交易行为时,若第一表为开盘后第4天生成的第一用户的相关数据的表,在接收到针对第一表的导入事件后,系统可以接收到第4天生成的第一用户的相关数据的表。其中,第一表的字段包括:insttcode(机构编码)、portfoliocode(投资组合编码)、securitycode(证券编
码)、transdirect(交易方向:做多或者做空))、txid(唯一编码)、transtype(交易类型:买或卖)、quant(开仓数量或平仓数量)、price(净价)、unit_cost(单位成本)、total_cost(总成本)、commition(佣金手续费等)和/或isvalid(true或false)等字段信息。
114.通过比较第4天生成的第一表的字段与预先获取的第3天生成的第二表中的字段,在第4天生成的第一表的字段与预先获取的第3天生成的第二表中的字段存在不同的情况下,例如,第一表和第二表中的quant字段不同时,则可以确定针对第一用户的第一事件发生。
115.本技术实施例中,可以在获取预设计算任务之前,在第一表的字段与预先获取的第二表中的字段存在不同的情况下,确定针对第一用户的第一事件发生这样,可以避免对相同的数据进行重复处理,节省计算资源。
116.在图1对应的实施例的基础上,一种可能的实现方式中,s103包括:对第一数据进行字段分析,在第一数据中存在目标字段,且第一数据中的目标字段与预设的第三表中的目标字段不同的情况下,获取目标字段对应的多个预设计算任务。
117.本技术实施例中,第三表可以为成交表,用于记录第一用户发生第一事件后接收的第一数据。
118.可能的理解方式中,在对第一数据进行字段分析后,可以得到第一数据的关键信息,例如,价格和购买数量等。
119.可能的实现方式中,在第一数据中的字段与预设的第三表中的字段存在不同的情况下,将第一数据导入所述第三表中。然后比较第一数据中的目标字段与第三表中的目标字段,在所第一数据中的目标字段与第三表中的目标字段不同的情况下,获取目标字段对应的多个预设计算任务。
120.示例性的,当第一事件为第一用户对证券、期货、基金和/或股票等金融产品的交易行为时,在第一事件发生后,系统可以接收到第一数据。其中,第一数据中包括:insttcode(机构编码)、portfoliocode(投资组合编码)、securitycode(证券编码)、transdirect(交易方向:做多或者做空))、txid(唯一编码)、transtype(交易类型:买或卖)、quant(开仓数量或平仓数量)、price(净价)、commition(佣金手续费等)和/或isvalid(true或false)等字段信息。
121.在第一数据中的字段与预设在成交表中的字段存在不同的情况下,将第一数据导入至成交表中。通过比较第一数据中的目标字段与成交表中的成交数据中的目标字段,在第一数据中的目标字段与成交表中的目标字段不同的情况下,获取目标字段对应的多个预设计算任务。其中,目标字段包括:transtype(交易类型:买或卖)、quant(开仓数量或平仓数量)、price(净价)、commition(佣金手续费等)和/或isvalid(true或false)等字段。
122.本技术实施例中,可以在执行预设计算任务之前,判断第一事件对应的第一数据中的目标字段与第三表中目标字段是否存在不同,这样,可以避免对相同的第一数据进行重复处理,节省计算资源。
123.在图1对应的实施例的基础上,一种可能的实现方式中,s104包括:判断第一事件是否对应有第二事件,在第一事件对应没有第二事件的情况下,在数据库中获取与第二事件相关的预设计算任务对应的第一中间数据。
124.本技术实施例中,第二事件可以理解为在接收导入第一表的当天是否有导入的正
确的估值表数据。
125.本技术实施例中,第一中间数据可以为最新波段净价开仓额、最新波段净价平仓额、最新波段全价开仓额、最新波段全价平仓额、历史全价开仓额或历史全价平仓额。
126.可能的实现方式中,第一用户在交易中,系统每天晚上会进行清算,在清算后会可以得到正确的估值表数据,因此,判断第一事件是否对应有第二事件可以理解为,判断当日是否已有导入的清算后正确的估值表数据,如果已有导入的估值表数据,则可以认为该估值表数据为清算后得到的准确值,因此可以只对成交数据进行记录,不再做组合估值、持仓变化和持仓市值等实时数据的推导,也不再累计中间依赖值,例如,历史全价开仓额、历史全价平仓额等。在第一事件对应没有第二事件的情况下,在数据库中获取与第二事件相关的预设计算任务对应的第一中间数据。
127.本技术实施例中,判断第一事件是否对应有第二事件,在第一事件对应有第二事件的情况下,在数据库中获取与第二事件相关的预设计算任务对应的第一中间数据。这样,可以在进行在清算后会已得到正确的估值表数据的情况下,避免重复处理,节约计算资源。
128.在图1对应的实施例的基础上,一种可能的实现方式中,根据多个预设计算任务各自对应的第一中间数据,分别执行多个预设计算任务之前,还包括:将多个预设计算任务分别设置在多个线程中;其中,每个线程中设置一种类型的预设计算任务;其中,多个线程均设置有线程锁。
129.可能的实现方式中,根据多个预设计算任务各自对应的第一中间数据,在多个线程中分别执行多个预设计算任务。
130.可能的实现方式中,如图2所示,通过对投资组合对应的编码(code)进行哈希变换,其中,相同的投资组合需要串行执行,不同的投资组合可以分队列和多线程并行处理,这样,同一个投资组合在同一个实例节点中能够串行执行,分别对多个线程开启线程锁,在开启线程锁的多个线程中分别执行多个预设计算任务。其中,线程锁可以通过redis来实现。
131.本技术实施例中,将大量的请求响应时的同步计算任务所依赖的中间值计算,转变为分散的异步多次计算任务,使用分布式锁来解决多个实例并行计算可能出现的并发和不一致问题,从而达到高吞吐、一致性和可扩展等多项架构目标。这样,可以节省计算资源、服务器硬件io和网络io等资源。
132.下面结合图3对本技术实施例提供的数据处理方法进行介绍,如图3所示,该方法包括:
133.s301:接收针对第一表的导入事件。
134.可能的实现方式中,第一表可以是估值表。
135.s302:对第一表进行字段分析,得到第一表对应的字段。
136.s302可以对应于前述实施例中的记载,此处不再赘述。
137.s303:判断第一数据的字段是否与预先获取的第二表中的字段存在不同。
138.s303可以对应于前述实施例中的记载,此处不再赘述。
139.在第一表的字段与预先获取的第二表的字段存在不同的情况下,可以确定针对第一用户的第一事件发生,例如,第一用户发生了交易行为。在确定第一用的第一时间发生后,可以接收到第一数据。
140.s304:将第一表对应的字段导入持仓数据表中。
141.可能的理解方式中,在第一表的字段与预先获取的第二表中的字段不同的情况下,说明持仓表中没有导入过相同的持仓记录,因此将第一表对应的字段导入持仓数据表中。
142.s305:判断第一数据中的目标字段是否与第三表中的目标字段存在不同。
143.可能的实现方式中,第三表可以是成交表。在第一数据中的目标字段与第三表中的目标字段相同的情况下,可以理解为,成交表中存在着相同的成交数据,因此可以不再对第一数据进行处理。在第一数据中的目标字段与第二表中的目标字段不同的情况下,执行步骤s306。
144.s306:在持仓数据表中获取t-1日的持仓数量。
145.可能的理解方式中,在t日导入估值表,在t-1日的持仓表获取持仓数量,记为quant1。
146.s307:在第三表中将早于t-1日之前的成交数量进行累加,得到t-1日之前的总成交数量,记为amount2。
147.s308:判断第一表中的持仓数量与t-1日的持仓数量和t-1日之前的总成交数量的差值是否为0。
148.示例性的,若于10月7日在系统中导入某投资组合的估值表,则根据该估值表可以获取10月7日的持仓数据。在10月6日对应的持仓表中获取持仓数量quant1,将10月6日之前的有成交数据中的成交数量进行累加,得到10月6日之前的总成交数据quant2,判断第一表中的持仓数量与10月6日的持仓数量和10月6日之前的总成交数量的差值是否为0。在第一表中的持仓数量与10月6日的持仓数量和10月6日之前的总成交数量的差值是不为0的情况下,可以理解为在10月7日发生了第一事件,例如,进行了交易行为,所以导致10月7日的持仓数量发生了变化,因此可以执行步骤s309。
149.示例性的,当第一事件为第一用户针对股票、债券和/或基金等的交易行为时,第一用户可以为买方或卖方,无论第一用户是买入或卖出,第一用户新建头寸可以称为开仓。其中,头寸指的是第一用户持有或拥有的股票、债券和/或基金等的数量。
150.开仓是指第一用户买入或者卖出股票、债券和/或基金等,但平仓与开仓是反向操作,例如,开仓时第一用户是买入基金,那么对应平仓就是卖出基金,开仓时第一用户是卖出基金,那么对应平仓就是买入基金。当第一用户为多头,那么对应的操作就是卖出平仓,反之,如果第一用户是空头,那么对应的操作就是买入平仓。
151.可能的实现方式中,第一用户在发生第一事件时要说明是进行开仓还是平仓。例如第一用户原有10手多头持仓,在发生第一事件时,第一用户说明交易行为是卖出平仓5手,那么交易成功后第一用户就只持有5手多头持仓。如果第一用户说明交易行为是卖出开仓5手,那么交易成功后投资者就有10手多头持仓和5手空头持仓。
152.s309:在成交表中新增第一数据。
153.可能的实现方式中,在第一表中的持仓数量与t-1日的持仓数量和t-1日之前的总成交数量的差值不为0的情况下,可以在成交表中新增第一数据,其中第一数据可以是成交记录,成交记录包括:成交日期、成交数量、成交金额和成交价格等,其中,成交数量=第一表中的持仓数量-quant1-quant2,成交金额=今日成本-t-1日成本-amount2,成交价格=
成交金额/成交数量,如果第一用户所发生的第一事件是针对期货的交易行为,则期货对应的成交价格=成交金额/(成交数量*期货因子)。
154.s310:判断第一事件是否对应有第二事件。
155.可能的实现方式中,在股票、债券和/或基金等交易中,每天晚上系统会进行清算,在清算后会得到正确的估值表,因此,判断第一事件是否对应有第二事件可以理解为,判断当日是否已有导入的估值表数据,如果已有导入的估值表数据,则可以认为该估值表数据为清算后得到的准确值,因此可以只对成交数据进行记录,不再做组合估值、持仓变化和持仓市值等实时数据的推导,也不再累计中间依赖值,例如,历史全价开仓额、历史全价平仓额等。是否用清算后正确的持仓数据来覆盖已推导的持仓数据。在有已导入的持仓数据来覆盖已推导的持仓数据时,说明已得到清算后正确的持仓数据,因此不再根据第一数据来推导持仓数据和投组估值。在系统中没有导入的估值表数据时,执行步骤s3011。
156.s311:根据新增的第一数据,修改持仓数据表中的持仓数量、开仓额、平仓额和总费用。
157.可能的实现方式中,在第一事件对应没有第二事件的情况下,根据新增的成交记录,修改持仓表中的净价开仓额、净价平仓额、全价开仓额和全价平仓额等。其中,净价开仓额=净价*成交数量(开仓数量),净价平仓额=净价*成交数量(平仓数量),全价开仓额=全价*成交数量(开仓数量),全价平仓额=全价*成交数量(平仓数量),如果第一用户发生交易的是期货,则期货对应的净价平仓额=净价*成交数量(平仓数量)*期货因子,同理,可以得到期货对应的净价开仓额、全价开仓额和全价平仓额,具体的公式在此不再赘述。历史全价开仓额为历史对应的全价开仓额的总和,历史全价平仓额为历史所有第一事件对应的全价平仓额的总和。
158.s312:在持仓表中找到最后一个清仓日。
159.可能的实现方式中,在持仓数据表中找到最后一个清仓日d1和接收针对第一表的导入事件的发生时间d2,在d1和d2中确定较晚的时间为dd。示例性的,若最后一个清仓日d1为9月6日,最新第一事件的发生时间d2为9月9日,则第一事件的发生时间较晚,确定第一事件的发生时间9月9日为dd。
160.s313:根据第一数据,更新持仓数据表中大于或等于dd日中的数据。
161.可能的实现方式中,基于成交数据推导持仓数据时,可以在第二事件对应的第一中间数据的基础上进行累加第一数据,得到第一事件对应的第二中间数据,例如,最新波段净价开仓额、最新波段净价平仓额、最新波段全价开仓额和/或最新波段全价平仓额等数据,计算持仓数据表中最新波段净价总成本和浮动收益。
162.其中,最新波段净价开仓额为从上一个清仓日起至当前第一事件的发生时间内净价开仓额的总和,最新波段净价平仓额为从上一个清仓日起至当前第一事件的发生时间内净价平仓额的总和,最新波段全价开仓额为从上一个清仓日起至当前第一事件的发生时间内全价开仓额的总和,最新波段全价平仓额为从上一个清仓日起至当前第一事件的发生时间内净价开仓额的总合,其中,净价开仓额=净价*成交数量(开仓数量),净价平仓额=净价*成交数量(平仓数量),全价开仓额=净价*成交数量(开仓数量),全价平仓额=净价*成交数量(平仓数量),如果第一用户发生交易的是期货,则期货对应的净价平仓额=净价*成交数量(平仓数量)*期货因子,同理,可以得到期货对应的净价开仓额、全价开仓额和全价
平仓额,具体的公式在此不再赘述。历史全价开仓额为历史所有第一事件对应的全价开仓额的总和,历史全价平仓额为历史所有第一事件对应的全价平仓额的总和。
163.示例性的,若第一用户于2019年10月8日第一次购买20股a股票,于2020年8月8日将持有的a股票进行清仓,最新第一事件发生日期为2020年9月6日,则最新波段为清仓日至最新第一事件发生日期对应的时间段,例如,2020年8月9日至2020年9月6日。对应的,最新波段净价开仓额为2020年8月9日至2020年9月6日之间所有第一事件对应的净价开仓额之和,最新波段全价开仓额为2020年8月9日至2020年9月6日之间所有第一事件对应的全价开仓额之和,历史全价开仓额为2019年10月8日至2020年9月6日之间所有第一事件对应的全价开仓额之和,历史全价平仓额为2019年10月8日至2020年9月6日之间所有第一事件对应的全价平仓额之和。
164.根据本公开实施例的另一个方面,本公开实施例还提供了一种电子设备,图4为本技术实施例提供的电子设备的硬件结构示意图。如图4所示,本实施例提供的建表语句生成设备40包括:至少一个处理器401和存储器402。该建表语句生成设备40还包括通信部件404。其中,处理器401、存储器402以及通信部件404通过总线404连接。
165.在具体实现过程中,至少一个处理器401执行所述存储器802存储的计算机执行指令,使得至少一个处理器401执行如上的建表语句生成方法。
166.处理器401的具体实现过程可参见上述方法实施例,其实现原理和技术效果类似,本实施例此处不再赘述。
167.在上述的图4所示的实施例中,应理解,处理器可以是中央处理单元(英文:central processing unit,简称:cpu),还可以是其他通用处理器、数字信号处理器(英文:digital signal processor,简称:dsp)、专用集成电路(英文:application specific integrated circuit,简称:asic)等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合发明所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。
168.存储器可能包含高速ram存储器,也可能还包括非易失性存储nvm,例如至少一个磁盘存储器。
169.总线可以是工业标准体系结构(industry standard architecture,isa)总线、外部设备互连(peripheral component interconnect,pci)总线或扩展工业标准体系结构(extended industry standard architecture,eisa)总线等。总线可以分为地址总线、数据总线、控制总线等。为便于表示,本技术附图中的总线并不限定仅有一根总线或一种类型的总线。
170.本技术还提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,当处理器执行所述计算机执行指令时,实现如上的建表语句生成方法。
171.上述的计算机可读存储介质,上述可读存储介质可以是由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(sram),电可擦除可编程只读存储器(eeprom),可擦除可编程只读存储器(eprom),可编程只读存储器(prom),只读存储器(rom),磁存储器,快闪存储器,磁盘或光盘。可读存储介质可以是通用或专用计算机能够存取的任何可用介质。
172.一种示例性的可读存储介质耦合至处理器,从而使处理器能够从该可读存储介质
读取信息,且可向该可读存储介质写入信息。当然,可读存储介质也可以是处理器的组成部分。处理器和可读存储介质可以位于专用集成电路(application specific integrated circuits,简称:asic)中。当然,处理器和可读存储介质也可以作为分立组件存在于设备中。
173.读者应理解,在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构或者特点包含于本公开的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必针对的是相同的实施例或示例。而且,描述的具体特征、结构或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
174.所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
175.在本技术所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。
176.作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本公开实施例方案的目的。
177.另外,在本公开各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以是两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
178.集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本公开的技术方案本质上或者说对现有技术做出贡献的部分,或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本公开各个实施例方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、磁碟或者光盘等各种可以存储程序代码的介质。
179.还应理解,在本公开各实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本公开实施例的实施过程构成任何限定。
180.以上,仅为本公开的具体实施方式,但本公开的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本公开揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本公开的保护范围之内。因此,本公开的保护范围应以权利要求的保护范围为准。
181.所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
182.在本技术所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。
183.作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本公开实施例方案的目的。
184.另外,在本公开各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以是两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
185.集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本公开的技术方案本质上或者说对现有技术做出贡献的部分,或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本公开各个实施例方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、磁碟或者光盘等各种可以存储程序代码的介质。
186.还应理解,在本公开各实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本公开实施例的实施过程构成任何限定。
187.以上,仅为本公开的具体实施方式,但本公开的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本公开揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本公开的保护范围之内。因此,本公开的保护范围应以权利要求的保护范围为准。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献