一种数据的解析方法及装置与流程

文档序号:19906783发布日期:2020-02-11 14:36阅读:168来源:国知局
一种数据的解析方法及装置与流程

本发明涉及数据处理技术领域,特别涉及一种数据的解析方法及装置。



背景技术:

随着数据处理技术的不断发展,能够处理的数据类型也在不断增多。面对多种多样的数据类型,通常可以利用数据分析系统,来对繁杂的数据进行查询、过滤以及分析。

目前,grafana分析系统能够支持当下主流的一些数据源,因此在数据处理领域应用较广。然而,grafana无法针对包含嵌套类数据结构的数据源进行分析。例如,对于elasticseach数据源而言,该数据源中会存在嵌套类的数据结构。elasticseach数据源本身是具备嵌套类数据结构的语法的,但是grafana分析系统无法通过当前的配置生成针对嵌套类数据结构的查询语句,从而导致在利用grafana分析系统无法对包含嵌套类数据结构的elasticseach数据源进行解析,这一缺陷限制了grafana分析系统的使用的范围。



技术实现要素:

本申请的目的在于提供一种数据的解析方法及装置,能够对嵌套类数据结构进行解析。

为实现上述目的,本申请一方面提供一种数据的解析方法,所述方法应用于grafana分析系统中,所述方法提供有用于表征进入嵌套类数据结构的第一聚合项和用于表征退出嵌套类数据结构的第二聚合项,所述方法包括:接收针对目标数据源的解析任务,并生成所述解析任务对应的聚合项流程;其中,在对所述目标数据源中嵌套类的数据结构进行分析时,在所述聚合项流程中添加所述第一聚合项,并且在对所述嵌套类的数据结构完成分析时,在所述聚合项流程中添加所述第二聚合项;生成所述聚合项流程对应的查询语句,所述查询语句中包括与所述聚合项流程中各个聚合项相匹配的子语句,并通过所述查询语句对所述目标数据源进行分析,得到所述目标数据源的查询结果,所述查询结果中包括各个所述子语句的聚合结果;遍历所述查询结果中的各个所述聚合结果,以获取所述聚合结果的聚合信息,并根据获取的所述聚合信息,生成所述解析任务的解析结果。

为实现上述目的,本申请另一方面还提供一种数据的解析装置,所述装置应用于grafana分析系统中,所述装置包括:聚合项新建单元,提供用于表征进入嵌套类数据结构的第一聚合项和用于表征退出嵌套类数据结构的第二聚合项;聚合项流程生成单元,用于接收针对目标数据源的解析任务,并生成所述解析任务对应的聚合项流程;其中,在对所述目标数据源中嵌套类的数据结构进行分析时,在所述聚合项流程中添加所述第一聚合项,并且在对所述嵌套类的数据结构完成分析时,在所述聚合项流程中添加所述第二聚合项;查询结果获取单元,用于生成所述聚合项流程对应的查询语句,所述查询语句中包括与所述聚合项流程中各个聚合项相匹配的子语句,并通过所述查询语句对所述目标数据源进行分析,得到所述目标数据源的查询结果,所述查询结果中包括各个所述子语句的聚合结果;查询结果解析单元,用于遍历所述查询结果中的各个所述聚合结果,以获取所述聚合结果的聚合信息,并根据获取的所述聚合信息,生成所述解析任务的解析结果。

