API调用数据处理方法及使用场景数据推荐方法与流程

未命名 09-24 阅读:106 评论:0

api调用数据处理方法及使用场景数据推荐方法
技术领域
1.本技术涉及到云计算领域,具体而言,涉及一种api使用场景挖掘方法。


背景技术:

2.本部分旨在为权利要求书中陈述的本发明实施例提供背景或上下文。此处的描述不因为包括在本部分中就承认是现有技术。
3.api(application programming interface,应用程序接口),是一种计算接口,其本质是一些被预定义的函数,被用于提供某种业务或技术功能,它可以使得应用程序之间通过协议来进行调用。api可以提供某种能力,而api的组合可以提供的是场景化服务。例如,两个api为sendsms(短信服务)和authenticatesig(验证码服务,验证码服务提供滑动验证、无痕验证、智能验证等多种验证方式。通过生物特征判定操作计算机的是人还是机器,从而取代传统的验证方式),二者分别提供了发送短信的能力和人机验证的能力,当这两个api组合在一起使用时(authenticatesig sendsms)即可实现一个发送验证码的api使用场景。现有方案中,为了能够实现某种场景化功能,需要从已有的多种api中筛选出多个可用的api,而通过一次或多次筛选,得到的api组合不一定能实现所需要的场景化功能,因此,需要不断筛选,不断试错。对于如何筛选更符合某种功能的api,以及如何确定这些api的顺序,目前尚未提出更高效的方案。


技术实现要素:

4.本技术实施例提供了一种api调用数据处理方法,可以基于用户在指定时间段内调用过的api调用序列,挖掘出api使用场景数据,从而显著降低用户发现和探索api的所需的时间,以及得到更优的api使用场景数据。
5.根据本技术的一个方面,还提供了一种api调用数据处理方法,包括:获取指定时间段内的api调用序列;其中,所述api调用序列包括api识别信息;若所述api调用序列中api序列的调用次数满足次数范围,则将所述api序列作为目标api调用序列;对所述目标api调用序列进行去重处理,得到api使用场景数据,存储所述api使用场景数据。
6.根据本技术的另一个方面,还提供了一种api使用场景数据推荐方法,包括:获取api使用场景数据;其中,所述api使用场景数据根据上述的方法得到;在所述api使用场景数据中确定推荐结果。
7.根据本技术的另一个方面,还提供了一种电子设备,包括:处理器;以及存储程序的存储器,其中,所述程序包括指令,所述指令在由所述处理器执行时使所述处理器执行根据上述的方法。
8.根据本技术的另一个方面,还提供了一种存储有计算机指令的非瞬时计算机可读存储介质,其中,所述计算机指令用于使所述计算机执行根据上述的方法步骤。
9.根据本技术的另一个方面,还提供了一种计算机程序产品,所述计算机程序产品包括计算机程序,所述计算机程序被处理器执行时实现上述的方法步骤。
10.本发明实施例的有益效果:
11.在本发明实施例中,获取指定时间段内的api调用序列;其中,所述api调用序列包括api识别信息;若所述api调用序列中api序列的调用次数满足次数范围,则将所述api序列作为目标api调用序列;对所述目标api调用序列进行去重处理,得到api使用场景数据,存储所述api使用场景数据。本技术首先获取指定时间段内的api调用序列,在所述api调用序列中api序列的调用次数满足次数范围的情况下,将所述api序列作为目标api调用序列,从而快速筛选出被调用频率较高的api序列,最后对所述目标api调用序列进行去重处理,得到api使用场景数据,以及存储所述api使用场景数据。进行去重处理,可降低存储空间的占用,以及降低后续处理api使用场景数据的时间和复杂度,提升数据处理的效率。
12.本发明的一个或多个实施例的细节在以下附图和描述中提出,以使本发明的其他特征、目的和优点更加简明易懂。
附图说明
13.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单的介绍。显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的实施例。
14.图1是本发明实施例的api调用数据处理方法的流程图;
15.图2是本发明实施例的api场景挖掘产出流程图;
16.图3是本技术实施例的api调用走势图;
17.图4是能够用于实现本发明的实施例的示例性电子设备的结构框图;
18.图5是本技术实施例的在指定行业执行api调用数据处理方法流程示意图;
19.图6是本技术实施例的某位用户的频繁api调用模式的部分结果示意图
20.图7是本技术实施例的prefixspan算法前缀和后缀示意图;
21.图8是本技术实施例的api场景挖掘结果示意图一;
22.图9是本技术实施例的api场景挖掘结果示意图二。
具体实施方式
23.下面将参照附图更详细地描述本发明实施例。虽然附图中显示了本发明的某些实施例,然而应当理解的是,本发明可以通过各种形式来实现,而且不应该被解释为限于这里阐述的实施例,相反提供这些实施例是为了更加透彻和完整地理解本发明。应当理解的是,本发明的附图及实施例仅用于示例性作用,并非用于限制本发明的保护范围。
24.单独的openapi提供的只是能力,场景化的api组合提供的才是服务。若要提供某种服务,需要从已有的api中筛选多个api,并确定筛选出的这些api的先后调用顺序,得到api使用场景,即api使用场景=若干api+有价值的排列顺序。事实上,api使用场景具备更广泛的应用意义,它在许多领域起到至关重要的作用,例如自动化测试和场景化代码示例生成。
25.基于以上背景,本技术现提出一种api调用数据处理方法及使用场景数据推荐方法,该方法可以对同一用户不同日期的api调用序列进行横向挖掘,对同一日期不同用户的
api调用序列进行纵向挖掘,以及进行行业api使用场景的挖掘。
26.首先,对涉及的术语进行说明。
27.序列:序列是被排成一列的对象(或事件);这样每个元素不是在其他元素之前,就是在其他元素之后。这里,元素之间的顺序非常重要。
28.code sample:是一段调用api的代码段,用户可运行,可调试,它直接影响api的易用性。
29.prefixscan(或prefixspan)算法(prefix-projected pattern growth):是一种名为前缀投影的模式挖掘关联算法,主要用于挖掘频繁序列模式。
30.在本实施例中提供了一种api调用数据处理方法,图1是根据本技术实施例的api调用数据处理方法的流程图,下面对图1中所涉及到的方法步骤进行说明。
31.步骤s102,获取指定时间段内的api调用序列;其中,所述api调用序列包括api识别信息。
32.在该步骤中,指定时间段的时长和起止时刻可以根据实际需求选择,例如,其中,时长可以选择一天、两天、一周或者一个月等,起止时刻可以相应地根据选定的时长确定,本发明实施例对此不作具体限定。
33.api调用序列包括历史上曾经被调用过的api组合。api调用序列中包括至少两个api,该至少两个api按照在上述指定时间段内被调用的顺序形成序列。api调用序列中包括每个api的api识别信息,其中,api识别信息可以用于识别api。api识别信息中可以包括字符、数字等数据。
34.需要说明的是,在该步骤中,api调用序列可以是预先对海量的调用信息处理后得到以及存储的,在使用时可以直接获取,从而避免直接处理海量的调用信息,提升数据处理的效率和准确性。
35.步骤s104,若所述api调用序列中api序列的调用次数满足次数范围,则将所述api序列作为目标api调用序列。
36.在该步骤中,api调用序列是包括至少两个被排成一列的api的api组合,api序列是该api组合的子集。计算api序列的调用次数,若该调用次数满足次数范围,则将所述api序列作为目标api调用序列。其中,次数范围可以根据实际需求进行设置,本发明实施例不作具体限定。例如,次数范围可以是大于某个阈值,或者不小于某个阈值。
37.在该步骤中,基于调用次数和次数范围,可以快速筛选出被调用频率较高的api序列,即目标api调用序列。需要说明的是,在本发明实施例中,可以“频率(热度)”来度量api序列的价值程度,如果一个序列被不同用户频繁调用,或者一个序列被某个用户频繁调用,则可将该api序列挖掘出来。
38.步骤s106,对所述目标api调用序列进行去重处理,得到api使用场景数据,存储所述api使用场景数据。
39.在该步骤中,考虑到不同的目标api调用序列之间可能存在冗余数据,因此,对所述目标api调用序列进行去重处理,得到api使用场景数据,将该api使用场景数据存储至目标位置,以备后续调用。在该步骤中,由于第目标api调用序列进行去重处理,得到api使用场景数据,因此,在后续调用该api使用场景数据时,可以避免进行不必要的冗余数据的处理,提高数据的处理效率。通过去重处理,还可减少存储空间的占用。
40.api使用场景数据的示例可以参见表1,api使用场景数据中可包括api序列,还可包括api场景名以及产品名等信息。
[0041][0042]
表1
[0043]
需要说明的是,挖掘出的api使用场景数据可用于许多场景,例如,api的自动化测试,场景化代码示例生成(code sample)以及场景化sdk(software development kit,软件开发工具包)生成等。
[0044]
在该步骤中,目标api调用序列是基于调用次数和次数范围,对指定时间段内的api调用序列进行数据挖掘处理得到的,因此,本发明实施例可以实现基于历史api调用数据,得到api使用场景数据中的api以及api的排序信息。这一过程,无需获取每个api的提供的能力,并对api进行筛选得到需求的api;也无需耗费额外的精力对api进行排序、测试以及调整等处理,可更高效地得到用于满足场景化服务的api组合。
[0045]
在本发明实施例中,获取指定时间段内的api调用序列;其中,所述api调用序列包括api识别信息;若所述api调用序列中api序列的调用次数满足次数范围,则将所述api序列作为目标api调用序列;对所述目标api调用序列进行去重处理,得到api使用场景数据,存储所述api使用场景数据。本技术首先获取指定时间段内的api调用序列,在所述api调用序列中api序列的调用次数满足次数范围的情况下,将所述api序列作为目标api调用序列,从而快速筛选出被调用频率较高的api序列,最后对所述目标api调用序列进行去重处理,得到api使用场景数据,以及存储所述api使用场景数据。进行去重处理,可降低存储空间的占用,以及降低后续处理api使用场景数据的时间和复杂度,提升数据处理的效率。
[0046]
在一种可能的实施方式中,所述api识别信息包括调用api序列的用户信息,若所
述api调用序列中api序列的调用次数满足次数范围,则将所述api序列作为目标api调用序列,可以按照如下步骤执行:在所述用户信息中确定目标用户或目标用户组;若所述目标用户或所述目标用户组,对所述api调用序列中api序列的调用次数满足次数范围,则将所述api序列作为目标api调用序列。
[0047]
在该可能的实施方式中,api识别信息包括调用api序列的用户信息,其中,用户信息可以用于识别调用api序列的用户,用户信息可以包括用户的账户名、调用时间以及所属行业类型等信息,具体包括的信息可以根据实际需求进行选择,本发明实施例对此不作具体限定。
[0048]
在所述用户信息中确定目标用户或目标用户组,例如,将多个用户中的某一个用户作为目标用户,或者将多个用户中至少两个用户作为目标用户组,该至少两个用户具有某种相同的属性,例如,可以是同一行业的用户等。
[0049]
在该步骤中,若所述目标用户或所述目标用户组,在上述指定时间段内对所述api调用序列中api序列的调用次数满足次数范围,则将所述api序列作为目标api调用序列。
[0050]
其中,基于同一个用户,即目标用户,在多个时间周期内对api调用序列中api序列的调用次数和预设的次数范围进行分析处理,可以实现横向api场景数据的挖掘,得到的挖掘结果可以用于刻画用户肖像,为目标用户在调用api时提供api序列推荐。
[0051]
基于由至少两个不同用户组成的一组用户,即目标用户组,在一个时间周期内对所述api调用序列中api序列的调用次数和预设的次数范围进行分析处理,可以实现纵向api场景数据的挖掘,得到不同用户间的频繁api调用模式。
[0052]
需要说明的是,时间周期,可以根据实际需求在上述的指定时间段内选择。例如,指定时间段的时长为一个月,那么可以将一星期作为一个时间周期。时间周期的时长也可以为1天、2天等,可以根据实际需求进行确定,本发明实施例对此不作具体限定。上述的多个时间周期中,不同的时间周期的起止时刻可以不同。
[0053]
在一种可能的实施方式中,若所述api调用序列中api序列的调用次数满足次数范围,则将所述api序列作为目标api调用序列,可以按照如下步骤执行:获取fp-growth算法的第一支持度阈值,将大于所述第一支持度阈值作为所述次数范围;将所述api调用序列中调用次数满足所述次数范围的api作为所述fp-growth算法的频繁项;利用所述频繁项构建所述fp-growth算法的fp树;根据所述fp树和所述次数范围确定频繁项集,得到目标api调用序列。
[0054]
首先需要说明的是,fp-growth算法的支持度阈值是指在数据集中出现的频繁项集的最小支持度。支持度是指在数据集中出现某个项集的次数,即项集在数据集中的出现频率。支持度阈值的作用是控制算法发现的频繁项集的数量和质量。如果支持度阈值设置得太低,会导致算法发现大量的频繁项集,其中很多可能是无用的或者冗余的。这会增加算法的计算复杂度,降低算法的效率。同时,由于频繁项集的数量太多,可能会使得挖掘结果难以理解和应用。如果支持度阈值设置得太高,会导致算法无法发现一些有用的频繁项集,从而影响挖掘结果的质量。因此,支持度阈值的设置可以根据具体的应用场景和数据集来确定,以达到更佳的挖掘效果。
[0055]
在该可能的实施方式中,将fp-growth算法的支持度阈值作为第一支持度阈值,第一支持度阈值的取值可以根据实际需求预先进行确定。将大于所述第一支持度阈值作为所
述次数范围;将所述api调用序列中调用次数满足所述次数范围的api作为所述fp-growth算法的频繁项。利用第一支持度阈值按照fp-growth算法的方式筛选出频繁项,该频繁项是api调用序列中的多个被调用频率较高的api。之后,继续执行fp-growth算法,即利用所述频繁项构建所述fp-growth算法的fp树;根据所述fp树和所述次数范围确定频繁项集,该频繁项集,即目标api调用序列。
[0056]
需要说明的是,fp-growth算法是一种用于频繁模式挖掘的算法,它是一种基于树结构的算法。fp-growth算法通过构建一棵fp树(frequent pattern tree)来发现频繁项集。fp树是一种紧凑的数据结构,它将所有事务按照项的出现频率排序,并将它们存储在树的节点中。fp-growth算法通过递归地构建fp树,找到所有的频繁项集。fp-growth算法的优点是它只需要对数据集进行两次扫描,此外,fp-growth算法还可以处理大规模数据集,因为它不需要生成候选项集,而是直接从数据集中构建fp树。
[0057]
fp-growth算法将代表频繁项集的数据库压缩存储在频繁模式树中,每条事务数据中的项之间的关系被保留在频繁模式树中。然后,将频繁模式树按照条件模式基拆分成一组条件fp树,并分别挖掘这些条件fp树。fp-growth算法的步骤包括:1)扫描数据,得到所有频繁一项集的计数。然后删除支持度低于阈值的项,将1项频繁集放入项头表,并按照支持度降序排列。2)扫描数据,将读到的原始数据剔除非频繁1项集,并按照支持度降序排列。3)读入排序后的数据集,插入fp树,插入时按照排序后的顺序,插入fp树中,排序靠前的节点是祖先节点,而靠后的是子孙节点。如果有共用的祖先,则对应的公用祖先节点计数加1。插入后,如果有新节点出现,则项头表对应的节点会通过节点链表链接上新节点。直到所有的数据都插入到fp树后,fp树的建立完成。4)从项头表的底部项依次向上找到项头表项对应的条件模式基。从条件模式基递归挖掘得到项头表项项的频繁项集。5)如果不限制频繁项集的项数,则返回步骤4)所有的频繁项集,否则只返回满足项数要求的频繁项集。
[0058]
参见图6所示的某位用户的频繁api调用模式的部分结果示意图,利用fp-growth算法进行频繁模式挖掘,得到的挖掘结果可以包括图中所示的内容。其中,目标api调用序列可以包括如'ecs|authorizesecuritygroup|2014-05-26'(api识别信息)和
[0059]
'ecs|joinsecuritygroup|2014-05-26'(api识别信息)两个api。
[0060]
在一种可能的实施方式中,若所述api调用序列中api序列的调用次数满足次数范围,则将所述api序列作为目标api调用序列,可以按照如下步骤执行:获取prefixscan算法的第二支持度阈值,将大于所述第二支持度阈值作为所述次数范围;将所述api调用序列作为所述prefixscan算法的序列数据,以及将所述api调用序列中的每个api作为所述序列数据的单元素;利用所述调用次数和所述次数范围,基于所述序列数据和所述单元素,执行所述prefixscan算法,在所述api调用序列中确定目标api调用序列。
[0061]
首先需要说明的是,prefixscan算法是一种用于序列模式挖掘的算法,它通过前缀投影和递归的方式来发现频繁序列模式。在prefixspan算法中,支持度阈值是指在数据集中出现的频繁序列模式的最小支持度。支持度是指在数据集中出现某个序列模式的次数,即序列模式在数据集中的出现频率。支持度阈值的作用是控制算法发现的频繁序列模式的数量和质量。如果支持度阈值设置得太低,会导致算法发现大量的频繁序列模式,其中很多可能是无用的或者冗余的。这会增加算法的计算复杂度,降低算法的效率。同时,由于频繁序列模式的数量太多,可能会使得挖掘结果难以理解和应用。如果支持度阈值设置得
太高,会导致算法无法发现一些有用的频繁序列模式,从而影响挖掘结果的质量。因此,支持度阈值的设置需要根据具体的应用场景和数据集来确定,以达到更佳的挖掘效果。
[0062]
在该可能的实施方式中,将prefixscan算法的支持度阈值作为第二支持度阈值,第二支持度阈值的取值可以根据实际需求预先进行确定。将大于所述第二支持度阈值作为所述次数范围;将所述api调用序列作为所述prefixscan算法的序列数据,以及将所述api调用序列中的每个api作为所述序列数据的单元素,例如,api调用序列可以看作是图7中所展示的序列《a(abc)(ac)d(cf)》,每个api可以看作是图7所展示的序列《a(abc)(ac)d(cf)》中的一个字母,利用所述调用次数和所述次数范围,基于所述序列数据和所述单元素,执行所述prefixscan算法,在所述api调用序列中确定目标api调用序列。
[0063]
prefixscan算法是一种用于序列模式挖掘的算法,它通过前缀投影和递归的方式来发现频繁序列模式。prefixscan算法是一种基于深度优先搜索的算法,它可以处理包含重复元素的序列数据。prefixscan算法的基本思想是:首先找到所有的单元素序列模式,然后通过前缀投影来生成所有的候选序列模式,最后递归地处理每个候选序列模式,找到所有的频繁序列模式。prefixscan算法的优点是它可以处理包含重复元素的序列数据,而且它不需要生成候选序列模式,因此可以减少算法的计算复杂度。此外,prefixscan算法还可以处理大规模数据集,因为它可以在内存中处理数据。
[0064]
在prefixspan算法中的前缀prefix指的是序列数据前面部分的子序列。比如对于序列a={a1,a2,...an}和序列b={b1,b2,...bm},n≤m,满足a1=b1,a2=b2...an-1=bn-1,而则称a是b的前缀。如序列数据b=《a(abc)(ac)d(cf)》,而a=《a(abc)a》,则a是b的前缀,b的前缀不止一个,比如《a》,《aa》,《a(ab)》也都是b的前缀。
[0065]
前缀投影指的是序列的后缀。前缀加上后缀就可以构成一个序列。对于某一个前缀,序列里前缀后面剩下的单元素即为我们的后缀。如果前缀最后的项是项集的一部分,则用一个“_”来占位表示。参见图7所示的prefixspan算法前缀和后缀示意图,图7展示了序列的一些前缀和后缀。要注意的是,如果前缀的末尾不是一个完全的项集,则需要加一个占位符。在prefixspan算法中,相同前缀对应的所有后缀的结合我们称为前缀对应的投影数据库。
[0066]
prefixspan算法的目标是挖掘出满足最小支持度的频繁序列。prefixspan从长度为1的前缀开始挖掘序列模式,搜索对应的投影数据库得到长度为1的前缀对应的频繁序列,然后递归的挖掘长度为2的前缀所对应的频繁序列。依此类推,一直递归到不能挖掘到更长的前缀挖掘为止。
[0067]
需要说明的是,fp-growth算法和prefixscan算法是两种常见的搜索算法,它们在处理具有连续子串的哈希表时的性能有所不同。
[0068]
fp-growth算法的主要思想是在哈希表中遍历子串,每次选择中间节点,并将它的值设置为当前最小值。接着,重复这个过程,直到找到最大值或遍历完所有节点。在最终找到最大值时,哈希表中所有的节点都已经处理过,并且其中的所有数据都已经被更新。因此,fp-growth算法的时间复杂度是o(nlogn)。
[0069]
prefixscan算法的主要思想是在哈希表中遍历子串,每次将哈希表中的所有节点的前缀加起来,并将最大值的值更新为当前值。然后,重复这个过程,直到找到最大值或遍历完所有节点。在最终找到最大值时,哈希表中所有的节点都已经处理过,并且其中的所有
数据都已经被更新。因此,prefixscan算法的时间复杂度是o(n)。
[0070]
因此,fp-growth算法通常比prefixscan算法更快,特别是在处理较长的子串时,fp-growth算法可以获得更好的性能,因此,可以根据实际需求选择采用fp-growth算法或者prefixscan算法得到目标api调用序列。
[0071]
在一种可能的实施方式中,所述api识别信息包括调用api序列的用户所属的行业信息和调用api序列的渠道信息;若所述api调用序列中api序列的调用次数满足次数范围,则将所述api序列作为目标api调用序列,可以按照如下步骤执行:在所述行业信息中确定目标行业,对所述目标行业的用户,按照所述渠道信息分组,得到多个渠道分组结果;获取prefixscan算法的第三支持度阈值,将大于所述第三支持度阈值作为所述次数范围;将所述渠道分组结果中的api调用序列作为所述prefixscan算法的序列数据,以及将所述api调用序列中的每个api作为所述序列数据的单元素;利用所述调用次数和所述次数范围,基于所述序列数据和所述单元素,执行所述prefixscan算法,得到每个所述渠道分组结果的分组api调用序列;将所述分组api调用序列作为目标api调用序列。
[0072]
在该可能的实施方式中,行业信息可以用于在多种行业中确定用户的目标行业,例如,用户可以属于计算机行业、金融行业等目标行业,从而实现将用户按照行业进行分类。对所述目标行业的用户,按照所述渠道信息分组,得到多个渠道分组结果。其中,渠道信息用于确定用户调用api所采用的渠道,例如,sdk、控制台、terreform(一种部署技术,通过提供程序与不同的云集成,提供程序用于与外部api进行交互)以及ros(robot operating system,一种开源的机器人操作系统)等。之后针对每个渠道分组结果中的用户对应的api调用序列,分别执行prefixscan算法,得到每个所述渠道分组结果的分组api调用序列,即得到目标api调用序列。进而后续可以将目标api调用序列中各分组api调用序列推荐给相应目标行业采用某种渠道调用api的用户。
[0073]
需要说明的是,将对每个渠道分组结果设置的prefixscan算法的支持度阈值,作为第三支持度阈值。执行prefixscan算法的步骤可以参考前述说明,在此不再赘述。
[0074]
参见图5所示的在指定行业执行api调用数据处理方法流程示意图,在具体实施时,可以按照如下步骤实现该可能的实施例:获取不同用户同一天内的api调用序列以及用户行业信息,之后,将这些序列进行数据清洗过滤,抽取指定行业序列;按api调用渠道分类,之后,对获得的渠道分组结果对应的分组api调用序列,分别执行prefixspan算法,获取高频的api调用序列。
[0075]
参见图8所示的api场景挖掘结果示意图一,该图是纵向api场景挖掘的部分结果,参见图9所示的api场景挖掘结果示意图二,该图是横向api场景挖掘的部分结果。从纵向、行业api场景挖掘的结果能看出,挖掘出来的频繁api调用模式具有一定的重复性,例如图8-图9显示的黑色矩形框中的api调用序列,均存在着很大的相似性。黑框内的api调用序列仅有1至2个api的缺失或不同,应该属于同一个api调用场景。可见,挖掘的结果中,数据量较大,因此还需要进行进一步的过滤与筛选。为了解决这个问题,我们对挖掘出的频繁api调用序列进行清洗,在一种可能的实施方式中,对所述目标api调用序列进行去重处理,可以按照如下步骤执行:遍历所述目标api调用序列;若第一api调用序列是第二api调用序列的子集,则删除所述目标api调用序列中的所述第一api调用序列。
[0076]
在该可能的实施方式中,第一api调用序列和第二api调用序列都是目标api调用
序列的子集。遍历所有的数据,若数据项x的api序列是数据项y的api序列的子集,则剔除数据项x,仅保留数据项y,通过这种方式剔除冗余数据项,即若第一api调用序列是第二api调用序列的子集,则删除所述目标api调用序列中的所述第一api调用序列。
[0077]
在该步骤中,通过遍历目标api调用序列,剔除其中的冗余项,可以减少目标api调用序列中的冗余数据,从而降低目标api调用序列的数据量,便于后续利用得到的api使用场景数据进行数据处理。
[0078]
考虑到目前海量数据处理平台中可以存放openapi(开放的应用编程接口)网关几年内所有的api调用日志,数据量过万亿。而对全量的数据做分析,会产生极大量不必要的计算,因此,需要对这海量的数据做维度划分,选择可能能用到的那部分数据进行处理,从而在缩小数据范围的同时,还能提升api序列产出的效果和质量。
[0079]
另外,属于某个用户的api调用序列可能存在海量的重复api。例如某用户一天有上亿次调用,但这上亿次api调用中只涉及到两个查询类型的openapi。一种直观的方法是直接对用户的api调用删除重复数据。诚然,这样可以获取用户调用中涉及的api序列,但是顺序信息却被抛弃掉了,这种方法只能满足api使用场景抽取的1/2,显然这种直观的数据清洗方法是不够好的。
[0080]
参见图3所示的api调用走势图,对api调用数据做了时间维度的分析,其中,api的调用可呈现出按“周(week)”变化的周期特征,因此,在数据萃取部分,可以以时间维度对数据做萃取,每次可抽取最近一周的数据做数据分析。在一种可能的实施方式中,获取api调用序列,可以按照如下步骤执行:获取api调用日志信息;对同一用户在所述指定时间段内调用的api进行数据清洗,得到清洗结果;其中,所述清洗结果中包括至少两种api;所述清洗结果中包括api调用时间信息和所述api识别信息;所述api识别信息包括云产品信息、api名称信息和api版本信息;根据所述api调用时间信息和所述api识别信息,对所述清洗结果进行去重处理,并确定所述至少两种api的相对顺序,得到api调用序列。
[0081]
在该可能的实施方式中,api调用日志信息是可以从海量数据处理平台中获取到的信息。api调用日志信息中包括用户在历史时间调用的api信息。基于api调用日志信息,对同一用户在所述指定时间段内调用的api进行数据清洗,得到清洗结果。数据清洗是指对数据进行预处理,以去除数据中的错误、不完整、重复、不一致等问题,从而提高数据的质量和可用性。通过数据清洗以确保数据的准确性、一致性和完整性,以便于后续的数据分析和挖掘。清洗结果中保留了api调用时间信息和所述api识别信息,其中,调用时间信息可包括调用api的具体时刻。api识别信息包括云产品信息、api名称信息和api版本信息。
[0082]
对所述清洗结果进行去重处理,并确定所述至少两种api的相对顺序,得到api调用序列。例如,识别信息为a的api用于实现查询操作,识别信息为b的api用于实现更新操作,在用户在某段较短的时间内,连续频繁查询的情况下,其调用的api序列可能为aaaaab,而该api序列中,多个a属于冗余信息,因此,对aaaaab进行去重处理后,得ab序列;在用户在某段较短的时间内,连续频繁查询更新的情况下,其调用的api序列可能为ababab,而该api序列中,多组ab属于冗余信息,对ababab进行去重处理后,得到ab序列。
[0083]
确定至少两种api的相对顺序,可以通过对api的调用时间求平均值实现。例如,在用户在某段较短的时间内,连续频繁查询更新的情况下,其调用的api序列可能为ababab,在对ababab进行去重处理时,根据对第一api即a的多次调用时刻求平均值,得到第一时刻
信息,根据对第二api即b的多次调用时刻求平均值,得到第二时刻信息,第一时刻信息早于第二时刻信息,从而确定对a的调用是在对b的调用之前,调用顺序为ab。
[0084]
在具体实施时,可以将同一个用户在同一天的api调用看做一个序列,且只抽取序列元素大于等于两个api的情况。对数据做进一步清洗。可保留api调用记录中的api基本信息以及调用api的时间信息,在对api做去重的聚合操作时,也可对调用时间做求平均的聚合操作,从而得到api的调用顺序。需要说明的是,该api调用顺序不是api调用的绝对排列而是api调用的相对顺序。
[0085]
在该步骤中,提供了实用的时序数据清洗方案,通过数据清洗以及去重处理等步骤,可以得到api组合及该api组合中api调用的相对顺序。
[0086]
在一种可能的实施方式中,该方法还可以执行如下步骤:根据所述api使用场景挖掘结果生成代码信息;其中,所述代码信息用于调用所述api使用场景挖掘结果。
[0087]
在该可能的实施方式中,根据所述api使用场景挖掘结果生成代码信息,可以包括数据分析、代码生成、代码优化、代码测试以及代码集成的步骤。其中,数据分析:对给定的api使用场景挖掘结果进行分析,确定数据的结构、类型和关系。代码生成:根据数据分析的结果,自动生成相应的代码,包括数据结构定义、函数定义、类定义等。代码优化:对生成的代码进行优化,包括代码格式化、注释添加、变量命名等。代码测试:对生成的代码进行测试,确保代码的正确性和可用性。代码集成:将生成的代码集成到项目中,以便于后续的开发和维护。
[0088]
本技术提供了一种api调用数据处理方法,参见图2所示的api场景挖掘产出流程图,该方法可以基于api调用日志进行数据清洗与预处理,得到api调用序列,再通过横向api场景挖掘、纵向api场景挖掘或行业频繁api序列挖掘,得到目标api调用序列,对目标api调用序列进行去重处理,得到候选api序列,即api使用场景数据,最终进行人工构建,还可以得到code sample,即代码信息。该方法可以高效挖掘用户侧频繁的api调用序列,得到api场景数据。
[0089]
本技术还提供了一种api使用场景数据推荐方法,包括:获取api使用场景数据;其中,所述api使用场景数据根据上述的方法得到;在所述api使用场景数据中确定推荐结果。
[0090]
在本技术实施例中,首先获取指定时间段内的api调用序列,在所述api调用序列中api序列的调用次数满足次数范围的情况下,将所述api序列作为目标api调用序列,从而快速筛选出被调用频率较高的api序列,最后对所述目标api调用序列进行去重处理,得到api使用场景数据,以及存储所述api使用场景数据。进行去重处理,可降低存储空间的占用,以及降低后续处理api使用场景数据的时间和复杂度,提升数据处理的效率。
[0091]
本技术还提供了一种api调用数据处理装置,该装置包括获取模块,用于:获取指定时间段内的api调用序列;其中,所述api调用序列包括api识别信息;计算模块,用于:若所述api调用序列中api序列的调用次数满足次数范围,则将所述api序列作为目标api调用序列;去重模块,用于:对所述目标api调用序列进行去重处理,得到api使用场景数据,存储所述api使用场景数据。
[0092]
在本发明实施例中,获取模块,用于获取指定时间段内的api调用序列;其中,所述api调用序列包括api识别信息;计算模块,用于若所述api调用序列中api序列的调用次数满足次数范围,则将所述api序列作为目标api调用序列;去重模块,用于对所述目标api调
用序列进行去重处理,得到api使用场景数据,存储所述api使用场景数据。本技术首先获取指定时间段内的api调用序列,在所述api调用序列中api序列的调用次数满足次数范围的情况下,将所述api序列作为目标api调用序列,从而快速筛选出被调用频率较高的api序列,最后对所述目标api调用序列进行去重处理,得到api使用场景数据,以及存储所述api使用场景数据。进行去重处理,可降低存储空间的占用,以及降低后续处理api使用场景数据的时间和复杂度,提升数据处理的效率。
[0093]
在一种可能的实施方式中,所述api识别信息包括调用api序列的用户信息,所述计算模块,具体用于:在所述用户信息中确定目标用户或目标用户组;若所述目标用户或所述目标用户组,对所述api调用序列中api序列的调用次数满足预设的次数范围,则将所述api序列作为目标api调用序列。
[0094]
在一种可能的实施方式中,所述计算模块,具体用于:获取fp-growth算法的第一支持度阈值,将大于所述第一支持度阈值作为所述次数范围;将所述api调用序列中调用次数满足所述次数范围的api作为所述fp-growth算法的频繁项;利用所述频繁项构建所述fp-growth算法的fp树;根据所述fp树和所述次数范围确定频繁项集,得到目标api调用序列。
[0095]
在一种可能的实施方式中,所述计算模块,具体用于:获取prefixscan算法的第二支持度阈值,将大于所述第二支持度阈值作为所述次数范围;将所述api调用序列作为所述prefixscan算法的序列数据,以及将所述api调用序列中的每个api作为所述序列数据的单元素;利用所述调用次数和所述次数范围,基于所述序列数据和所述单元素,执行所述prefixscan算法,在所述api调用序列中确定目标api调用序列。
[0096]
在一种可能的实施方式中,所述api识别信息包括调用api序列的用户所属的行业信息和调用api序列的渠道信息;所述计算模块,具体用于:在所述行业信息中确定目标行业,对所述目标行业的用户,按照所述渠道信息分组,得到多个渠道分组结果;获取prefixscan算法的第三支持度阈值,将大于所述第三支持度阈值作为所述次数范围;将所述渠道分组结果中的api调用序列作为所述prefixscan算法的序列数据,以及将所述api调用序列中的每个api作为所述序列数据的单元素;利用所述调用次数和所述次数范围,基于所述序列数据和所述单元素,执行所述prefixscan算法,得到每个所述渠道分组结果的分组api调用序列;将所述分组api调用序列作为目标api调用序列。
[0097]
在一种可能的实施方式中,所述去重模,具体用于:遍历所述目标api调用序列;若第一api调用序列是第二api调用序列的子集,则删除所述目标api调用序列中的所述第一api调用序列。
[0098]
在一种可能的实施方式中,所述获取模块,具体用于:获取api调用日志信息;对同一用户在所述指定时间段内调用的api进行数据清洗,得到清洗结果;其中,所述清洗结果中包括至少两种api;所述清洗结果中包括api调用时间信息和所述api识别信息;所述api识别信息包括云产品信息、api名称信息和api版本信息;根据所述api调用时间信息和所述api识别信息,对所述清洗结果进行去重处理,并确定所述至少两种api的相对顺序,得到api调用序列。
[0099]
在一种可能的实施方式中,该装置还包括生成模块,用于:根据所述api使用场景挖掘结果生成代码信息;其中,所述代码信息用于调用所述api使用场景挖掘结果。
[0100]
本技术还提供了一种api使用场景数据推荐装置,包括:数据模块,用于获取api使用场景数据;其中,所述api使用场景数据根据上述的方法得到;推荐模块,用于在所述api使用场景数据中确定推荐结果。
[0101]
本发明实施例还提供一种电子设备,包括:至少一个处理器;以及与至少一个处理器通信连接的存储器。所述存储器存储有能够被所述至少一个处理器执行的计算机程序,所述计算机程序在被所述至少一个处理器执行时用于使所述电子设备执行根据本发明实施例的方法。
[0102]
本发明实施例还提供一种存储有计算机程序的非瞬时计算机可读存储介质,其中,所述计算机程序在被计算机的处理器执行时用于使所述计算机执行根据本发明实施例的方法。
[0103]
本发明实施例还提供一种计算机程序产品,包括计算机程序,其中,所述计算机程序在被计算机的处理器执行时用于使所述计算机执行根据本发明实施例的方法。
[0104]
参考图4,现将描述可以作为本发明的服务器或用户的电子设备400的结构框图,其是可以应用于本发明的各方面的硬件设备的示例。电子设备旨在表示各种形式的数字电子的计算机设备,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本发明的实现。
[0105]
如图4所示,电子设备400包括计算单元401,其可以根据存储在只读存储器(rom)402中的计算机程序或者从存储单元408加载到随机访问存储器(ram)403中的计算机程序,来执行各种适当的动作和处理。在ram 403中,还可存储设备400操作所需的各种程序和数据。计算单元401、rom 402以及ram 403通过总线404彼此相连。输入/输出(i/o)接口405也连接至总线404。
[0106]
电子设备400中的多个部件连接至i/o接口405,包括:输入单元406、输出单元407、存储单元408以及通信单元409。输入单元406可以是能向电子设备400输入信息的任何类型的设备,输入单元406可以接收输入的数字或字符信息,以及产生与电子设备的用户设置和/或功能控制有关的键信号输入。输出单元407可以是能呈现信息的任何类型的设备,并且可以包括但不限于显示器、扬声器、视频/音频输出终端、振动器和/或打印机。存储单元408可以包括但不限于磁盘、光盘。通信单元409允许电子设备400通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据,并且可以包括但不限于调制解调器、网卡、红外通信设备、无线通信收发机和/或芯片组,例如蓝牙设备、wifi设备、wimax设备、蜂窝通信设备和/或类似物。
[0107]
计算单元401可以是各种具有处理和计算能力的通用和/或专用处理组件。计算单元401的一些示例包括但不限于处理单元(cpu)、图形处理单元(gpu)、各种专用的人工智能(ai)计算芯片、各种运行机器学习模型算法的计算单元、数字信号处理器(dsp)、以及任何适当的处理器、控制器、微控制器等。计算单元401执行上文所描述的各个方法和处理。例如,在一些实施例中,前述的方法可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元408。在一些实施例中,计算机程序的部分或者全部可以经由rom 402
和/或通信单元409而被载入和/或安装到电子设备400上。在一些实施例中,计算单元401可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行前述的方法。
[0108]
用于实施本发明实施例的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
[0109]
在本发明实施例的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦除可编程只读存储器(eprom或快闪存储器)、光纤、便捷式紧凑盘只读存储器(cd-rom)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
[0110]
需要说明的是,本发明实施例使用的术语“包括”及其变形是开放性包括,即“包括但不限于”。术语“基于”是“至少部分地基于”。术语“一个实施例”表示“至少一个实施例”;术语“另一实施例”表示“至少一个另外的实施例”;术语“一些实施例”表示“至少一些实施例”。本发明实施例中提及的“一个”、“多个”的修饰是示意性而非限制性的,本领域技术人员应当理解,除非在上下文另有明确指出,否则应该理解为“一个或多个”。
[0111]
本发明实施例所涉及的用户信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于分析的数据、存储的数据、展示的数据等),均为经用户授权或者经过各方充分授权的信息和数据,并且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准,并提供有相应的操作入口,供用户选择授权或者拒绝。
[0112]
本发明实施例所提供的方法实施方式中记载的各个步骤可以按照不同的顺序执行,和/或并行执行。此外,方法实施方式可以包括附加的步骤和/或省略执行示出的步骤。本发明的保护范围在此方面不受限制。
[0113]“实施例”一词在本说明书中指的是结合实施例描述的具体特征、结构或特性可以包括在本发明的至少一个实施例中。该短语出现在说明书中的各个位置并不一定意味着相同的实施例,也不意味着与其它实施例相互排斥而具有独立性或可供选择。本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见。尤其,对于装置、设备、系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明。
[0114]
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对专利保护范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明的保护范围应以所附权利要求为准。

