CN112540978A - 宽表生成方法、装置及电子设备 - Google Patents
宽表生成方法、装置及电子设备 Download PDFInfo
- Publication number
- CN112540978A CN112540978A CN201910900925.4A CN201910900925A CN112540978A CN 112540978 A CN112540978 A CN 112540978A CN 201910900925 A CN201910900925 A CN 201910900925A CN 112540978 A CN112540978 A CN 112540978A
- Authority
- CN
- China
- Prior art keywords
- target
- field
- information
- determining
- code
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2282—Tablespace storage structures; Management thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/242—Query formulation
- G06F16/2433—Query languages
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例提供一种宽表生成方法、装置及电子设备。本发明实施例,通过从指定代码库中提取属于目标业务主题的目标查询语言代码,根据目标查询语言代码,获取与目标业务主题相关的表信息以及各表中的字段信息,基于获取的表信息以及各表中的字段信息,确定宽表所需的目标字段,根据目标字段,生成目标业务主题对应的目标宽表,利用客观数据作为选择宽表所需字段的依据,相比于依据人的主观判断作为选择宽表所需字段的依据,更加准确,因此提高了宽表的准确性。
Description
技术领域
本发明涉及数据处理技术领域,尤其涉及一种宽表生成方法、装置及电子设备。
背景技术
宽表是字段比较多的数据库表。宽表通常指将业务主题相关的指标、维度、属性关联在一起的一张数据库表。在数据仓库领域,数据分析人员经常需要查询常用字段。为了使数据分析人员在查询常用字段时,能得到查询性能的提高与操作的便捷,需要在数据仓库中设计宽表。
相关技术中,由用户根据对业务主题的熟悉程度,人工确定宽表所需的字段,并基于人工确定的字段设计出宽表。这种方式产生的宽表依赖于用户对业务主题的熟悉程度和主观判断,因此准确性较低。
发明内容
为克服相关技术中存在的问题,本发明提供了一种宽表生成方法、装置及电子设备。
根据本发明实施例的第一方面,提供一种宽表生成方法,所述方法包括:
从指定代码库中提取属于目标业务主题的目标查询语言代码;
根据所述目标查询语言代码,获取与所述目标业务主题相关的表信息以及各表中的字段信息;
基于获取的所述表信息以及各表中的字段信息,确定宽表所需的目标字段;
根据所述目标字段,生成所述目标业务主题对应的目标宽表。
根据本发明实施例的第二方面,提供一种宽表生成装置,所述装置包括:
提取模块,用于从指定代码库中提取属于目标业务主题的目标查询语言代码;
获取模块,用于根据所述目标查询语言代码,获取与所述目标业务主题相关的表信息以及各表中的字段信息;
确定模块,用于基于获取的所述表信息以及各表中的字段信息,确定宽表所需的目标字段;
生成模块,用于根据所述目标字段,生成所述目标业务主题对应的目标宽表。
根据本发明实施例的第三方面,提供一种电子设备,包括:
处理器;
用于存储所述处理器可执行指令的存储器;
其中,所述处理器被配置为执行上述第一方面任一项所述的宽表生成方法。
本发明实施例提供的技术方案可以包括以下有益效果:
本发明实施例,通过从指定代码库中提取属于目标业务主题的目标查询语言代码,根据目标查询语言代码,获取与目标业务主题相关的表信息以及各表中的字段信息,基于获取的表信息以及各表中的字段信息,确定宽表所需的目标字段,根据目标字段,生成目标业务主题对应的目标宽表,利用客观数据作为选择宽表所需字段的依据,相比于依据人的主观判断作为选择宽表所需字段的依据,更加准确,因此提高了宽表的准确性。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本说明书。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本说明书的实施例,并与说明书一起用于解释本说明书的原理。
图1是本发明实施例提供的宽表生成方法的流程示例图。
图2是本发明实施例提供的宽表生成装置的功能方块图。
图3是本发明实施例提供的电子设备的一个硬件结构图。
图4是抽象语法树的示意图。
图5是抽象语法树的示例图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本发明相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本发明实施例的一些方面相一致的装置和方法的例子。
在本发明实施例使用的术语是仅仅出于描述特定本发明实施例的目的,而非旨在限制本发明实施例。在本发明实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本发明实施例可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本发明实施例范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
宽表具有较高的数据查询性能,并且操作便捷。因此,在需要进行查询的场景中,经常需要设计宽表。
在一个示例中,宽表可以应用于数据挖掘模型训练前的数据准备,通过把相关字段放在同一张表中,可以大大提高数据挖掘模型训练过程中迭代计算时的效率。
下面通过实施例,对本发明的宽表生成方法进行详细说明。
图1是本发明实施例提供的宽表生成方法的流程示例图。如图1所示,宽表生成方法可以包括:
S101,从指定代码库中提取属于目标业务主题的目标查询语言代码。
S102,根据目标查询语言代码,获取与目标业务主题相关的表信息以及各表中的字段信息。
S103,基于获取的表信息以及各表中的字段信息,确定宽表所需的目标字段。
S104,根据目标字段,生成目标业务主题对应的目标宽表。
在步骤S101中,指定代码库为已有的代码库。
业务主题用于标识一种业务。例如,业务主题为旅游时,说明该业务是与旅游相关的业务。
查询语言代码可以为Hibernate查询语言(Hibernate Query Language,HQL)代码。
在一个示例中,从指定代码库中提取属于目标业务主题的查询语言代码的方式可以是:使用自动化脚本,从指定代码库中提取属于目标业务主题的所有HQL代码。这种方式使得提取代码能够自动化进行,处理效率高。
在提取出HQL代码后,可以存储在txt文本中,利用该txt文本中的代码,可以分析出目标业务主题的常用字段,从而为生成宽表提供可供选择的参考字段。
在步骤S102中,与目标业务主题相关的表信息可以包括表名及表的使用次数。各表中的字段信息指与目标业务主题相关的各表中的字段信息,字段信息可以包括字段名及字段的使用次数。
在表信息中,可以将各个表名按照使用次数由大到小的顺序排列,以方便判断出哪些表为目标业务主题中常用的表。
同样,在每个表的字段信息中,可以将各个字段名按照使用次数由大到小的顺序排列,以方便判断出在该表中,哪些字段为目标业务主题中常用的字段。
在步骤S103中,基于获取的表信息以及各表中的字段信息,确定宽表所需的目标字段的方式可以是:根据用户对表信息以及各表中的字段信息的选择信息,确定宽表所需的目标字段。
例如,用户可以根据表信息中表的使用次数选择目标表,再从目标表的字段信息中根据字段的使用次数选择目标字段。
通过步骤S103,用户根据从代码库获得的表信息和字段信息确定宽表所需的目标字段,这样,使得目标字段的选择是基于客观事实作出的,而不是基于用户个人的主观判断,提高了宽表的准确性。
通过步骤S104,本实施例可以自动生成宽表,提高了宽表的生成效率。
在一个示例性的实现过程中,步骤S102可以包括:
按照预设清洗规则对目标查询语言代码执行清洗操作,得到清洗后代码,清洗后代码属于完整查询语句;
对清洗后代码中每条查询语句的代码进行解析,确定每条查询语句中所使用的表名、字段名以及表与字段的关联信息;
统计清洗后代码中所有查询语句所使用的表信息以及各表中的字段信息。
本实施例中,预设清洗规则用于从目标查询语言代码中查找出完整查询语句的代码,即清洗后代码,完整查询语句的代码可以存储在txt文本中。在存储清洗后代码的txt文本中,每一行为一条完整的查询语句。
完整的查询语句是以“select”开头、以分号“;”结尾的,预设清洗规则可以据此设置为:筛选出以“select”开头、以分号“;”结尾的语句。
本实施例可以去除不完整查询语句的代码,筛选出完整查询语句的代码,提高了数据质量,从而为宽表设计提供更准确可靠的依据。
在一个示例性的实现过程中,对清洗后代码中每条查询语句的代码进行解析,确定每条查询语句中所使用的表名、字段名以及表与字段的关联信息,可以包括:
针对清洗后代码中的每条查询语句,获取该查询语句的抽象语法树(AbstractSyntax Tree,AST);
对抽象语法树进行深度优先遍历,获取SELECT操作中与表和列相关的目标操作;
获取各目标操作的操作标识;
在目标操作的操作标识为第一预定标识时,确定目标操作的操作对象为表并提取表名,在目标操作的操作标识为第二预定标识时,确定目标操作的操作对象为列并提取列的字段名;
根据与同一中间信息相关的表和字段获取表与字段的关联信息。
其中,中间信息可以是表的别名。
抽象语法树是源代码语法结构的一种抽象表示。它以树状的形式表现编程语言的语法结构,树上的每个节点都是一个ASTNode类型。
图4是抽象语法树的示意图。请参考图4,该抽象语法树包括A、B、C、D、E、F、G、H、I、J、P共11个ASTNode类型节点。
本实施例中,可以使用数据仓库工具HIVE的ParseDriver类得到查询语句的抽象语法树。其过程可以是:
直接导入org.apache.hadoop.hive.ql.parse包,使用该包里面的ParseDriver类,通过下列语句创建一个ParseDriver对象:
ParseDriver pd=new ParseDriver();
然后直接调用创建的该对象已有的parse方法即可将hql语句解析得到AST:
ASTNode ast=pd.parse(cleanLine);
这样,就得到了抽象语法树AST。
本实施例中,深度优先遍历的过程可以是:
步骤a,访问指定的起始顶点;
步骤b,判断当前访问的顶点是否有未被访问的邻接顶点,如果是,访问当前访问的顶点的未被访问的邻接顶点;如果否,退回到最近访问过的顶点,直到与起始顶点相通的全部顶点都访问完毕;
步骤c,判断抽象语法树上是否还有未被访问的顶点,如果是,从未被访问的顶点中选择一个作为起始顶点并访问,执行步骤b;如果否,结束遍历。
以图4所示的抽象语法树为例,对该树进行深度优先遍历的节点的访问顺序是:A、B、D、E、H、I、C、F、J、G、P。
通过深度优先遍历,还可以获得各操作的操作标识token。操作标识token可以用于指示操作对象是表还是列。
例如,当操作标识token为TOK_TAB或TOK_TABREF时,可以确定操作对象为表,当操作标识token为TOK_TABLE_OR_COL时,可以确定操作对象为列。即第一预定标识可以为TOK_TAB或TOK_TABREF,第二预定标识可以为TOK_TABLE_OR_COL。
这里,对根据AST提取表名、字段名、表与字段的关联关系的过程进行举例说明。以图5所示的树形结构为例。
hql语句为:
select
s.s_suppkey,n.n_name
from nation n
join supplier s
on n.n_nationkey=s.s_nationkey
依据深度优先遍历的顺序,最先解析到图5最左下角TOK_TABREF下的表:nation,并获取了该表的别名为n,将表名nation存储进table这个集合中,另外将表nation和别名n这个对应关系存入tableAlias这个哈希表(Hashmap)结构中,tableAlias表中,key为别名,value为真实表名,即tableAlias:key:n value:nation。
之后,解析到TOK_JOIN下另一个TOK_TABREF下的另一个表supplier,对该表名及其别名执行与上述的表nation和别名n同样的操作,tableAlias新增一条:key:s value:supplier,且table集合新增一个表名supplier。
解析到TOK_JOIN下的最右子树,即join的条件:n.n_nationkey=s.s_nationkey.从树中TOK_TABLE_OR_COL标识可以判断出有两个字段:n.n_nationkey和s.s_nationkey。根据“.”号可以分离出n、s为表名的别名,n_nationkey和s_nationkey为表中字段名。对n.n_nationkey,从tableAlias中取出别名n对应的真实表名nation,将nation与字段n_nationkey存入cols这个map中,key为真实表名,value为该key中出现的字段,即cols:key:nation,value:n_nationkey。
对s.s_nationkey执行与n.n_nationkey同样的操作,则cols中新增一条:key:supplier,value:s_nationkey。
解析到TOK_QUERY右子树TOK_INSERT右子树TOK_SELECT下,根据TOK_TABLE_OR_COL标识判断出两个查询的字段:s.s_suppkey,n.n_name,对该两个字段分别执行与上述的n.n_nationkey同样的操作,对cols进行更新,更新后cols为4条:
key:nation value:n_nationkey
key:nation value:n_name
Key:supplier value:s_nationkey
Key:supplier value:s_suppkey
这样,就提取出了表名、字段名、表与字段的关联关系。
确定每条查询语句中所使用的表名、字段名以及表与字段的关联信息后,可以将表存入集合table中,格式为Set<表名>,将表及对应的列存入集合cols中,格式为Map<表名,字段名>。
由于在不同的查询语句中可能出现同一个表,因此集合table中的表名可以重复出现。同样,在不同的查询语句中可能出现同一个表和该表中的同一个字段,因此集合cols中的表名和其关联的字段名也可以重复出现。
对于清洗后代码中的所有查询语句,可以统计各个表的使用次数,将表名和使用次数存储在集合tablecnt中,格式为<表名,该表使用次数>;统计各个表中关联字段的使用次数,并将表及其关联字段存储在集合fieldstotal中,格式为<表名,该表关联字段的列表>。
在解析完所有的查询语句后,对最终得到的集合tablecnt和fieldstotal可以分别进行统计。对tablecnt处理得到对表名按照使用次数降序排列的清单list,按序遍历该清单list,依次对每张表从集合fieldstotal中取出该表对应的字段列表,对该列表进行统计得到每个字段使用的次数,并按降序排列。
最终得到的表信息以及各表中的字段信息可以如下:
(表及字段均按使用次数降序排列)
在一个示例性的实现过程中,查询语句为嵌套语句;获取SELECT操作中与表和列相关的目标操作,包括:
确定查询语句的各层子句;
将各层子句压入栈中;
按照入栈的相反顺序,依次从栈中读取子句,并获取子句的SELECT操作中与表和列相关的目标操作。
本实施例中,当查询语句为嵌套语句时,可以逐层获取嵌套的各个子句的SELECT操作中与表和列相关的目标操作,获得更准确的表信息及字段信息,为宽表设计提供更精确的数据支持,从而使得宽表的准确性更高。
例如,查询语句为语句1,语句1中嵌套查询语句2,语句2中又嵌套查询语句3,则语句1三层嵌套语句,第一层为语句1,第二层为语句2,第三层为语句3。将语句1、语句2、语句3按照先语句1、再语句2、最后语句3的顺序压入栈中,然后从栈中依次读取出语句3、语句2、语句1,并分别获取语句3、语句2、语句1的SELECT操作中与表和列相关的目标操作。
在一个示例性的实现过程中,步骤S103可以包括:
获取宽表所需的目标字段的筛选条件,筛选条件包括表筛选条件和字段筛选条件;
根据表筛选条件,从获取的表信息中筛选出目标表;
根据字段筛选条件,从各目标表的字段信息中筛选出目标字段。
本实施例能够自动获得精确的常用字段,从而能够提高宽表的准确性。
在一个示例中,表筛选条件可以包括以下条件中的任意一种或多种:
将使用率最大的前设定个表确定为目标表;
将使用率最大的列所在的表确定为目标表;
将用户选中的表确定为目标表;
将包含指定字段的表确定为目标表;
所述字段筛选条件包括以下条件中的任意一种或多种:
将表中使用率最大的前设定个字段确定为目标字段;
将表中被用户选中的字段确定为目标字段。
例如,表筛选条件可以是:使用次数最多的前10张表。
例如,字段筛选条件可以是:表中使用次数最多的前5个字段。
本发明实施例提供的宽表生成方法,通过从指定代码库中提取属于目标业务主题的目标查询语言代码,根据目标查询语言代码,获取与目标业务主题相关的表信息以及各表中的字段信息,基于获取的表信息以及各表中的字段信息,确定宽表所需的目标字段,根据目标字段,生成目标业务主题对应的目标宽表,利用客观数据作为选择宽表所需字段的依据,相比于依据人的主观判断作为选择宽表所需字段的依据,更加准确,因此提高了宽表的准确性。
相比于相关技术中的宽表产生方式,本实施例的宽表生成方法减轻了对业务主题熟悉度的依赖,不需要用户对业务主题进行深入熟悉和研究,减少了用户的工作量。并且,由于本实施例的宽表生成方法是自动进行的,相比于相关技术中人工产生宽表的方式,缩短了生成宽表的用时,提高了效率。
基于上述的方法实施例,本发明实施例还提供了相应的装置、设备及存储介质实施例。关于本发明实施例的装置、设备及存储介质实施例的详细实现方式,请参见前述方法实施例部分的相应说明。
图2是本发明实施例提供的宽表生成装置的功能方块图。如图3所示,本实施例中,宽表生成装置可以包括:
提取模块210,用于从指定代码库中提取属于目标业务主题的目标查询语言代码;
获取模块220,用于根据所述目标查询语言代码,获取与目标业务主题相关的表信息以及各表中的字段信息;
确定模块230,用于基于获取的所述表信息以及各表中的字段信息,确定宽表所需的目标字段;
生成模块240,用于根据所述目标字段,生成目标业务主题对应的目标宽表。
在一个示例性的实现过程中,获取模块220具体用于:
按照预设清洗规则对所述目标查询语言代码执行清洗操作,得到清洗后代码,所述清洗后代码属于完整查询语句;
对所述清洗后代码中每条查询语句的代码进行解析,确定每条查询语句中所使用的表名、字段名以及表与字段的关联信息;
统计所述清洗后代码中所有查询语句所使用的表信息以及各表中的字段信息。
在一个示例性的实现过程中,获取模块220在用于对所述清洗后代码中每条查询语句的代码进行解析,确定每条查询语句中所使用的表名、字段名以及表与字段的关联信息时,可以具体用于:
针对所述清洗后代码中的每条查询语句,获取该查询语句的抽象语法树;
对抽象语法树进行深度优先遍历,获取SELECT操作中与表和列相关的目标操作;
获取各目标操作的操作标识;
在目标操作的操作标识为第一预定标识时,确定目标操作的操作对象为表并提取表名,在目标操作的操作标识为第二预定标识时,确定目标操作的操作对象为列并提取列的字段名;
根据与同一中间信息相关的表和字段获取表与字段的关联信息。
在一个示例性的实现过程中,查询语句为嵌套语句;获取模块220在用于获取SELECT操作中与表和列相关的目标操作时,具体用于:
确定所述查询语句的各层子句;
将所述各层子句压入栈中;
按照入栈的相反顺序,依次从栈中读取子句,并获取子句的SELECT操作中与表和列相关的目标操作。
在一个示例性的实现过程中,确定模块230可以具体用于:
获取宽表所需的目标字段的筛选条件,所述筛选条件包括表筛选条件和字段筛选条件;
根据所述表筛选条件,从获取的所述表信息中筛选出目标表;
根据所述字段筛选条件,从各目标表的字段信息中筛选出目标字段。
在一个示例性的实现过程中,所述表筛选条件包括以下条件中的任意一种或多种:
将使用率最大的前设定个表确定为目标表;
将使用率最大的列所在的表确定为目标表;
将用户选中的表确定为目标表;
将包含指定字段的表确定为目标表;
所述字段筛选条件包括以下条件中的任意一种或多种:
将表中使用率最大的前设定个字段确定为目标字段;
将表中被用户选中的字段确定为目标字段。
本发明实施例还提供了一种电子设备。图3是本发明实施例提供的电子设备的一个硬件结构图。如图3所示,电子设备包括:内部总线301,以及通过内部总线连接的存储器302,处理器303和外部接口304。
所述处理器303,用于读取存储器302上的机器可读指令,并执行所述指令以实现如下操作:
从指定代码库中提取属于目标业务主题的目标查询语言代码;
根据所述目标查询语言代码,获取与所述目标业务主题相关的表信息以及各表中的字段信息;
基于获取的所述表信息以及各表中的字段信息,确定宽表所需的目标字段;
根据所述目标字段,生成目标业务主题对应的目标宽表。
在一个示例性的实现过程中,所述根据所述目标查询语言代码,获取与所述目标业务主题相关的表信息以及各表中的字段信息,包括:
按照预设清洗规则对所述目标查询语言代码执行清洗操作,得到清洗后代码,所述清洗后代码属于完整查询语句;
对所述清洗后代码中每条查询语句的代码进行解析,确定每条查询语句中所使用的表名、字段名以及表与字段的关联信息;
统计所述清洗后代码中所有查询语句所使用的表信息以及各表中的字段信息。
在一个示例性的实现过程中,所述对所述清洗后代码中每条查询语句的代码进行解析,确定每条查询语句中所使用的表名、字段名以及表与字段的关联信息,包括:
针对所述清洗后代码中的每条查询语句,获取该查询语句的抽象语法树;
对抽象语法树进行深度优先遍历,获取SELECT操作中与表和列相关的目标操作;
获取各目标操作的操作标识;
在目标操作的操作标识为第一预定标识时,确定目标操作的操作对象为表并提取表名,在目标操作的操作标识为第二预定标识时,确定目标操作的操作对象为列并提取列的字段名;
根据与同一中间信息相关的表和字段获取表与字段的关联信息。
在一个示例性的实现过程中,所述查询语句为嵌套语句;所述获取SELECT操作中与表和列相关的目标操作,包括:
确定所述查询语句的各层子句;
将所述各层子句压入栈中;
按照入栈的相反顺序,依次从栈中读取子句,并获取子句的SELECT操作中与表和列相关的目标操作。
在一个示例性的实现过程中,所述基于获取的所述表信息以及各表中的字段信息,确定宽表所需的目标字段,包括:
获取宽表所需的目标字段的筛选条件,所述筛选条件包括表筛选条件和字段筛选条件;
根据所述表筛选条件,从获取的所述表信息中筛选出目标表;
根据所述字段筛选条件,从各目标表的字段信息中筛选出目标字段。
在一个示例性的实现过程中,所述表筛选条件包括以下条件中的任意一种或多种:
将使用率最大的前设定个表确定为目标表;
将使用率最大的列所在的表确定为目标表;
将用户选中的表确定为目标表;
将包含指定字段的表确定为目标表;
所述字段筛选条件包括以下条件中的任意一种或多种:
将表中使用率最大的前设定个字段确定为目标字段;
将表中被用户选中的字段确定为目标字段。
本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有若干计算机指令,所述计算机指令被执行时进行如下处理:
从指定代码库中提取属于目标业务主题的目标查询语言代码;
根据所述目标查询语言代码,获取与所述目标业务主题相关的表信息以及各表中的字段信息;
基于获取的所述表信息以及各表中的字段信息,确定宽表所需的目标字段;
根据所述目标字段,生成所述目标业务主题对应的目标宽表。
在一个示例性的实现过程中,所述根据所述目标查询语言代码,获取与所述目标业务主题相关的表信息以及各表中的字段信息,包括:
按照预设清洗规则对所述目标查询语言代码执行清洗操作,得到清洗后代码,所述清洗后代码属于完整查询语句;
对所述清洗后代码中每条查询语句的代码进行解析,确定每条查询语句中所使用的表名、字段名以及表与字段的关联信息;
统计所述清洗后代码中所有查询语句所使用的表信息以及各表中的字段信息。
在一个示例性的实现过程中,所述对所述清洗后代码中每条查询语句的代码进行解析,确定每条查询语句中所使用的表名、字段名以及表与字段的关联信息,包括:
针对所述清洗后代码中的每条查询语句,获取该查询语句的抽象语法树;
对抽象语法树进行深度优先遍历,获取SELECT操作中与表和列相关的目标操作;
获取各目标操作的操作标识;
在目标操作的操作标识为第一预定标识时,确定目标操作的操作对象为表并提取表名,在目标操作的操作标识为第二预定标识时,确定目标操作的操作对象为列并提取列的字段名;
根据与同一中间信息相关的表和字段获取表与字段的关联信息。
在一个示例性的实现过程中,所述查询语句为嵌套语句;所述获取SELECT操作中与表和列相关的目标操作,包括:
确定所述查询语句的各层子句;
将所述各层子句压入栈中;
按照入栈的相反顺序,依次从栈中读取子句,并获取子句的SELECT操作中与表和列相关的目标操作。
在一个示例性的实现过程中,所述基于获取的所述表信息以及各表中的字段信息,确定宽表所需的目标字段,包括:
获取宽表所需的目标字段的筛选条件,所述筛选条件包括表筛选条件和字段筛选条件;
根据所述表筛选条件,从获取的所述表信息中筛选出目标表;
根据所述字段筛选条件,从各目标表的字段信息中筛选出目标字段。
在一个示例性的实现过程中,所述表筛选条件包括以下条件中的任意一种或多种:
将使用率最大的前设定个表确定为目标表;
将使用率最大的列所在的表确定为目标表;
将用户选中的表确定为目标表;
将包含指定字段的表确定为目标表;
所述字段筛选条件包括以下条件中的任意一种或多种:
将表中使用率最大的前设定个字段确定为目标字段;
将表中被用户选中的字段确定为目标字段。
对于装置和设备实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本说明书方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
本领域技术人员在考虑说明书及实践这里申请的发明后,将容易想到本说明书的其它实施方案。本说明书旨在涵盖本说明书的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本说明书的一般性原理并包括本说明书未申请的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本说明书的真正范围和精神由下面的权利要求指出。
应当理解的是,本说明书并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本说明书的范围仅由所附的权利要求来限制。
以上所述仅为本说明书的较佳实施例而已,并不用以限制本说明书,凡在本说明书的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本说明书保护的范围之内。
Claims (13)
1.一种宽表生成方法,其特征在于,所述方法包括:
从指定代码库中提取属于目标业务主题的目标查询语言代码;
根据所述目标查询语言代码,获所述取与目标业务主题相关的表信息以及各表中的字段信息;
基于获取的所述表信息以及各表中的字段信息,确定宽表所需的目标字段;
根据所述目标字段,生成所述目标业务主题对应的目标宽表。
2.根据权利要求1所述的方法,其特征在于,所述根据所述目标查询语言代码,获取与所述目标业务主题相关的表信息以及各表中的字段信息,包括:
按照预设清洗规则对所述目标查询语言代码执行清洗操作,得到清洗后代码,所述清洗后代码属于完整查询语句;
对所述清洗后代码中每条查询语句的代码进行解析,确定每条查询语句中所使用的表名、字段名以及表与字段的关联信息;
统计所述清洗后代码中所有查询语句所使用的表信息以及各表中的字段信息。
3.根据权利要求2所述的方法,其特征在于,所述对所述清洗后代码中每条查询语句的代码进行解析,确定每条查询语句中所使用的表名、字段名以及表与字段的关联信息,包括:
针对所述清洗后代码中的每条查询语句,获取该查询语句的抽象语法树;
对抽象语法树进行深度优先遍历,获取SELECT操作中与表和列相关的目标操作;
获取各目标操作的操作标识;
在目标操作的操作标识为第一预定标识时,确定目标操作的操作对象为表并提取表名,在目标操作的操作标识为第二预定标识时,确定目标操作的操作对象为列并提取列的字段名;
根据与同一中间信息相关的表和字段获取表与字段的关联信息。
4.根据权利要求3所述的方法,其特征在于,所述查询语句为嵌套语句;所述获取SELECT操作中与表和列相关的目标操作,包括:
确定所述查询语句的各层子句;
将所述各层子句压入栈中;
按照入栈的相反顺序,依次从栈中读取子句,并获取子句的SELECT操作中与表和列相关的目标操作。
5.根据权利要求1所述的方法,其特征在于,所述基于获取的所述表信息以及各表中的字段信息,确定宽表所需的目标字段,包括:
获取宽表所需的目标字段的筛选条件,所述筛选条件包括表筛选条件和字段筛选条件;
根据所述表筛选条件,从获取的所述表信息中筛选出目标表;
根据所述字段筛选条件,从各目标表的字段信息中筛选出目标字段。
6.根据权利要求5所述的方法,其特征在于,所述表筛选条件包括以下条件中的任意一种或多种:
将使用率最大的前设定个表确定为目标表;
将使用率最大的列所在的表确定为目标表;
将用户选中的表确定为目标表;
将包含指定字段的表确定为目标表;
所述字段筛选条件包括以下条件中的任意一种或多种:
将表中使用率最大的前设定个字段确定为目标字段;
将表中被用户选中的字段确定为目标字段。
7.一种宽表生成装置,其特征在于,所述装置包括:
提取模块,用于从指定代码库中提取属于目标业务主题的目标查询语言代码;
获取模块,用于根据所述目标查询语言代码,获取与所述目标业务主题相关的表信息以及各表中的字段信息;
确定模块,用于基于获取的所述表信息以及各表中的字段信息,确定宽表所需的目标字段;
生成模块,用于根据所述目标字段,生成所述目标业务主题对应的目标宽表。
8.根据权利要求7所述的装置,其特征在于,所述获取模块具体用于:
按照预设清洗规则对所述目标查询语言代码执行清洗操作,得到清洗后代码,所述清洗后代码属于完整查询语句;
对所述清洗后代码中每条查询语句的代码进行解析,确定每条查询语句中所使用的表名、字段名以及表与字段的关联信息;
统计所述清洗后代码中所有查询语句所使用的表信息以及各表中的字段信息。
9.根据权利要求8所述的装置,其特征在于,所述获取模块在用于对所述清洗后代码中每条查询语句的代码进行解析,确定每条查询语句中所使用的表名、字段名以及表与字段的关联信息时,具体用于:
针对所述清洗后代码中的每条查询语句,获取该查询语句的抽象语法树;
对抽象语法树进行深度优先遍历,获取SELECT操作中与表和列相关的目标操作;
获取各目标操作的操作标识;
在目标操作的操作标识为第一预定标识时,确定目标操作的操作对象为表并提取表名,在目标操作的操作标识为第二预定标识时,确定目标操作的操作对象为列并提取列的字段名;
根据与同一中间信息相关的表和字段获取表与字段的关联信息。
10.根据权利要求9所述的装置,其特征在于,所述查询语句为嵌套语句;所述获取模块在用于获取SELECT操作中与表和列相关的目标操作时,具体用于:
确定所述查询语句的各层子句;
将所述各层子句压入栈中;
按照入栈的相反顺序,依次从栈中读取子句,并获取子句的SELECT操作中与表和列相关的目标操作。
11.根据权利要求7所述的装置,其特征在于,所述确定模块具体用于:
获取宽表所需的目标字段的筛选条件,所述筛选条件包括表筛选条件和字段筛选条件;
根据所述表筛选条件,从获取的所述表信息中筛选出目标表;
根据所述字段筛选条件,从各目标表的字段信息中筛选出目标字段。
12.根据权利要求11所述的装置,其特征在于,所述表筛选条件包括以下条件中的任意一种或多种:
将使用率最大的前设定个表确定为目标表;
将使用率最大的列所在的表确定为目标表;
将用户选中的表确定为目标表;
将包含指定字段的表确定为目标表;
所述字段筛选条件包括以下条件中的任意一种或多种:
将表中使用率最大的前设定个字段确定为目标字段;
将表中被用户选中的字段确定为目标字段。
13.一种电子设备,其特征在于,包括:
处理器;
用于存储所述处理器可执行指令的存储器;
其中,所述处理器被配置为执行上述权利要求1~6任一项所述的宽表生成方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910900925.4A CN112540978A (zh) | 2019-09-23 | 2019-09-23 | 宽表生成方法、装置及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910900925.4A CN112540978A (zh) | 2019-09-23 | 2019-09-23 | 宽表生成方法、装置及电子设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112540978A true CN112540978A (zh) | 2021-03-23 |
Family
ID=75013160
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910900925.4A Pending CN112540978A (zh) | 2019-09-23 | 2019-09-23 | 宽表生成方法、装置及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112540978A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113535817A (zh) * | 2021-07-13 | 2021-10-22 | 浙江网商银行股份有限公司 | 特征宽表生成及业务处理模型的训练方法和装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7801886B1 (en) * | 2006-10-10 | 2010-09-21 | Intuit Inc. | Method and apparatus for performing database operations involving custom fields |
CN108648092A (zh) * | 2018-05-16 | 2018-10-12 | 中国平安人寿保险股份有限公司 | 保险赔付率计算方法、装置、设备及计算机可读存储介质 |
CN109189774A (zh) * | 2018-09-14 | 2019-01-11 | 南威软件股份有限公司 | 一种基于脚本规则的用户标签转化方法及系统 |
CN109388637A (zh) * | 2018-09-21 | 2019-02-26 | 北京京东金融科技控股有限公司 | 数据仓库信息处理方法、装置、系统、介质 |
-
2019
- 2019-09-23 CN CN201910900925.4A patent/CN112540978A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7801886B1 (en) * | 2006-10-10 | 2010-09-21 | Intuit Inc. | Method and apparatus for performing database operations involving custom fields |
CN108648092A (zh) * | 2018-05-16 | 2018-10-12 | 中国平安人寿保险股份有限公司 | 保险赔付率计算方法、装置、设备及计算机可读存储介质 |
CN109189774A (zh) * | 2018-09-14 | 2019-01-11 | 南威软件股份有限公司 | 一种基于脚本规则的用户标签转化方法及系统 |
CN109388637A (zh) * | 2018-09-21 | 2019-02-26 | 北京京东金融科技控股有限公司 | 数据仓库信息处理方法、装置、系统、介质 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113535817A (zh) * | 2021-07-13 | 2021-10-22 | 浙江网商银行股份有限公司 | 特征宽表生成及业务处理模型的训练方法和装置 |
CN113535817B (zh) * | 2021-07-13 | 2024-05-14 | 浙江网商银行股份有限公司 | 特征宽表生成及业务处理模型的训练方法和装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106980637B (zh) | Sql审核方法和装置 | |
US10242049B2 (en) | Method, system and storage medium for implementing intelligent question answering | |
CN110292775B (zh) | 获取差异数据的方法及装置 | |
US9519636B2 (en) | Deduction of analytic context based on text and semantic layer | |
CN109508420B (zh) | 一种知识图谱属性的清洗方法及装置 | |
CN108182215B (zh) | 一种结构化查询语言sql性能统计的方法及装置 | |
JP2015506515A (ja) | タグをドキュメントに自動的に追加するための方法、装置およびコンピュータ記憶媒体 | |
CN109522396B (zh) | 一种面向国防科技领域的知识处理方法及系统 | |
CN110909126A (zh) | 一种信息查询方法及装置 | |
CN107463711A (zh) | 一种数据的标签匹配方法及装置 | |
JP2022042497A (ja) | コーパスに格納された既存の械学習プロジェクトのパイプラインからの新しい機械学習プロジェクトのパイプラインの自動生成 | |
CN105095436A (zh) | 数据源数据自动建模方法 | |
CN110704472A (zh) | 数据查询统计方法及装置 | |
US9075799B1 (en) | Methods and apparatus for query formulation | |
CN112540978A (zh) | 宽表生成方法、装置及电子设备 | |
CN107368500A (zh) | 数据抽取方法及系统 | |
CN110580170B (zh) | 软件性能风险的识别方法及装置 | |
CN110147396B (zh) | 一种映射关系生成方法及装置 | |
CN110008448B (zh) | 将SQL代码自动转换为Java代码的方法和装置 | |
CN106776590A (zh) | 一种获取词条译文的方法及系统 | |
CN107291749A (zh) | 一种数据指标关联关系的确定方法及装置 | |
CN105824976A (zh) | 一种优化分词库的方法和装置 | |
CN115422180A (zh) | 数据校验方法及系统 | |
CN113064982A (zh) | 一种问答库生成方法及相关设备 | |
CN109725982B (zh) | 数据对象构建方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20210323 |
|
RJ01 | Rejection of invention patent application after publication |