由上可见,本申请提供的技术方案,可以预先在grafana分析系统内置的聚合项中,添加用于表征进入嵌套类数据结构的第一聚合项和用于表征退出嵌套类数据结构的第二聚合项。这样,在接收到针对包含嵌套类数据结构的目标数据源的解析任务时,首先可以生成所述解析任务对应的聚合项流程。在该聚合项流程中,对于解析任务中的普通流程步骤而言,可以选用grafana分析系统内置的对应聚合项,而在对所述目标数据源中嵌套类的数据结构进行分析时,可以在所述聚合项流程中添加所述第一聚合项,并且在对所述嵌套类的数据结构完成分析时,在所述聚合项流程中添加所述第二聚合项。这样,聚合项流程中除了包含常规的聚合项,还可以包含针对嵌套类数据结构的第一聚合项和第二聚合项。然后,根据该聚合项流程,可以生成对应的查询语句。具体地,聚合项流程中包含各个聚合项,那么在生成查询语句时,可以根据elasticsearch的语法,逐一生成各个聚合项的子语句。由于elasticsearch本身支持嵌套类数据结构的语法,因此针对上述的第一聚合项和第二聚合项,也能够正常生成对应的子语句。这样,各个子语句便可以形成上述的查询语句。后续,可以对目标数据源执行该查询语句,从而可以得到对应的查询结果。在执行该查询语句时,可以分别执行其中的各个子语句,从而可以得到各个子语句对应的聚合结果,这些聚合结果便可以形成上述的查询结果。由于该查询结果与查询条件一致,也是具备嵌套类的数据结构,因此grafana分析系统无法直接识别该查询结果中的内容。鉴于此,在本申请中,可以遍历所述查询结果中的各个聚合结果,并获取各个聚合结果对应的聚合信息。最终,可以将这些聚合信息进行汇总,从而得到所述解析任务对应的解析结果。由此可见,本申请通过配置额外的聚合项,以及通过遍历聚合结果的方式,可以使得grafana分析系统能够对嵌套类的数据结构进行分析,从而扩展了grafana分析系统的使用范围。

附图说明

为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本发明实施例中数据的解析方法示意图;

图2是本发明实施例中逻辑步骤的流程图;

图3是本发明实施例中遍历聚合结果的流程示意图;

图4是本发明实施例中数据的解析装置的功能模块示意图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。

实施例一

本申请提供一种数据的解析方法,该方法可以应用于grafana分析系统中。在grafana分析系统中,对数据的查询、过滤、分析等处理方式,均可以通过聚合项来完成。在grafana分析系统中预先可以内置大量的聚合项,这些聚合项例如可以实现过滤某个时间段的数据、将数据按照类别进行分组、统计数据出现的数量等功能。然而,grafana分析系统中并不存在针对嵌套类数据结构的聚合项。在本实施方式中,可以预先在grafana分析系统中通过自定义聚合项的方式,额外配置用于表征进入嵌套类数据结构的第一聚合项和用于表征退出嵌套类数据结构的第二聚合项。这样,后续在面对嵌套类的数据结构时,在grafana分析系统中便可以选用上述的第一聚合项和第二聚合项,来进入和退出嵌套类数据结构。

请参阅图1,本申请提供的数据的解析方法可以包括以下步骤。

s1:接收针对目标数据源的解析任务,并生成所述解析任务对应的聚合项流程;其中,在对所述目标数据源中嵌套类的数据结构进行分析时,在所述聚合项流程中添加所述第一聚合项,并且在对所述嵌套类的数据结构完成分析时,在所述聚合项流程中添加所述第二聚合项。

在本实施方式中,所述目标数据源可以是待分析的数据源,该目标数据源中可以包括大量的信息,这些信息中有部分信息可以是嵌套类的数据结构。举例来说明,所述目标数据源可以是如表1所示的图书借阅数据。

表1图书借阅数据示意表

如表1所示,在该目标数据源中,书籍借阅信息中的数据采用的是嵌套类的数据结构。在书籍借阅信息中,包含了名称和借阅量的嵌套。