技术特征:
1.一种api调用数据处理方法,包括:获取指定时间段内的api调用序列;其中,所述api调用序列包括api识别信息;若所述api调用序列中api序列的调用次数满足次数范围,则将所述api序列作为目标api调用序列;对所述目标api调用序列进行去重处理,得到api使用场景数据,存储所述api使用场景数据。2.根据权利要求1所述的方法,其中,所述api识别信息包括调用api序列的用户信息,若所述api调用序列中api序列的调用次数满足次数范围,则将所述api序列作为目标api调用序列,包括:在所述用户信息中确定目标用户或目标用户组;若所述目标用户或所述目标用户组,对所述api调用序列中api序列的调用次数满足次数范围,则将所述api序列作为目标api调用序列。3.根据权利要求1所述的方法,其中,若所述api调用序列中api序列的调用次数满足次数范围,则将所述api序列作为目标api调用序列,包括:获取fp-growth算法的第一支持度阈值,将大于所述第一支持度阈值作为所述次数范围;将所述api调用序列中调用次数满足所述次数范围的api作为所述fp-growth算法的频繁项;利用所述频繁项构建所述fp-growth算法的fp树;根据所述fp树和所述次数范围确定频繁项集,得到目标api调用序列。4.根据权利要求1所述的方法,其中,若所述api调用序列中api序列的调用次数满足次数范围,则将所述api序列作为目标api调用序列,包括:获取prefixscan算法的第二支持度阈值,将大于所述第二支持度阈值作为所述次数范围;将所述api调用序列作为所述prefixscan算法的序列数据,以及将所述api调用序列中的每个api作为所述序列数据的单元素;利用所述调用次数和所述次数范围,基于所述序列数据和所述单元素,执行所述prefixscan算法,在所述api调用序列中确定目标api调用序列。5.根据权利要求1所述的方法,其中,所述api识别信息包括调用api序列的用户所属的行业信息和调用api序列的渠道信息;若所述api调用序列中api序列的调用次数满足次数范围,则将所述api序列作为目标api调用序列,包括:在所述行业信息中确定目标行业,对所述目标行业的用户,按照所述渠道信息分组,得到多个渠道分组结果;获取prefixscan算法的第三支持度阈值,将大于所述第三支持度阈值作为所述次数范围;将所述渠道分组结果中的api调用序列作为所述prefixscan算法的序列数据,以及将所述api调用序列中的每个api作为所述序列数据的单元素;利用所述调用次数和所述次数范围,基于所述序列数据和所述单元素,执行所述prefixscan算法,得到每个所述渠道分组结果的分组api调用序列;
将所述分组api调用序列作为目标api调用序列。6.根据权利要求1所述的方法,其中,对所述目标api调用序列进行去重处理,包括:遍历所述目标api调用序列;若第一api调用序列是第二api调用序列的子集,则删除所述目标api调用序列中的所述第一api调用序列。7.根据权利要求1所述的方法,其中,获取api调用序列,包括:获取api调用日志信息;对同一用户在所述指定时间段内调用的api进行数据清洗,得到清洗结果;其中,所述清洗结果中包括至少两种api;所述清洗结果中包括api调用时间信息和所述api识别信息;所述api识别信息包括云产品信息、api名称信息和api版本信息;根据所述api调用时间信息和所述api识别信息,对所述清洗结果进行去重处理,并确定所述至少两种api的相对顺序,得到api调用序列。8.根据权利要求1-7任一项所述的方法,还包括:根据所述api使用场景挖掘结果生成代码信息;其中,所述代码信息用于调用所述api使用场景挖掘结果。9.一种api使用场景数据推荐方法,包括:获取api使用场景数据;其中,所述api使用场景数据根据权利要求1-8任一项所述的方法得到;在所述api使用场景数据中确定推荐结果。10.一种电子设备,包括:处理器;以及存储程序的存储器,其中,所述程序包括指令,所述指令在由所述处理器执行时使所述处理器执行根据权利要求1-8任一项所述的方法步骤。11.一种存储有计算机指令的非瞬时计算机可读存储介质,其中,所述计算机指令用于使所述计算机执行根据权利要求1-8任一项所述的方法步骤。12.一种计算机程序产品,其中,所述计算机程序产品包括计算机程序,所述计算机程序被处理器执行时实现权利要求1-8任一项所述的方法步骤。

技术总结
本申请公开了一种API调用数据处理方法及使用场景数据推荐方法,涉及云计算领域,该API调用数据处理方法包括:获取指定时间段内的API调用序列;其中,所述API调用序列包括API识别信息;若所述API调用序列中API序列的调用次数满足次数范围,则将所述API序列作为目标API调用序列;对所述目标API调用序列进行去重处理,得到API使用场景数据,存储所述API使用场景数据。本申请可快速筛选出被调用频率较高的目标API调用序列,对其进行去重处理,可降低存储空间的占用,以及降低后续处理API使用场景数据的时间和复杂度,提升数据处理的效率。提升数据处理的效率。提升数据处理的效率。


技术研发人员:王淑军 田永强 何登成
受保护的技术使用者:阿里巴巴(中国)有限公司
技术研发日:2023.05.15
技术公布日:2023/9/22
版权声明

本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

航空之家 https://www.aerohome.com.cn/

航空商城 https://mall.aerohome.com.cn/

航空资讯 https://news.aerohome.com.cn/

分享:

扫一扫在手机阅读、分享本文

评论

相关推荐