在本实施方式中,针对该目标数据源,用户可以向grafana分析系统下达解析任务,该解析任务例如可以是“统计2018年1月1日各个图书分类中,借阅量最高的书籍名称”。grafana分析系统接收到该解析任务之后,可以生成所述解析任务对应的聚合项流程。具体地,在生成所述聚合项流程时,首先可以确定用于实现所述解析任务所采取的多个逻辑步骤。例如,对于上述的解析任务,可以确定如图2所示的逻辑步骤。第一个逻辑步骤可以是“从目标数据源中筛选出2018年1月1日的数据”,第二个逻辑步骤可以是“将筛选得到的数据按照图书分类进行分组”,第三个逻辑步骤可以是“在分组后的数据中,根据书籍名称再次分组”,第四个逻辑步骤可以是“把具备相同名称的书籍的借阅量进行汇总”,最后一个逻辑步骤便可以是“确定借阅量最高的图书名称”。这些逻辑步骤可以按照执行顺序,从上到下依次排序。然而,由于书籍借阅信息中的数据为嵌套类数据结构,grafana无法直接对书籍借阅信息中的数据进行处理。因此,如图2所示,当需要对书籍借阅信息中的数据进行分析时,需要在上述的第二个逻辑步骤和第三个逻辑步骤之间,增加“进入书籍借阅信息”的逻辑步骤,此外,在对书籍借阅信息分析完成之后,可以在第四个逻辑步骤和最后一个逻辑步骤之间增加“退出书籍借阅信息”的逻辑步骤。这样,总的逻辑步骤便可以如图2所示。

在本实施方式中,确定出实现解析任务所需的逻辑步骤之后,便可以在grafana分析系统中针对各个逻辑步骤选用对应的聚合项。其中,后来添加的逻辑步骤,对应的是进入嵌套类数据结构和退出嵌套类数据结构的动作,因此,针对这两个逻辑步骤,可以分别选用第一聚合项和第二聚合项。也就是说,在对所述目标数据源中嵌套类的数据结构进行分析时,可以在所述聚合项流程中添加所述第一聚合项,并且在对所述嵌套类的数据结构完成分析时,可以在所述聚合项流程中添加所述第二聚合项。而针对其它逻辑步骤,都是可以通过grafana分析系统中正常的聚合项来表示。这样,按照选用聚合项的顺序,可以将选用的聚合项形成所述解析任务对应的聚合项流程。该聚合项流程中的各个聚合项,可以与上述的各个逻辑步骤一一对应。

s3:生成所述聚合项流程对应的查询语句,所述查询语句中包括与所述聚合项流程中各个聚合项相匹配的子语句,并通过所述查询语句对所述目标数据源进行分析,得到所述目标数据源的查询结果,所述查询结果中包括各个所述子语句的聚合结果。

在本实施方式中,在得到所述聚合项流程之后,可以按照elasticsearch的语法,针对所述聚合项流程中的各个聚合项,生成对应的子语句。由于elasticsearh语法本身支持嵌套类的数据结构,因此可以正常生成上述第一聚合项和第二聚合项各自的子语句。然后,可以将生成的子语句按照聚合项在所述聚合项流程中的排列顺序进行排序,从而保持各个子语句的逻辑关系。这样,排序后的子语句便可以作为所述聚合项流程对应的查询语句。

在本实施方式中,grafana分析系统中的各个聚合项,均可以具备唯一标识。这样,根据聚合项生成的子语句也具备唯一性,可以沿用该聚合项的唯一标识。因此,在查询语句中,各个子语句可以具备各自的唯一标识,通过唯一标识,便可以识别出对应的子语句。

在本实施方式中,在生成查询语句之后,可以针对该目标数据源执行该查询语句,从而得到所述目标数据源的查询结果。在执行该查询语句时,可以按照所述查询语句中各个子语句的排列顺序,依次对所述目标数据源执行各个子语句。每执行一个子语句,便可以得到一个对应的聚合结果。这样,在执行完所述查询语句之后,便可以得到由多个聚合结果构成的查询结果。由于查询语句中各个子语句具备唯一标识,那么为了区分查询结果中的多个聚合结果,可以将子语句具备的唯一标识分配给对应的聚合结果,这样,所述查询结果中某个子语句的聚合结果便可以携带该子语句的唯一标识。

s5:遍历所述查询结果中的各个聚合结果,以获取所述聚合结果的聚合信息,并根据获取的所述聚合信息,生成所述解析任务的解析结果

在本实施方式中,在得到查询结果之后,由于原本的查询语句是针对嵌套类数据结构生成的,因此得到的查询结构也是嵌套类的数据结构。而grafana分析系统无法针对嵌套类的查询结果进行解析,因此,本实施方式中还需要提供一种针对嵌套类的查询结果的解析方法。

在得到查询结果之后,由于查询结果中的聚合结果之间存在嵌套关系,因此可以由外向内逐一分析各个聚合结果,从而得到最终的解析结果。具体地,每个聚合结果都可以具备各自的聚合信息,该聚合信息根据聚合结果所处位置的不同,可以对应不同的含义。举例来说,针对图2的逻辑步骤最终得到查询结果后,该查询结构中的聚合结果实际上也是与逻辑步骤一一对应的。这样,针对“从目标数据源中筛选出2018年1月1日的数据”这个逻辑步骤而言,其对应的聚合结果便可以是借阅时间为2018年1月1日的数据,该聚合结果的聚合信息可以是“2018年1月1日”。而针对“将筛选得到的数据按照图书分类进行分组”这个逻辑步骤而言,其对应的聚合结果的聚合信息可以是分组后的图书类别,例如该聚合信息可以是表1中的“金融”。而对于最后一个逻辑步骤“确定借阅量最高的图书名称”,其对应的聚合结果的聚合信息可以是表1中的“金融政治”以及数值“100”。由此可见,若当前的聚合结果不是查询结果中的最后一个聚合结果,那么当前的聚合结果的聚合信息可以用于描述该聚合结果的类型。该类型例如可以是上述的时间“2018年1月1日”和图书类别“金融”。而如果当前的聚合结果为查询结果中的最后一个聚合结果时,该聚合结果的聚合信息通常会表征一个数值,例如该聚合信息可以是上述表征最高借阅量的“100”。

因此,请参阅图3,在本实施方式中,首先可以检测所述查询语句中各个子语句的唯一标识,然后可以遍历检测到的所述唯一标识,从而对携带唯一标识的聚合结果进行聚合信息的提取。具体地,针对当前的唯一标识,可以从所述查询结果中识别出携带所述当前的唯一标识的当前聚合结果。然后,可以判断所述当前聚合结果是否是所述查询结果中的最后一个结果,若否,则可以收集所述当前聚合结果中的属性信息,该属性信息例如可以是上述的用于描述聚合结果类型的信息。这样,所述属性信息便可以作为所述聚合结果的聚合信息。当然,需要说明的是,在收集属性信息之前,还可以判断该聚合结果中是否有需要收集的属性信息,如果有才收集。在某些情况下,有些聚合结果并不包含属性信息,例如上述第一聚合项和第二聚合项对应的聚合结果而言,便可以不包含属性信息。

在本实施方式中,在完成当前聚合结果的属性信息的收集过程之后,可以对下一个唯一标识进行分析。按照同样的过程,可以判断下一个唯一标识对应的聚合结果是否是最后一个聚合结果,如果依然不是,那可以按照上述的方式进行处理。如果是最后一个聚合结果,那么该聚合结果通常会包含表征统计量的一个数值。在这种情况下,可以从所述当前聚合结果中识别出表征统计量的聚合值,并将所述聚合值作为所述当前聚合结果的聚合信息。

在本实施方式中,在得到各个聚合结果的聚合信息之后,可以按照获取聚合信息的顺序,汇总各个所述聚合信息,并将汇总后的聚合信息作为所述解析任务的解析结果。例如,上述的统计最高借阅量的图书名称的例子中,最终得到的解析结果可以是“2018年1月1日金融类图书借阅量最高的是金融政治一书,该书籍的借阅量为100”。当然,在实际应用中,可以按照解析结果形式的不同,将解析结果表现为文字或者图表或者其它形式,本申请对解析结果的形式并不做限定。

实施例二

请参阅图4,本申请还提供一种数据的解析装置,所述装置可以应用于上述的grafana分析系统中,所述装置包括:

聚合项新建单元,提供用于表征进入嵌套类数据结构的第一聚合项和用于表征退出嵌套类数据结构的第二聚合项;

聚合项流程生成单元,用于接收针对目标数据源的解析任务,并生成所述解析任务对应的聚合项流程;其中,在对所述目标数据源中嵌套类的数据结构进行分析时,在所述聚合项流程中添加所述第一聚合项,并且在对所述嵌套类的数据结构完成分析时,在所述聚合项流程中添加所述第二聚合项;

查询结果获取单元,用于生成所述聚合项流程对应的查询语句,所述查询语句中包括与所述聚合项流程中各个聚合项相匹配的子语句,并通过所述查询语句对所述目标数据源进行分析,得到所述目标数据源的查询结果,所述查询结果中包括各个所述子语句的聚合结果;

查询结果解析单元,用于遍历所述查询结果中的各个所述聚合结果,以获取所述聚合结果的聚合信息,并根据获取的所述聚合信息,生成所述解析任务的解析结果。

在一个实施方式中,所述查询语句中的子语句具备唯一标识,并且所述查询结果中所述子语句的聚合结果携带所述唯一标识;相应地,所述查询结果解析单元包括:

标识遍历模块,用于检测所述查询语句中各个子语句的唯一标识,并遍历检测到的所述唯一标识;

聚合结果识别模块,用于针对当前的唯一标识,从所述查询结果中识别出携带所述当前的唯一标识的当前聚合结果;

聚合信息收集模块,用于判断所述当前聚合结果是否是所述查询结果中的最后一个结果,若否,收集所述当前聚合结果中的属性信息,并将所述属性信息作为所述聚合结果的聚合信息;其中,所述属性信息用于描述所述聚合结果的类型。

在一个实施方式中,所述查询结果解析单元还包括:

聚合值识别模块,用于若所述当前聚合结果是所述查询结果中的最后一个结果,从所述当前聚合结果中识别聚合值,并将所述聚合值作为所述当前聚合结果的聚合信息

由上可见,本申请提供的技术方案,可以预先在grafana分析系统内置的聚合项中,添加用于表征进入嵌套类数据结构的第一聚合项和用于表征退出嵌套类数据结构的第二聚合项。这样,在接收到针对包含嵌套类数据结构的目标数据源的解析任务时,首先可以生成所述解析任务对应的聚合项流程。在该聚合项流程中,对于解析任务中的普通流程步骤而言,可以选用grafana分析系统内置的对应聚合项,而在对所述目标数据源中嵌套类的数据结构进行分析时,可以在所述聚合项流程中添加所述第一聚合项,并且在对所述嵌套类的数据结构完成分析时,在所述聚合项流程中添加所述第二聚合项。这样,聚合项流程中除了包含常规的聚合项,还可以包含针对嵌套类数据结构的第一聚合项和第二聚合项。然后,根据该聚合项流程,可以生成对应的查询语句。具体地,聚合项流程中包含各个聚合项,那么在生成查询语句时,可以根据elasticsearch的语法,逐一生成各个聚合项的子语句。由于elasticsearch本身支持嵌套类数据结构的语法,因此针对上述的第一聚合项和第二聚合项,也能够正常生成对应的子语句。这样,各个子语句便可以形成上述的查询语句。后续,可以对目标数据源执行该查询语句,从而可以得到对应的查询结果。在执行该查询语句时,可以分别执行其中的各个子语句,从而可以得到各个子语句对应的聚合结果,这些聚合结果便可以形成上述的查询结果。由于该查询结果与查询条件一致,也是具备嵌套类的数据结构,因此grafana分析系统无法直接识别该查询结果中的内容。鉴于此,在本申请中,可以遍历所述查询结果中的各个聚合结果,并获取各个聚合结果对应的聚合信息。最终,可以将这些聚合信息进行汇总,从而得到所述解析任务对应的解析结果。由此可见,本申请通过配置额外的聚合项,以及通过遍历聚合结果的方式,可以使得grafana分析系统能够对嵌套类的数据结构进行分析,从而扩展了grafana分析系统的使用范围。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件来实现。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。

以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1