CN116975050A - 一种数据处理方法、装置、设备以及计算机可读存储介质 - Google Patents
一种数据处理方法、装置、设备以及计算机可读存储介质 Download PDFInfo
- Publication number
- CN116975050A CN116975050A CN202310127117.5A CN202310127117A CN116975050A CN 116975050 A CN116975050 A CN 116975050A CN 202310127117 A CN202310127117 A CN 202310127117A CN 116975050 A CN116975050 A CN 116975050A
- Authority
- CN
- China
- Prior art keywords
- node
- table node
- connection
- data
- nodes
- 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
- 238000003860 storage Methods 0.000 title claims abstract description 28
- 238000003672 processing method Methods 0.000 title abstract description 25
- 238000010586 diagram Methods 0.000 claims abstract description 93
- 238000000034 method Methods 0.000 claims abstract description 68
- 238000012545 processing Methods 0.000 claims description 59
- 238000005457 optimization Methods 0.000 claims description 36
- 238000004590 computer program Methods 0.000 claims description 23
- 238000004891 communication Methods 0.000 claims description 19
- 238000005259 measurement Methods 0.000 claims description 15
- 230000006870 function Effects 0.000 claims description 8
- 230000008569 process Effects 0.000 description 19
- 238000005516 engineering process Methods 0.000 description 15
- 238000013473 artificial intelligence Methods 0.000 description 14
- 238000004422 calculation algorithm Methods 0.000 description 9
- 238000010276 construction Methods 0.000 description 7
- 238000010801 machine learning Methods 0.000 description 7
- 238000003058 natural language processing Methods 0.000 description 7
- 238000004364 calculation method Methods 0.000 description 5
- 238000011161 development Methods 0.000 description 5
- 238000013461 design Methods 0.000 description 4
- 238000012423 maintenance Methods 0.000 description 4
- 238000011160 research Methods 0.000 description 4
- 238000004458 analytical method Methods 0.000 description 3
- 230000009286 beneficial effect Effects 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 238000013135 deep learning Methods 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 230000001133 acceleration Effects 0.000 description 1
- 238000009825 accumulation Methods 0.000 description 1
- 230000002776 aggregation Effects 0.000 description 1
- 238000004220 aggregation Methods 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000013528 artificial neural network Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 238000003339 best practice Methods 0.000 description 1
- 230000033228 biological regulation Effects 0.000 description 1
- 238000007405 data analysis Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000003745 diagnosis Methods 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 230000006698 induction Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000000737 periodic effect Effects 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 238000011002 quantification Methods 0.000 description 1
- 230000002787 reinforcement Effects 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 238000013526 transfer learning Methods 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
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/23—Updating
-
- 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
-
- 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/245—Query processing
- G06F16/2453—Query optimisation
-
- 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/245—Query processing
- G06F16/2455—Query execution
- G06F16/24553—Query execution of query operations
- G06F16/24558—Binary matching operations
- G06F16/2456—Join operations
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)
- Computational Linguistics (AREA)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请公开了一种数据处理方法、装置、设备以及计算机可读存储介质,该方法包括:根据指标查询请求确定查询指标所属的目标数据表;获取基于数据表关系图所生成的路由表;数据表关系图用于指示A个数据表之间的表关系;A个数据表包括目标数据表;路由表用于指示A个数据表中,每两个具有表连接关系的数据表之间的连接代价;根据每两个具有表连接关系的数据表之间的连接代价,确定数据表连接路径;数据表连接路径用于表征连接目标数据表的路径;数据表连接路径中的数据表均属于A个数据表;生成数据表连接路径对应的查询代码,执行查询代码,在目标数据表中确定查询指标的指标值。采用本申请,可以降低指标值查询难度以及提升指标值查询效率。
Description
技术领域
本申请涉及互联网技术领域,尤其涉及一种数据处理方法、装置、设备以及计算机可读存储介质。
背景技术
指标指一类数据的量化结果,可以是单个数据,例如医疗行业中的住院人数;也可以是多个数据通过计算得到的结果,例如医疗行业中包括门诊花费以及住院花费的总花费。
在现有技术中,从数据库或数据仓提取指标值时,查询者需要向指标管理员确认指标所属的数据表,基于指标所属的数据表,查询者手动编写数据库系统专用的查询语句(即查询代码),通过查询语句提取指标值。明显地,现有技术要求指标查询者具有编程能力,故提高了指标查询的门槛,即提高了指标值查询难度;又由于现有技术的流程需要耗费较大的人工成本,故降低了指标值的查询效率。
发明内容
本申请实施例提供一种数据处理方法、装置、设备以及计算机可读存储介质,可以降低指标值查询难度以及提升指标值查询效率。
本申请实施例一方面提供了一种数据处理方法,包括:
获取携带查询指标的指标查询请求,根据指标查询请求确定查询指标所属的目标数据表;
获取基于数据表关系图所生成的路由表;数据表关系图用于指示A个数据表之间的表关系;A个数据表包括目标数据表;A为大于1的正整数;路由表用于指示A个数据表中,每两个具有表连接关系的数据表之间的连接代价;
根据每两个具有表连接关系的数据表之间的连接代价,确定数据表连接路径;数据表连接路径用于表征连接目标数据表的路径;数据表连接路径中的数据表均属于A个数据表;
生成数据表连接路径对应的查询代码,执行查询代码,在目标数据表中确定查询指标的指标值。
本申请实施例一方面提供了一种数据处理装置,包括:
第一获取模块,用于获取携带查询指标的指标查询请求,根据指标查询请求确定查询指标所属的目标数据表;
第二获取模块,用于获取基于数据表关系图所生成的路由表;数据表关系图用于指示A个数据表之间的表关系;A个数据表包括目标数据表;A为大于1的正整数;路由表用于指示A个数据表中,每两个具有表连接关系的数据表之间的连接代价;
第一确定模块,用于根据每两个具有表连接关系的数据表之间的连接代价,确定数据表连接路径;数据表连接路径用于表征连接目标数据表的路径;数据表连接路径中的数据表均属于A个数据表;
第二确定模块,用于生成数据表连接路径对应的查询代码,执行查询代码,在目标数据表中确定查询指标的指标值。
其中,数据表关系图包括A个表节点;一个表节点用于表征一个数据表,A个表节点分别表征的数据表均属于A个数据表;目标数据表的总数量为至少两个;
第一确定模块,包括:
第一获取单元,用于获取查询指标中的查询度量,在至少两个目标数据表中,获取查询度量所属的数据表;
第一确定单元,用于在A个表节点中,将用于表征查询度量所属的数据表的表节点确定为第一表节点;
第二确定单元,用于根据每两个具有表连接关系的数据表之间的连接代价、第一表节点以及第一剩余表节点,确定数据表连接路径;第一剩余表节点用于表征剩余数据表;剩余数据表包括至少两个目标数据表中除了查询度量所属的数据表之外的数据表;第一剩余表节点属于A个表节点。
其中,第二确定单元,包括:
节点获取子单元,用于在第一剩余表节点中,获取与第一表节点连接且连接代价最小的第二表节点;
路径确定子单元,用于若第二表节点等于第一剩余表节点,则根据由第一表节点连接至第二表节点的连接代价,确定数据表连接路径;由第一表节点连接至第二表节点的连接代价,属于每两个具有表连接关系的数据表之间的连接代价;
节点添加子单元,用于若第一剩余表节点中存在除了第二表节点之外的第二剩余表节点,则将第一表节点以及第二表节点均添加至第一已处理表节点集合,根据第一已处理表节点集合、第二剩余表节点以及每两个具有表连接关系的数据表之间的连接代价,确定数据表连接路径。
其中,路径确定子单元,包括:
第一确定子单元,用于若由第一表节点连接至第二表节点的连接代价等于单位连接代价值,则将由第一表节点连接至第二表节点的连接路径,确定为数据表连接路径;
第一获取子单元,用于若由第一表节点连接至第二表节点的连接代价大于单位连接代价值,则在路由表中,获取针对第一表节点的下一跳表节点B;下一跳表节点B属于A个表节点,且下一跳表节点B不属于用于表征至少两个目标数据表的表节点;由第一表节点连接至下一跳表节点B的连接代价等于单位连接代价值;
第二获取子单元,用于在每两个具有表连接关系的数据表之间的连接代价中,获取由下一跳表节点B连接至第二表节点的连接代价;
第二确定子单元,用于根据由第一表节点连接至第二表节点的连接路径,以及由下一跳表节点B连接至第二表节点的连接代价,确定数据表连接路径。
其中,节点添加子单元,包括:
第三获取子单元,用于在第二剩余表节点中,获取与第一已处理表节点集合中的表节点连接且连接代价最小的第三表节点;
第三确定子单元,用于若第三表节点等于第二剩余表节点,则根据由第一表节点连接至第二表节点的连接代价,以及由第一已处理表节点集合中的表节点连接至第三表节点的连接代价,确定数据表连接路径;由第一已处理表节点集合中的表节点连接至第三表节点的连接代价,属于每两个具有表连接关系的数据表之间的连接代价;
第四确定子单元,用于若第二剩余表节点中存在除了第三表节点之外的第三剩余表节点,则将第三表节点添加至第一已处理表节点集合,得到第二已处理表节点集合,根据第二已处理表节点集合、第三剩余表节点以及每两个具有表连接关系的数据表之间的连接代价,确定数据表连接路径。
其中,第三确定子单元,具体用于根据由第一表节点连接至第二表节点的连接代价,确定由第一表节点连接至第二表节点的连接路径;
第三确定子单元,还具体用于若由第一表节点连接至第三表节点的连接代价,小于或等于由第二表节点连接至第三表节点的连接代价,则根据由第一表节点连接至第三表节点的连接代价,确定由第一表节点连接至第三表节点的连接路径,将由第一表节点连接至第二表节点的连接路径,与,由第一表节点连接至第三表节点的连接路径,确定为数据表连接路径;
第三确定子单元,还具体用于若由第一表节点连接至第三表节点的连接代价,大于由第二表节点连接至第三表节点的连接代价,则根据由第二表节点连接至第三表节点的连接代价,确定由第一表节点连接至第三表节点的连接路径,将由第一表节点连接至第二表节点的连接路径,与,由第一表节点连接至第三表节点的连接路径,确定为数据表连接路径。
其中,第二确定模块,包括:
第二获取单元,用于获取数据库引擎,在查询优化策略集合中,获取与数据库引擎相适配的查询优化策略,将获取到的查询优化策略确定为目标查询优化策略;
第一执行单元,用于将数据表连接路径作为目标查询优化策略的输入数据,执行目标查询优化策略,对数据表连接路径进行优化处理,得到优化查询代码;
则第二确定模块,包括:
第二执行单元,用于执行优化查询代码。
其中,数据表关系图包括A个表节点;一个表节点用于表征一个数据表,A个表节点分别表征的数据表均属于A个数据表;A个表节点之间的节点关系用于表征A个数据表之间的表关系;
第二获取模块,包括:
第三确定单元,用于在A个表节点之间的节点关系中,获取属于节点直连关系的直连表节点对,将直连表节点对中的两个表节点之间的连接代价确定为单位连接代价值;直连表节点对中的两个表节点之间存在节点边;
第三获取单元,用于在A个表节点之间的节点关系中,获取属于节点间连关系的间连表节点对;间连表节点对中的两个表节点之间不存在节点边,且间连表节点对中的两个表节点之间存在中间表节点;
第四确定单元,用于确定间连表节点对中的两个表节点之间的中间表节点的数量C,将间连表节点对中的两个表节点之间的连接代价确定为(C+1)*单位连接代价值;C为正整数,且C小于或等于A-2;
路由生成单元,用于根据连接代价为单位连接代价值的直连表节点对以及连接代价为(C+1)*单位连接代价值的间连表节点对,生成数据表关系图对应的路由表。
其中,直连表节点对包括第四表节点以及第五表节点;间连表节点对包括第六表节点以及第七表节点;
路由生成单元,包括:
第一生成子单元,用于生成由第四表节点连接至第五表节点的第一直连表节点对,将第五表节点确定为第一直连表节点对的下一跳表节点D;
第二生成子单元,用于生成由第五表节点连接至第四表节点的第二直连表节点对,将第四表节点确定为第二直连表节点对的下一跳表节点E;
第三生成子单元,用于生成由第六表节点引导至第七表节点的第一间连表节点对,在中间表节点中,获取与第六表节点存在节点边的第一中间表节点,将第一中间表节点确定为第一间连表节点对的下一跳表节点F;
第四生成子单元,用于生成由第七表节点连接至第六表节点的第二间连表节点对,在中间表节点中,获取与第七表节点存在节点边的第二中间表节点,将第二中间表节点确定为第二间连表节点对的下一跳表节点G;
第四生成子单元,还用于将连接代价为单位连接代价值且携带下一跳表节点D的第一直连表节点对、连接代价为单位连接代价值且携带下一跳表节点E的第二直连表节点对、连接代价为(C+1)*单位连接代价值且携带下一跳表节点F的第一间连表节点对,以及连接代价为(C+1)*单位连接代价值且携带下一跳表节点G的第二间连表节点对,确定为数据表关系图对应的路由表。
其中,第二获取模块,还包括:
更新处理单元,用于若获取到表节点动态信息,则根据表节点动态信息,对路由表进行更新处理,得到数据表关系图对应的更新路由表;
则第一确定模块,包括:
第五确定单元,用于根据更新路由表,确定数据表连接路径;数据表连接路径中的数据表均属于更新路由表包括的数据表。
其中,更新处理单元,包括:
关系获取子单元,用于若表节点动态信息用于指示在数据表关系图中添加表节点X,则在表节点动态信息中,获取与表节点X具有节点直连关系的表节点Y;表节点Y属于A个表节点;
第一创建子单元,用于创建包括表节点X以及表节点Y的新增直连表节点对,将新增直连表节点对的连接代价确定为单位连接代价值;
第二创建子单元,用于创建包括表节点X以及表节点U的新增间连表节点对;表节点U以及表节点Y之间存在节点连接关系,且在添加有表节点X的数据表关系图中,表节点X以及第一表节点集合中的表节点之间不存在节点边;表节点U属于A个表节点;第一表节点集合包括表节点U,与表节点U以及表节点Y之间的中间表节点;
价值确定子单元,用于将新增间连表节点对的连接代价确定为(V+1)*单位连接代价值;V为正整数,且V小于或等于A-1;由表节点Y连接至表节点U的连接代价等于V*单位连接代价值;
更新处理子单元,用于根据连接代价为单位连接代价值的新增直连表节点对,以及连接代价为(V+1)*单位连接代价值的新增间连表节点对,对路由表进行更新处理,得到数据表关系图对应的更新路由表。
其中,更新处理子单元,包括:
第四获取子单元,用于在路由表中,获取包括表节点Y且属于节点间连关系的间连表节点对,将获取到的间连表节点对确定为初始间连表节点对;在添加有表节点X的数据表关系图中,表节点X以及第二表节点集合中的至少一个表节点之间存在节点边;第二表节点集合包括初始间连表节点对中的两个表节点,以及初始间连表节点对中的中间表节点;
第一更新子单元,用于通过表节点X,对初始间连表节点对中的中间表节点进行更新处理,得到更新中间表节点;
第二更新子单元,用于若初始间连表节点对中的中间表节点的数量大于更新中间表节点的数量W,则将初始间连表节点对中的中间表节点更新为更新中间表节点;
第五确定子单元,用于将更新有更新中间表节点的初始间连表节点对的连接代价确定为(W+1)*单位连接代价值;
第三更新子单元,用于根据连接代价为单位连接代价值的新增直连表节点对、连接代价为(V+1)*单位连接代价值的新增间连表节点对,以及连接代价为(W+1)*单位连接代价值且更新有更新中间表节点的初始间连表节点对,对路由表进行更新处理,得到数据表关系图对应的更新路由表。
其中,数据处理装置,还包括:
字段选取模块,用于在A个数据表中分别选取候选度量字段以及候选维度字段;候选度量字段包括查询指标中的查询度量所属的度量字段;候选维度字段包括查询指标中的查询维度所属的维度字段;
模型创建模块,用于构建包括候选度量字段以及候选维度字段的指标模型,校验指标模型的模型状态;
接口发布模块,用于若模型状态为有效模型状态,则发布指标模型对应的查询接口;查询接口用于获取指标查询请求。
本申请一方面提供了一种计算机设备,包括:处理器、存储器、网络接口;
上述处理器与上述存储器、上述网络接口相连,其中,上述网络接口用于提供数据通信功能,上述存储器用于存储计算机程序,上述处理器用于调用上述计算机程序,以使得计算机设备执行本申请实施例中的方法。
本申请实施例一方面提供了一种计算机可读存储介质,上述计算机可读存储介质中存储有计算机程序,上述计算机程序适于由处理器加载并执行本申请实施例中的方法。
本申请实施例一方面提供了一种计算机程序产品,该计算机程序产品包括计算机程序,该计算机程序存储在计算机可读存储介质中;计算机设备的处理器从计算机可读存储介质读取该计算机程序,处理器执行该计算机程序,使得该计算机设备执行本申请实施例中的方法。
在本申请实施例中,在获取到携带查询指标的指标查询请求时,根据指标查询请求,计算机设备可以确定查询指标所属的目标数据表;进一步,获取基于数据表关系图所生成的路由表,其中,数据表关系图用于指示A个数据表之间的表关系;路由表用于指示A个数据表中,每两个具有表连接关系的数据表之间的连接代价;进一步,根据每两个具有表连接关系的数据表之间的连接代价,计算机设备可以确定数据表连接路径;其中,数据表连接路径用于表征连接目标数据表的路径;进一步,计算机设备生成数据表连接路径对应的查询代码,执行查询代码,进而在目标数据表中确定查询指标的指标值。上述可知,在查询指标值时,通过路由表中的每两个具有表连接关系的数据表之间的连接代价,本申请可以确定用于连接目标数据表的路径,即数据表连接路径,进而可以生成用于确定指标值的查询代码,明显地,采用本申请,无需手动输入查询代码,故可以降低指标值查询难度以及提升指标值查询效率。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种系统架构示意图;
图2是本申请实施例提供的一种数据处理方法的流程示意图一;
图3是本申请实施例提供的一种数据处理的场景示意图一;
图4是本申请实施例提供的一种数据处理的场景示意图二;
图5是本申请实施例提供的一种数据处理的场景示意图三;
图6是本申请实施例提供的一种数据处理方法的流程示意图二;
图7是本申请实施例提供的一种数据处理方法的流程示意图三;
图8是本申请实施例提供的一种数据处理方法的流程示意图四;
图9是本申请实施例提供的一种数据处理的场景示意图四;
图10是本申请实施例提供的一种数据处理方法的流程示意图五;
图11是本申请实施例提供的一种数据处理方法的流程示意图六;
图12a是本申请实施例提供的一种度量新增的场景示意图;
图12b是本申请实施例提供的一种维度新增的场景示意图;
图12c是本申请实施例提供的一种指标模型构建的场景示意图;
图13是本申请实施例提供的一种数据处理的场景示意图五;
图14是本申请实施例提供的一种数据处理装置的结构示意图;
图15是本申请实施例提供的一种计算机设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
为便于理解,首先对相关概念进行阐述。
人工智能(Artificial Intelligence,AI)是利用数字计算机或者数字计算机控制的机器模拟、延伸和扩展人的智能,感知环境、获取知识并使用知识获得最佳结果的理论、方法、技术及应用系统。换句话说,人工智能是计算机科学的一个综合技术,它企图了解智能的实质,并生产出一种新的能以人类智能相似的方式做出反应的智能机器。人工智能也就是研究各种智能机器的设计原理与实现方法,使机器具有感知、推理与决策的功能。
人工智能技术是一门综合学科,涉及领域广泛,既有硬件层面的技术也有软件层面的技术。人工智能基础技术一般包括如传感器、专用人工智能芯片、云计算、分布式存储、大数据处理技术、操作/交互系统、机电一体化等技术。人工智能软件技术主要包括计算机视觉技术、语音处理技术、自然语言处理技术以及机器学习/深度学习、自动驾驶、智慧交通等几大方向。
自然语言处理(Nature Language processing,NLP)是计算机科学领域与人工智能领域中的一个重要方向。它研究能实现人与计算机之间用自然语言进行有效通信的各种理论和方法。自然语言处理是一门融语言学、计算机科学、数学于一体的科学。因此,这一领域的研究将涉及自然语言,即人们日常使用的语言,所以它与语言学的研究有着密切的联系。自然语言处理技术通常包括文本处理、语义理解、机器翻译、机器人问答、知识图谱等技术。在本申请实施例中,自然语言处理可以应用于指标查询请求中查询指标的识别处理。
机器学习(Machine Learning,ML)是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、算法复杂度理论等多门学科。专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能。机器学习是人工智能的核心,是使计算机具有智能的根本途径,其应用遍及人工智能的各个领域。机器学习和深度学习通常包括人工神经网络、置信网络、强化学习、迁移学习、归纳学习、式教学习等技术。在本申请实施例中,机器学习可以用于生成路由表。
本申请实施例提供的方案涉及到人工智能的自然语言处理以及机器学习等,具体通过如下实施例进行说明。
请参见图1,图1是本申请实施例提供的一种系统架构示意图。如图1所示,该系统可以包括业务服务器100以及终端设备集群。终端设备集群可以包括:终端设备200a、终端设备200b、终端设备200c、…、终端设备200n,可以理解的是,上述系统可以包括一个或者多个终端设备,本申请不对终端设备的数量进行限制。
其中,终端设备集群之间可以存在通信连接,例如终端设备200a与终端设备200b之间存在通信连接,终端设备200a与终端设备200c之间存在通信连接。同时,终端设备集群中的任一终端设备可以与业务服务器100存在通信连接,例如终端设备200a与业务服务器100之间存在通信连接,其中,上述通信连接不限定连接方式,可以通过有线通信方式进行直接或间接地连接,也可以通过无线通信方式进行直接或间接地连接,还可以通过其它方式,本申请在此不做限制。
应当理解,如图1所示的终端设备集群中的每个终端设备均可以安装有应用客户端,当该应用客户端运行于各终端设备中时,可以分别与上述图1所示的业务服务器100进行数据交互,即上述的通信连接。其中,该应用客户端可以为医疗应用、视频应用、直播应用、社交应用、即时通信应用、游戏应用、音乐应用、购物应用、小说应用、支付应用、浏览器等具有加载查询指标功能的应用客户端。其中,该应用客户端可以为独立的客户端,也可以为集成在某客户端(例如,社交客户端、即时通信客户端以及多媒体客户端等)中的嵌入式子客户端,在此不做限定。以医疗应用为例,业务服务器100可以为包括医疗应用对应的后台服务器、数据处理服务器等多个服务器的集合。因此,每个终端设备均可以通过该医疗应用对应的应用客户端,与业务服务器100进行数据传输,例如每个终端设备均可以通过医疗应用的应用客户端,将针对医疗指标的指标查询请求上传至业务服务器100,进而业务服务器100可以基于携带查询指标的指标查询请求,下发查询指标的指标值至终端设备。
可以理解的是,在本申请的具体实施方式中,涉及到用户信息(例如指标查询请求)等相关的数据,当本申请中的实施例运用到具体产品或技术中时,需要获得用户许可或者同意,且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准。
为便于后续理解和说明,本申请实施例可以在图1所示的终端设备集群中选择一个终端设备作为目标终端设备,例如以终端设备200a作为目标终端设备。当接收到针对查询指标的指标查询指令时,终端设备200a可以通过应用客户端,发送针对查询指标的指标查询请求至业务服务器100。其中,查询指标是指待查询的指标,本申请实施例不对查询指标的指标类型进行限定,可以根据实际应用场景进行限定,包括但不限于医疗指标、图像处理指标、股票指标。
进一步,业务服务器100接收到终端设备200a发送的指标查询请求后,根据指标查询请求,可以确定查询指标所属的目标数据表;其中,数据表是一系列数据的集合,用来代表和存储数据对象之间的关系。进一步,业务服务器100获取基于数据表关系图所生成的路由表;其中,数据表关系图用于指示A个数据表之间的表关系,A个数据表包括查询指标所属的目标数据表;路由表用于指示A个数据表中,每两个具有表连接关系的数据表之间的连接代价。具有表连接关系的两个数据表之间的连接代价,用于表征连接该两个数据表的最短路径。
进一步,业务服务器100根据每两个具有表连接关系的数据表之间的连接代价,可以确定数据表连接路径;其中,数据表连接路径用于表征连接目标数据表的路径;数据表连接路径中的数据表均属于A个数据表。业务服务器100a生成数据表连接路径对应的查询代码,并执行查询代码,在目标数据表中确定查询指标的指标值。后续,业务服务器100将查询指标的指标值发送至终端设备200a。终端设备200a接收到业务服务器100发送的查询指标的指标值后,可以在其对应的屏幕上显示查询指标的指标值。
可选的,若终端设备200a的本地存储了A个数据表以及路由表,则终端设备200a可以在接收到针对查询指标的指标查询指令时,首先确定查询指标所属的目标数据表;获取本地存储的路由表,根据路由表中的每两个具有表连接关系的数据表之间的连接代价,终端设备200a可以确定用于连接目标数据表的数据表连接路径;后续过程与业务服务器100的处理过程相同,故此处不做赘述,请参见上文描述。其中,终端设备200a本地存储的A个数据表以及路由表,可以是由业务服务器100生成或更新后发送至终端设备200a的。
需要说明的是,上述业务服务器100、终端设备200a、终端设备200b、终端设备200c...、终端设备200n均可以为区块链网络中的区块链节点,全文叙述的数据(例如数据表关系图以及路由表)可以进行存储,存储方式可以是区块链节点根据数据生成区块,并将区块添加至区块链中进行存储的方式。
区块链是一种分布式数据存储、点对点传输、共识机制以及加密算法等计算机技术的新型应用模式,主要用于对数据按时间顺序进行整理,并加密成账本,使其不可被篡改和伪造,同时可进行数据的验证、存储和更新。区块链本质上是一个去中心化的数据库,该数据库中的每个节点均存储一条相同的区块链,区块链网络可以将节点区分为核心节点、数据节点以及轻节点。核心节点、数据节点以及轻节点共同组成区块链节点。其中核心节点负责区块链全网的共识,也就是说核心节点为区块链网络中的共识节点。
对于区块链网络中的交易数据被写入账本的流程可以为,区块链网络中的数据节点或轻节点获取到交易数据,将交易数据在区块链网络中传递(也就是节点以接力棒的方式进行传递),直到共识节点收到该交易数据,共识节点再将该交易数据打包进区块,对该区块执行共识,待共识完成后将该交易数据写入账本。此处以数据表关系图以及路由表示例交易数据,业务服务器100(区块链节点)在通过对交易数据的共识后,根据交易数据生成区块,将区块存储至区块链网络中;而对于交易数据(即数据表关系图以及路由表)的读取,则可以由区块链节点在区块链网络中,获取到包含该交易数据的区块,进一步,在区块中获取交易数据。
可以理解的是,本申请实施例提供的方法可以由计算机设备执行,计算机设备包括但不限于终端设备或业务服务器。其中,业务服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云数据库、云服务、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN、以及大数据和人工智能平台等基础云计算服务的云服务器。终端设备包括但不限于手机、电脑、智能语音交互设备、智能家电、车载终端、飞行器等。其中,终端设备和业务服务器可以通过有线或无线方式进行直接或间接地连接,本申请实施例在此不做限制。
进一步地,请参见图2,图2是本申请实施例提供的一种数据处理方法的流程示意图一。本申请实施例可应用于各种场景,包括但不限于云技术、人工智能、智慧交通、辅助驾驶等。该数据处理方法可以由业务服务器(例如,上述图1所示的业务服务器100)执行,也可以由终端设备(例如,上述图1所示的终端设备200a)执行,还可以由业务服务器和终端设备交互执行。为便于理解,本申请实施例以该方法由业务服务器执行为例进行说明。如图2所示,该数据处理方法至少可以包括以下步骤S101-步骤S104。
步骤S101,获取携带查询指标的指标查询请求,根据指标查询请求确定查询指标所属的目标数据表。
具体的,本申请实施例不对查询指标的应用领域进行限制,可以为任意一个行业中的指标,例如医疗行业、银行行业、人工智能行业、税务行业等。为了便于理解以及叙述,本申请实施例以医疗行业中的医疗指标示例,请一并参见图3,图3是本申请实施例提供的一种数据处理的场景示意图一。其中,查询对象20b与终端设备20a具有绑定关系,查询对象20b可以通过终端设备20a获取查询指标的指标值。如图3所示,终端设备20a可以显示指标查询页面201a,指标查询页面201a可以显示指标。其中,指标可以包括度量以及维度,度量是指用作统计的字段,一般为数值类型,比如“2022年各省市的基金花费”中的“基金花费”,比如图3中的“住院花费”、“门诊花费”、“总花费”。维度是指用作筛选或者分组的字段,不能进行累加等聚合计算,一般为字符串类型,比如“2022年各省市的基金花费”中的“省市”、“2022年”,比如图3中的“城市”、“医院”。
请再参见图3,查询对象20b将度量字段中的门诊花费字段选择为查询度量,将城市维度字段中的城市1选择为一个查询维度,将医院维度字段中的医院2选择为另一个查询维度,即本申请实施例以一个查询度量以及两个查询维度示例查询指标20c。进一步,终端设备20a生成包括查询指标20c(即图3所示例的<门诊花费,城市1,医院2>)的指标查询请求,将指标查询请求发送至业务服务器20d。
业务服务器20d在指标查询请求中获取查询指标20c;获取A个数据表20e,如图3所示例,A个数据表20e包括7个数据表,分别为数据表201e、数据表202e、数据表203e、数据表204e、数据表205e、数据表206e以及数据表207e;数据表201e包括门诊花费字段以及医院字段,数据表202e包括城市字段。通过A个数据表20e分别包含的字段,业务服务器20d可以确定查询指标20c所属的目标数据表20f,如图3所示例的数据表201e以及数据表202e。需要说明的是,本申请实施例示例门诊花费以及医院均属于数据表201e,城市属于数据表202e,实际应用场景中,不同的查询指标可能分别属于不同的数据表,例如门诊花费属于数据表201e,医院属于数据表203e,城市属于数据表202e。因此,在查询指标的数量为多个(图3以3个示例)时,目标数据表的总数量可能为一个,也可能为多个,但不超过查询指标的数量。
本申请实施例不对查询指标的数量进行限制,可以为一个或多个,若查询指标的数量为一个,则该查询指标仅包括一个度量,若查询指标的数量为多个,则该查询指标包括一个度量以及一个或多个维度。可以理解的是,若查询指标的数量为一个,或查询指标的数量为多个且多个查询指标分别所属的目标数据表均为同一个数据表,则通过遍历数据库或数据仓中的数据表,业务服务器20d可以获取查询指标的指标值。若查询指标的数量为多个,且多个查询指标分别所属的目标数据表的总数量为至少两个,则业务服务器20d可以通过下述步骤,获取查询指标的指标值。
可以理解的是,本申请实施例的附图(包括图3)中所展示的界面以及控件仅仅是一些可供参考的表现形式,在实际业务场景中,开发人员可以根据产品需求来进行相关设计,本申请实施例对涉及到的界面和控件的具体形式不做限制。
步骤S102,获取基于数据表关系图所生成的路由表;数据表关系图用于指示A个数据表之间的表关系;A个数据表包括目标数据表;A为大于1的正整数;路由表用于指示A个数据表中,每两个具有表连接关系的数据表之间的连接代价。
具体的,数据表关系图包括A个表节点;一个表节点用于表征一个数据表,A个表节点分别表征的数据表均属于A个数据表;A个表节点之间的节点关系用于表征A个数据表之间的表关系。
业务服务器可以获取A个数据表,实际应用中,A可以为1,若A为1,则所有的指标字段均属于一个数据表,此时,业务服务器通过一个数据表,就可以确定查询指标对应的指标值。本申请实施例设定A为大于1的正整数,请一并参见图4,图4是本申请实施例提供的一种数据处理的场景示意图二。图4示例A个数据表20e包括7个数据表,分别为数据表201e、数据表202e、数据表203e、数据表204e、数据表205e、数据表206e以及数据表207e。业务服务器可以获取基于每两个数据表之间的表关系所构建的数据表关系图20g,本申请实施例不对构建数据表关系图20g的过程进行描述。其中,数据表关系图20g中表节点K1用于表征数据表201e,表节点K2用于表征数据表202e,表节点K3用于表征数据表203e,表节点K4用于表征数据表204e,表节点K5用于表征数据表205e,表节点K6用于表征数据表206e,表节点K7用于表征数据表207e。
进一步,可以理解的是,实际应用时,A的取值可以非常大,即数据表的数量非常大,故在指标查询前,业务服务器可以基于数据表关系图20g,生成路由表20h,进而在获取到查询指标时,可以基于路由表20h,确定用于连接目标数据表的路径,即数据表连接路径。此处暂不对路由表20h的生成过程以及更新过程展开描述,请参见下文图8所对应的实施例中的描述。
请再参见图4,表节点对是一个有向对,例如表节点对(K1,K2)表征由表节点K1连接至表节点K2,又由于表节点K1以及表节点K2之间存在节点边,故表节点对(K1,K2)是直连表节点对,其连接代价为单位连接代价值,图4以1示例单位连接代价值,表节点对(K1,K2)的下一跳表节点是表节点K2。与之相反,表节点对(K2,K1)表征由表节点K2连接至表节点K1,又由于表节点K1以及表节点K2之间存在节点边,故表节点对(K2,K1)是直连表节点对,其连接代价为单位连接代价值,表节点对(K2,K1)的下一跳表节点是表节点K1。针对表节点对(K1,K2)以及表节点对(K1,K2),可以理解为火车从城市1a出发至城市2a的旅程,以及火车从城市2a出发至城市1a的旅程,两者旅程正好相反,但旅程长度相同。
又例如表节点对(K1,K3)表征由表节点K1连接至表节点K3,由于表节点K1以及表节点K3之间不存在节点边,但表节点K1以及表节点K2之间存在节点边,且表节点K2以及表节点K3之间存在节点边,故表节点K1以及表节点K3可以通过表节点K2间接连接,故表节点对(K1,K3)是间连表节点对,其连接代价为2*单位连接代价值,图4以1示例单位连接代价值,表节点对(K1,K3)的下一跳表节点是表节点K2。与之相反,表节点对(K3,K1)表征由表节点K3连接至表节点K1,同样的原理,表节点对(K3,K1)是间连表节点对,其连接代价为2*单位连接代价值,表节点对(K3,K1)的下一跳表节点是表节点K2。
路由表20h中的剩余表节点对的理解,可以参照上述表节点对(K1,K2)、表节点对(K2,K1)、表节点对(K1,K3)以及表节点对(K3,K1)的描述,故不一一进行赘述。
需要强调的是,表节点对之间的连接代价表明了两个表节点连接的最短代价,也可以连接为最短距离,例如由表节点K1连接至表节点K3,第一条连接路径可以是由表节点K1连接至表节点K2,再由表节点K2连接至表节点K3,对应的连接代价为2*单位连接代价值;可选的,第二条连接路径可以是由表节点K1连接至表节点K2,再由表节点K2连接至表节点K5,再由表节点K5连接至表节点K4,再由表节点K4连接至表节点K3,对应的连接代价为4*单位连接代价值。明显地,第一条连接路径优于第二条连接路径,且第一条连接路径是最优的连接路径,故表节点对(K1,K3)的连接代价是2*单位连接代价值(本申请实施例以1示例单位连接代价值),下一跳表节点是表节点K2。
步骤S103,根据每两个具有表连接关系的数据表之间的连接代价,确定数据表连接路径;数据表连接路径用于表征连接目标数据表的路径;数据表连接路径中的数据表均属于A个数据表。
具体的,数据表关系图包括A个表节点;一个表节点用于表征一个数据表,A个表节点分别表征的数据表均属于A个数据表;目标数据表的总数量为至少两个;获取查询指标中的查询度量,在至少两个目标数据表中,获取查询度量所属的数据表;在A个表节点中,将用于表征查询度量所属的数据表的表节点确定为第一表节点;根据每两个具有表连接关系的数据表之间的连接代价、第一表节点以及第一剩余表节点,确定数据表连接路径;第一剩余表节点用于表征剩余数据表;剩余数据表包括至少两个目标数据表中除了查询度量所属的数据表之外的数据表;第一剩余表节点属于A个表节点。
其中,根据每两个具有表连接关系的数据表之间的连接代价、第一表节点以及第一剩余表节点,确定数据表连接路径的具体过程可以包括:在第一剩余表节点中,获取与第一表节点连接且连接代价最小的第二表节点;若第二表节点等于第一剩余表节点,则根据由第一表节点连接至第二表节点的连接代价,确定数据表连接路径;由第一表节点连接至第二表节点的连接代价,属于每两个具有表连接关系的数据表之间的连接代价;若第一剩余表节点中存在除了第二表节点之外的第二剩余表节点,则将第一表节点以及第二表节点均添加至第一已处理表节点集合,根据第一已处理表节点集合、第二剩余表节点以及每两个具有表连接关系的数据表之间的连接代价,确定数据表连接路径。
其中,根据由第一表节点连接至第二表节点的连接代价,确定数据表连接路径的具体过程可以包括:若由第一表节点连接至第二表节点的连接代价等于单位连接代价值,则将由第一表节点连接至第二表节点的连接路径,确定为数据表连接路径;若由第一表节点连接至第二表节点的连接代价大于单位连接代价值,则在路由表中,获取针对第一表节点的下一跳表节点B;下一跳表节点B属于A个表节点,且下一跳表节点B不属于用于表征至少两个目标数据表的表节点;由第一表节点连接至下一跳表节点B的连接代价等于单位连接代价值;在每两个具有表连接关系的数据表之间的连接代价中,获取由下一跳表节点B连接至第二表节点的连接代价;根据由第一表节点连接至第二表节点的连接路径,以及由下一跳表节点B连接至第二表节点的连接代价,确定数据表连接路径。
可以理解的是,通过数据表关系图(实际上是数仓实体联系图,EntityRelationship Diagram,简称ER图),业务服务器也可以确定目标数据表的数据表连接路径,即基于数据表关系图找到一条关联所有目标数据表的最短路径,该问题可以转换为:已知一个A个表节点的无向图(A个数据表),存在M条边(A个数据表之间的连接关系),任意指定K个表节点(K-1个维度+一个度量,即指标的总数量),在每个表节点可以重复使用的情况下
1、是否存在一条经过K个表节点的路径;
2、找到一条经过K个表节点的最短路径;
3、边的权重,和做join(连接)的查询效率相关,比如表大小等。
虽然面临的场景为非连通图,但是有一定类似性,可以先参考普里姆(Prim)算法寻找最小子树的思想来拆解问题,因此可以提出以下假设:
1、为了简化问题,暂时不考虑两个表链接的效率问题,即M条边不存在权重;
2、两个数据表之间的关系可逆,如A left join B=B right join A。
请再参见图4中的数据表关系图20g,假设需要在数据表关系图20g中找到一条经过<K1,K4,K5,K7>的最短路径,可以通过如下步骤生成:
(1)定义度量所在表节点K1为起始表节点(即第一表节点),加入表节点K1到已处理的子树集合S=[K1],待处理集合E=[K4,K5,K7];
(2)遍历待处理集合E中的表节点,找到距离子树集合S最短的表节点K5,但是表节点K5需要经过表节点K2或者表节点K6,当前表节点K2和表节点K6的权重相同,故
(2.1)将表节点K2,表节点K6加入子树待定集合S’=[K2,K6];
(2.2)此时,子树集合S=[K1,K5],待处理集合E=[K4,K7],子树待定集合S’=[K2,K6];
(3)遍历待处理集合E中的表节点,找到距离子树集合S最短的表节点K4,此时子树集合S=[K1,K4,K5],待处理集合E=[K7],子树待定集合S’=[K2,K6];
(4)遍历待处理集合E中的表节点,找到距离子树集合S最短的表节点K7,此时,子树集合S=[K1,K4,K5,K7],待处理集合E=空集,子树待定集合S’=[K2,K6];
(5)子树待定集合S'中两个表节点权重相同,随机选择一个即可,如果选择表节点K2,那么子树集合S=[K1,K4,K5,K7,K2]。
从上面的步骤,可以看到需要处理的问题如下:
(a)由于两个表节点之间不一定存在节点边,例如数据表关系图中的表节点K1以及表节点K5之间不存在节点边,所以需要不断查询不存在节点边的两个表节点的最短距离;
(b)最短距离上可能存在其他表节点,在扩展子树的时候,需要将这些表节点按照既定规则(例如表数量级最小等规则)选择加入。
又考虑到如下因素:(a)数据表关系变化并不频繁;(b)数据表不会很多;故希望查询时,能尽量快的找到经过目标数据表的路径,因此本申请实施例可以记录任意两个具有表连接关系的数据表的最短路由表(即路由表),路由表的构建、更新、查询逻辑如下:
(a)初始化构建路由表,维护每个表节点与其他自身可达的表节点的最短距离(即连接代价)以及对应路径;除了记录最短距离以外,还需要记录表节点对的下一跳表节点;详细过程请参见下文图8所对应的实施例中的描述;
(b)在数据表关系图中加入新的表节点/节点边或删除表节点/节点边时,需要动态更新路由表;详细过程请参见下文图8所对应的实施例中的描述;
(c)查询指标值时,通过查询路由表,可以快速计算是否联通和可能的最短路径。
基于上述,当具体进行指标查询时,本申请实施例可以通过路由表和下一跳节点,找到最短路径的连接方式。请一并参见图5,图5是本申请实施例提供的一种数据处理的场景示意图三。如图5所示例查询指标包括门诊花费、医院以及城市,其中,门诊花费以及医院均属于表节点K1所表征的数据表,城市属于表节点K2所表征的数据表,且度量算法为对门诊花费进行求总和。业务服务器确定目标数据表包括表节点K1所表征的数据表以及表节点K2所表征的数据表,然后查询表节点关系记录,具体为通过路由表20i查询,其中,路由表20i中的表节点对、连接代价以及下一跳表节点的含义,请参见上文针对路由表20h的描述,此处不进行赘述。通过路由表20i,若目标数据表中,存在两个数据表不存在记录,则连通性检测失败。若目标数据表中,任意两个表节点均存在记录,则连通性检测通过,此时,业务服务器通过路由表20i,计算最小树,由于图5所示例的度量(即门诊花费)属于表节点K1所表征的数据表,故业务服务器将表节点K1确定为第一表节点,此时,第一剩余表节点(等同于图5中的待检测表节点)包括表节点K2,查询代码为K1。进一步,业务服务器在第一剩余表节点中,获取与第一表节点连接且连接代价最小的第二表节点,明显地,在图5中,第二表节点等于第一剩余表节点,且表节点K1以及表节点K2之间的连接代价为单位连接代价值(图5以1示例),故由表节点K1连接至表节点K2的连接路径,确定为数据表连接路径。
步骤S104,生成数据表连接路径对应的查询代码,执行查询代码,在目标数据表中确定查询指标的指标值。
具体的,获取数据库引擎,在查询优化策略集合中,获取与数据库引擎相适配的查询优化策略,将获取到的查询优化策略确定为目标查询优化策略;将数据表连接路径作为目标查询优化策略的输入数据,执行目标查询优化策略,对数据表连接路径进行优化处理,得到优化查询代码;执行优化查询代码。
在实际数据库的查询中,有很多影响性能的关键因素,比如K1 left join K2并不等价于K2 right join K1的效率,可能受限于大小表的策略。对此,本申请实施例在最短路径(即数据表连接路径)确认后,对最短路径进行进一步优化,提升查询效率。优化策略可以根据本系统进行迭代,本申请实施例以大小表查询策略为例说明优化策略,请一并参见图6,图6是本申请实施例提供的一种数据处理方法的流程示意图二。如图6所示,优化数据表连接路径的过程包括如下步骤S1041-步骤S1050。步骤S1041,生成数据表连接路径,该步骤的具体实现过程请参见上文步骤S103。步骤S1042,获取目标查询优化策略;为了便于理解以及叙述,图7以大表居左示例,即数量级大的数据表居左侧。步骤S1043,查询新增数据表的大小;以已有数据表为表节点K1所表征的数据表,新增数据表为表节点K2所表征的数据表示例说明,业务服务器通过表节点K2所表征的数据表的元数据,查询表节点K2所表征的数据表的大小。步骤S1044,新增数据表是否比已有数据表数量级大;业务服务器对已有数据表的数量级以及新增数据表的数量级进行对比,若已有数据表的数量级大于或等于新增数据表的数量级,则执行步骤S1046,若已有数据表的数量级小于新增数据表的数量级,则执行步骤S1045。步骤S1045,新增表节点右连接已有表节点;步骤S1046,已有表节点左连接新增表节点。步骤S1047,所有表节点是都完成处理;即业务服务器是否将所有的目标数据表连接完毕,若已连接所有的目标数据表,则执行步骤S1048,若存在部分目标数据表未连接,则执行步骤S1042。步骤S1049,更新数仓元数据;系统维护指标所用表的元数据,记录数据表的大小,为了保证数据准确性,会进行周期性的查询更新。步骤S1050,生成/更新数据表的元数据。其中,步骤S1049-步骤S1050是周期性步骤,本申请实施例不限定步骤S1049-步骤S1050与步骤S1041的执行顺序。
通过图6,可以看出,本申请示例中的查询优化策略可以随着项目实践进行扩展,适配优化查询策略,其充当了原有其他指标平台方案中数据工程师的角色,将数据开发中最优实践落地为可执行的策略。
请一并参见图7,图7是本申请实施例提供的一种数据处理方法的流程示意图三。完整的指标查询链路流程可以包括如下步骤S1-步骤S6。步骤S1,获取查询指标;为了便于理解,图7示例查询指标的数量为3,分别为一个查询度量以及两个查询维度(即图7中的维度1以及维度2)。步骤S2,确定目标数据表;业务服务器确定度量所属的数据表,图7以数据表1示例,确定维度1所属的数据表,图7以数据表2示例,确定维度3所属的数据表,图7以数据表3示例。步骤S3,生成数据表连接路径;本申请实施例核心需要解决的问题是找到一条目标数据表的连接路径,使指标查询所有的数据表能够相互连接成一张宽表或临时表从而进行计算,即可以等价为:如何基于已有的数仓ER关系图(数据表关系图),找到一条关联所有目标数据表的路径。考虑到查询效率所经过的数据表越少越好,所以这个问题可以等价为:如何基于已有的数仓ER关系图,找到一条关联所有目标数据表的查询代价最短的路径。步骤S4,执行目标查询优化策略。其中,宽表通常是指同一业务主题相关的指标、维度、属性关联在一起的一张数据库表,一般字段较多。临时表是指数据库中临时存储结构化查询语言数据库(Structured Query Language,简称SQL)计算中间结果数据的表。步骤S5,生成优化查询代码。步骤S6,执行优化查询代码,取查询指标的指标值。
可选的,统计目标数据表的历史查询次数,若历史查询次数超过查询次数阈值,则基于目标数据表的历史查询次数和查询代码构建常用中间表,定期自动计算存储指标结果,对满足条件的指标查询进行查询加速。
为了追寻轻量化部署,以上方法没有部署离线工作流进行数据同步和抽取-转换-加载(描述数据采集过程,Extract-Transform-Load,简称ETL),查询效率受限引擎特性。比如底层数据存储在数据仓库(hive库)时,无论怎么优化查询都没办法做到快速的查询,所以本申请实施例引入常用中间表,综合历史查询,将常用查询的数据表进行聚类合并,同步到适合即席查询的OLAP引擎,如Clickhouse中,通过引入常用中间表加速查询。其中,即席查询是指查询对象根据自己的需求,灵活的选择查询条件,系统能够根据查询对象的选择生成相应的统计报表。OLAP全称是Online Analytical Processing,和传统关系型数据库不同,其侧重数据查询分析,支持复杂的分析操作,侧重决策支持,并且提供直观易懂的查询结果。
上述可知,在查询指标值时,通过路由表中的每两个具有表连接关系的数据表之间的连接代价,本申请可以确定用于连接目标数据表的路径,即数据表连接路径,进而可以生成用于确定指标值的查询代码,明显地,采用本申请,无需手动输入查询代码,故可以降低指标值查询难度以及提升指标值查询效率。
进一步地,请参见图8,图8是本申请实施例提供的一种数据处理方法的流程示意图四。如图8所示,该数据处理过程可以包括以下步骤S1021-步骤S1025,且步骤S1021-步骤S1025为图2所对应实施例中步骤S102的一个具体实施例。
步骤S1021,在A个表节点之间的节点关系中,获取属于节点直连关系的直连表节点对,将直连表节点对中的两个表节点之间的连接代价确定为单位连接代价值;直连表节点对中的两个表节点之间存在节点边。
具体的,本申请实施例中的步骤S1021-步骤S1024主要描述通过数据表关系图生成路由表,步骤S1025主要描述路由表的更新。
在数据表关系图中,存在节点边的两个表节点可以构建属于节点直连关系的直连表节点对,请再参见图5,在数据表关系图20g中,表节点K1以及表节点K2之间存在节点边,表节点K1以及表节点K6之间存在节点边,表节点K3以及表节点K2之间存在节点边,表节点K5以及表节点K2之间存在节点边,表节点K3以及表节点K4之间存在节点边,表节点K3以及表节点K7之间存在节点边,表节点K4以及表节点K5之间存在节点边,表节点K4以及表节点K7之间存在节点边,表节点K5以及表节点K6之间存在节点边,故业务服务器可以生成18对直连表节点对,包括路由表中的表节点对(K1,K2)以及表节点对(K2,K1)。
步骤S1022,在A个表节点之间的节点关系中,获取属于节点间连关系的间连表节点对;间连表节点对中的两个表节点之间不存在节点边,且间连表节点对中的两个表节点之间存在中间表节点。
具体的,在数据表关系图中,不存在节点边但通过其他表节点(可以称为中间表节点)连接的两个表节点,可以构建属于节点间连关系的间连表节点对。请再参见图5,在数据表关系图20g中,表节点K1以及表节点K5之间不存在节点边,但可以通过表节点K2间接连接,故表节点K1以及表节点K5可以构建间连表节点对(K1,K5),以及间连表节点对(K5,K1),两者的中间表节点均为表节点K2。剩余的间连表节点对的获取,可以参见间连表节点对(K5,K1)的描述,此处不一一进行赘述。
步骤S1023,确定间连表节点对中的两个表节点之间的中间表节点的数量C,将间连表节点对中的两个表节点之间的连接代价确定为(C+1)*单位连接代价值;C为正整数,且C小于或等于A-2。
具体的,请再参见图5,本步骤以间连表节点对(K5,K1)示例叙述,剩余的间连表节点对的连接代价,请参见下面的描述,不一一进行赘述。明显地,间连表节点对(K5,K1)的中间表节点只有表节点K2,故间连表节点对(K5,K1)的连接代价为2*单位连接代价值,图5以1示例单位连接代价值。
步骤S1024,根据连接代价为单位连接代价值的直连表节点对以及连接代价为(C+1)*单位连接代价值的间连表节点对,生成数据表关系图对应的路由表。
具体的,直连表节点对包括第四表节点以及第五表节点;间连表节点对包括第六表节点以及第七表节点;生成由第四表节点连接至第五表节点的第一直连表节点对,将第五表节点确定为第一直连表节点对的下一跳表节点D;生成由第五表节点连接至第四表节点的第二直连表节点对,将第四表节点确定为第二直连表节点对的下一跳表节点E;生成由第六表节点引导至第七表节点的第一间连表节点对,在中间表节点中,获取与第六表节点存在节点边的第一中间表节点,将第一中间表节点确定为第一间连表节点对的下一跳表节点F;生成由第七表节点连接至第六表节点的第二间连表节点对,在中间表节点中,获取与第七表节点存在节点边的第二中间表节点,将第二中间表节点确定为第二间连表节点对的下一跳表节点G;将连接代价为单位连接代价值且携带下一跳表节点D的第一直连表节点对、连接代价为单位连接代价值且携带下一跳表节点E的第二直连表节点对、连接代价为(C+1)*单位连接代价值且携带下一跳表节点F的第一间连表节点对,以及连接代价为(C+1)*单位连接代价值且携带下一跳表节点G的第二间连表节点对,确定为数据表关系图对应的路由表。
步骤S1025,若获取到表节点动态信息,则根据表节点动态信息,对路由表进行更新处理,得到数据表关系图对应的更新路由表。
具体的,根据更新路由表,确定数据表连接路径;数据表连接路径中的数据表均属于更新路由表包括的数据表。
具体的,若表节点动态信息用于指示在数据表关系图中添加表节点X,则在表节点动态信息中,获取与表节点X具有节点直连关系的表节点Y;表节点Y属于A个表节点;创建包括表节点X以及表节点Y的新增直连表节点对,将新增直连表节点对的连接代价确定为单位连接代价值;创建包括表节点X以及表节点U的新增间连表节点对;表节点U以及表节点Y之间存在节点连接关系,且在添加有表节点X的数据表关系图中,表节点X以及第一表节点集合中的表节点之间不存在节点边;表节点U属于A个表节点;第一表节点集合包括表节点U,与表节点U以及表节点Y之间的中间表节点;将新增间连表节点对的连接代价确定为(V+1)*单位连接代价值;V为正整数,且V小于或等于A-1;由表节点Y连接至表节点U的连接代价等于V*单位连接代价值;根据连接代价为单位连接代价值的新增直连表节点对,以及连接代价为(V+1)*单位连接代价值的新增间连表节点对,对路由表进行更新处理,得到数据表关系图对应的更新路由表。
其中,根据连接代价为单位连接代价值的新增直连表节点对,以及连接代价为(V+1)*单位连接代价值的新增间连表节点对,对路由表进行更新处理,得到数据表关系图对应的更新路由表的具体过程可以包括:在路由表中,获取包括表节点Y且属于节点间连关系的间连表节点对,将获取到的间连表节点对确定为初始间连表节点对;在添加有表节点X的数据表关系图中,表节点X以及第二表节点集合中的至少一个表节点之间存在节点边;第二表节点集合包括初始间连表节点对中的两个表节点,以及初始间连表节点对中的中间表节点;通过表节点X,对初始间连表节点对中的中间表节点进行更新处理,得到更新中间表节点;若初始间连表节点对中的中间表节点的数量大于更新中间表节点的数量W,则将初始间连表节点对中的中间表节点更新为更新中间表节点;将更新有更新中间表节点的初始间连表节点对的连接代价确定为(W+1)*单位连接代价值;根据连接代价为单位连接代价值的新增直连表节点对、连接代价为(V+1)*单位连接代价值的新增间连表节点对,以及连接代价为(W+1)*单位连接代价值且更新有更新中间表节点的初始间连表节点对,对路由表进行更新处理,得到数据表关系图对应的更新路由表。
请一并参见图9,图9是本申请实施例提供的一种数据处理的场景示意图四。如图9所示,表节点动态信息80c可以为“新增数据表8,数据表8直连的数据表:数据表1以及数据表7”,此时,表节点动态信息80c用于指示在数据表关系图80a中添加表节点8,且数据表1以及数据表7均与数据表8直连,故业务服务器可以为数据表8生成表节点K8。其中,数据表关系图80a中的表节点K1用于表征数据表1,表节点K7用于表征数据表7,其他表节点的含义,请参见表节点K7的描述,不一一进行赘述。
业务服务器基于表节点动态信息80c,可以对数据表关系图80a进行更新处理,得到数据表关系图801a,即在数据表关系图80a中增加表节点K8,且在表节点K8以及表节点K1之间添加节点边,在表节点K8以及表节点K7之间添加节点边。进一步,业务服务器对基于数据表关系图80a所生成的路由表进行更新处理,得到数据表关系图801a对应的更新路由表。首先,业务服务器可以创建包括表节点K8的新增直连表节点对801b,可以理解的是,新增直连表节点对801b针对基于数据表关系图80a所生成的路由表是新增的,因为数据表关系图80a中不存在数据表K8。关于新增直连表节点对801b的含义,请参见上文图5中关于路由表20h中表节点对的描述,此处不进行赘述。
进一步,业务服务器可以创建包括表节点K8的新增间连表节点对802b,同样地,新增间连表节点对802b针对基于数据表关系图80a所生成的路由表是新增的,因为数据表关系图80a中不存在数据表K8。关于新增间连表节点对802b的含义,请参见上文图5中关于路由表20h中表节点对的描述,此处不进行赘述。
进一步,业务服务器获取基于数据表关系图80a所生成的路由表中的初始间连表节点对,如图9中所示例的初始间连表节点对803b,其包括表节点对(K1,K7)以及表节点对(K7,K1),明显地,在数据表关系图80a中,表节点对(K1,K7)的中间表节点包括表节点K2以及表节点K3,但在数据表关系图801a中,表节点对(K1,K7)的中间表节点只有表节点K8,故可以对表节点对(K1,K7)进行更新处理,得到如图9所示例的初始间连表节点对804b。其中,表节点对(K7,K1)的处理过程,与表节点对(K1,K7)的处理过程相同,故不进行赘述。
可选的,业务服务器可以基于表节点动态信息,对数据表关系图进行更新处理,得到更新后的数据表关系图,然后基于更新后的数据表关系图,生成更新路由表。可以理解的是,基于更新后的数据表关系图,生成更新路由表的过程,与基于数据表关系图,生成路由表的过程相同。
上述可知,本申请实施例为了提高指标查询效率,基于数据表关系图生成路由表,故在获取到查询指标时,可以基于生成的路由表生成数据表连接路径,故可以避免每次获取到查询指标时,通过数据表关系图去生成数据表连接路径。
进一步地,请参见图10,图10是本申请实施例提供的一种数据处理方法的流程示意图五。如图10所示,该数据处理过程可以包括以下步骤S1031-步骤S1033,且步骤S1031-步骤S1033为图2所对应实施例中步骤S103的一个具体实施例。
步骤S1031,在第二剩余表节点中,获取与第一已处理表节点集合中的表节点连接且连接代价最小的第三表节点。
步骤S1032,若第三表节点等于第二剩余表节点,则根据由第一表节点连接至第二表节点的连接代价,以及由第一已处理表节点集合中的表节点连接至第三表节点的连接代价,确定数据表连接路径;由第一已处理表节点集合中的表节点连接至第三表节点的连接代价,属于每两个具有表连接关系的数据表之间的连接代价。
具体的,根据由第一表节点连接至第二表节点的连接代价,确定由第一表节点连接至第二表节点的连接路径;若由第一表节点连接至第三表节点的连接代价,小于或等于由第二表节点连接至第三表节点的连接代价,则根据由第一表节点连接至第三表节点的连接代价,确定由第一表节点连接至第三表节点的连接路径,将由第一表节点连接至第二表节点的连接路径,与,由第一表节点连接至第三表节点的连接路径,确定为数据表连接路径;若由第一表节点连接至第三表节点的连接代价,大于由第二表节点连接至第三表节点的连接代价,则根据由第二表节点连接至第三表节点的连接代价,确定由第一表节点连接至第三表节点的连接路径,将由第一表节点连接至第二表节点的连接路径,与,由第一表节点连接至第三表节点的连接路径,确定为数据表连接路径。
步骤S1033,若第二剩余表节点中存在除了第三表节点之外的第三剩余表节点,则将第三表节点添加至第一已处理表节点集合,得到第二已处理表节点集合,根据第二已处理表节点集合、第三剩余表节点以及每两个具有表连接关系的数据表之间的连接代价,确定数据表连接路径。
其中,步骤S1031-步骤S1033的具体实现过程,请参见上文图2所对应的实施例中的步骤S103,此处不进行赘述。
上述可知,在查询指标值时,通过路由表中的每两个具有表连接关系的数据表之间的连接代价,本申请可以确定用于连接目标数据表的路径,即数据表连接路径,进而可以生成用于确定指标值的查询代码,明显地,采用本申请,无需手动输入查询代码,故可以降低指标值查询难度以及提升指标值查询效率。
当前存在行业指标多、重复率高、从业人员数据工程能力较为有限的问题,故本申请实施例提出一种基于行业场景的指标平台建设方案。传统的指标管理平台,平台构建对象至下而上创建指标,一般会经历五个阶段:1)、准备原始数据;2)、数据表加工;3)、指标口径开发;4)、指标优化;5)、指标输出使用。本申请实施例先构建表-维度-度量的图关系,在查询对象仅需明确步骤5,即指标输出时,平台向下递推输入,通过图算法实时动态计算一条2-3开发步骤的最优可达路径,并根据查询策略优化知识库,即步骤4),完成指标查询效率的优化,实现了指标的动态生成,精简开发步骤。
在保证了指标的可用性和高效的同时,本申请实施例还可以解决传统指标平台对查询对象SQL门槛要求高,计算场景有限且链路复杂,系统性能优化难度大,运维成本高等问题;同时根据数据表关系图,可以很方便的计算指标间的相似性和插入新的维度和度量,也解决了传统指标平台中指标膨胀的问题,让指标的维护和扩展更加简洁。
进一步地,请参见图11,图11是本申请实施例提供的一种数据处理方法的流程示意图六。该数据处理方法可以由业务服务器(例如,上述图1所示的业务服务器100)执行,也可以由终端设备(例如,上述图1所示的终端设备200a)执行,还可以由业务服务器和终端设备交互执行。为便于理解,本申请实施例以该方法由业务服务器执行为例进行说明。如图11所示,该数据处理方法至少可以包括以下步骤S201-步骤S207。
步骤S201,在A个数据表中分别选取候选度量字段以及候选维度字段;候选度量字段包括查询指标中的查询度量所属的度量字段;候选维度字段包括查询指标中的查询维度所属的维度字段。
具体的,元数据准备,即定义度量和维度,主要是选取数据表中的字段作为候选集。请一并参见图12a,图12a是本申请实施例提供的一种度量新增的场景示意图。如图12a所示,度量名称是平台构建对象输入的,指标显示的内容,比如平均交费金额;数据源以及数据表是度量的来源,度量算法包括求和、平均值等;字段是指用底层数据表里的哪个字段进行计算,比如问诊表里的金额字段,可以选择已有的字段或者对已有的字段进行简单的加工。请一并参见图12b,图12b是本申请实施例提供的一种维度新增的场景示意图。如图12b所示,若平台构建对象选择了XX数据库中的AAA数据表,则数据表AAA可以提供维度字段,图12b以维度1、维度2以及维度3示例。
步骤S202,构建包括候选度量字段以及候选维度字段的指标模型,校验指标模型的模型状态。
具体的,构建指标模型,即定义维度和度量的组合,由于平台构建对象构建指标模型的时候,是从业务角度出发,仅了解想为度量搭配维度D1、维度D2、维度D3等,并不关心底层的数据表的关联加工逻辑构建,本申请实施例可以提供模型校验功能,保证该组合是有效的。请一并参见图12c,图12c是本申请实施例提供的一种指标模型构建的场景示意图。如图12c所示,指标模型名称是平台构建对象输入的,比如医嘱指标模型;度量选择是指选择图12a中所输入的度量名称,维度选择是指选择图12b中所选择的维度;通过触发校验控件,可以校验图12c中输入的指标模型是否有效。
步骤S203,若模型状态为有效模型状态,则发布指标模型对应的查询接口;查询接口用于获取指标查询请求。
具体的,发布指标服务(即程序接口),在发布应用程序编程接口(ApplicationProgramming Interface,简称:API)或者固化表第三方使用时,可能存在限定维度条件比如城市,或者查看某个分组统计结果,如每个科室的就诊情况等需求,此时可以配置维度条件实现。
结合行业痛点,本申请实施例核心设计目标是:1、尽量省略SQL,从行业从业者的角度出发,利用对于行业了解完成指标口径的定义,平台构建对象只用关注需要产出的度量和需要使用的维度;2、维度和度量的语义化组合;3、可轻量级部署使用。
要完成以上目标,核心的技术难点在于维度和度量的灵活组合,本申请通过抽象总结已有的数仓开发经验和能力,通过图算法自动完成前置数据加工和查询逻辑,减少人为干预和操作,达到提高系统易用性、解决指标膨胀和重复建设的目的。本申请实施例的有效收益可以归纳为:
(a)降低了行业从业人员配置的门槛,要求从传统的数仓开发人员降低到对业务需求有了解的数据分析对象即可。
(b)有效提高了资源使用率,降低指标系统维护难度。不需要维护复杂的ETL任务和重复建设数仓表,系统将通过图算法自行选择最佳查询计划,决定数仓表加工处理逻辑。
(c)有效解决了指标膨胀问题,通过度量和维度的组合,可以有效提高指标覆盖范围,比如通过组合维度-医院和度量-人均花费,构建了医院的人均门诊花费,查询时限制医院为XXX医院,即可完成XXX医院的人均花费计算,后续,限制医院为SSS医院,即可完成SSS医院的人均花费计算,而无需重新构建指标。
步骤S204,获取携带查询指标的指标查询请求,根据指标查询请求确定查询指标所属的目标数据表。
步骤S205,获取基于数据表关系图所生成的路由表;数据表关系图用于指示A个数据表之间的表关系;A个数据表包括目标数据表;A为大于1的正整数;路由表用于指示A个数据表中,每两个具有表连接关系的数据表之间的连接代价。
步骤S206,根据每两个具有表连接关系的数据表之间的连接代价,确定数据表连接路径;数据表连接路径用于表征连接目标数据表的路径;数据表连接路径中的数据表均属于A个数据表。
步骤S207,生成数据表连接路径对应的查询代码,执行查询代码,在目标数据表中确定查询指标的指标值。
其中,步骤S204-步骤S207的具体实现过程,请参见上文图2所对应的实施例中的步骤S101-步骤S104,此处不进行赘述。
本申请实施例所提出的方法可以分为四个模块,四个模块的功能如下:
(1)、维度和度量候选集生成模块:该模块记录对数据库字段的定义,作为后续指标模型的输入。请一并参见图13,图13是本申请实施例提供的一种数据处理的场景示意图五。如图13所示,数据表901a包括度量m1、维度d11以及维度d12,数据表902a包括度量m2以及维度d23;数据表903a包括度量m3以及维度d31。平台构建对象通过选择维度和度量,生成维度和度量候选集90b,其包括度量m1、维度d11、维度d12、度量m2、维度d23、度量m3以及维度d31。
(2)、指标模型构建模块:定义维度和度量的可能组合方式。请参见参见图13,指标模型901c定义了度量m1、维度d12以及维度d23的组合,模型902c定义了度量m2、维度d12以及维度d31的组合。
(3、指标查询模块:查询真实用到的维度,指标模型中定义的维度并不会在每次查询中都使用,比如m2支持维度d12以及维度d31,但可能存在单次查询仅用到了维度d12,如图13中的指标查询请求90d,此时为了尽可能提升查询效率,仅将m2以及d12作为查询策略选择生成模块的输入,进行最短路径计算。
(4)、查询策略选择生成模块:是核心模块,计算维度和度量之间的最短可连接路径,例如图13中确定表节点1(用于表征数据表901a)以及表节点2(用于表征数据表902a)的最短连接路径,即数据表连接路径。同时综合研发人员对数据开发的经验优化查询口径(即查询代码),生成最佳的查询代码。
上述可知,在查询指标值时,通过路由表中的每两个具有表连接关系的数据表之间的连接代价,本申请可以确定用于连接目标数据表的路径,即数据表连接路径,进而可以生成用于确定指标值的查询代码,明显地,采用本申请,无需手动输入查询代码,故可以降低指标值查询难度以及提升指标值查询效率。
进一步地,请参见图14,图14是本申请实施例提供的一种数据处理装置的结构示意图。上述数据处理装置1可以是运行于计算机设备中的一个计算机程序(包括程序代码),例如该数据处理装置1为一个应用软件;数据处理装置1可以用于执行本申请实施例提供的方法中的相应步骤。如图14所示,该数据处理装置1可以包括:第一获取模块11、第二获取模块12、第一确定模块13以及第二确定模块14。
第一获取模块11,用于获取携带查询指标的指标查询请求,根据指标查询请求确定查询指标所属的目标数据表;
第二获取模块12,用于获取基于数据表关系图所生成的路由表;数据表关系图用于指示A个数据表之间的表关系;A个数据表包括目标数据表;A为大于1的正整数;路由表用于指示A个数据表中,每两个具有表连接关系的数据表之间的连接代价;
第一确定模块13,用于根据每两个具有表连接关系的数据表之间的连接代价,确定数据表连接路径;数据表连接路径用于表征连接目标数据表的路径;数据表连接路径中的数据表均属于A个数据表;
第二确定模块14,用于生成数据表连接路径对应的查询代码,执行查询代码,在目标数据表中确定查询指标的指标值。
其中,第一获取模块11、第二获取模块12、第一确定模块13以及第二确定模块14的具体功能实现方式,可以参见上述图2对应实施例中的步骤S101-步骤S104,这里不再进行赘述。
再请参见图14,数据表关系图包括A个表节点;一个表节点用于表征一个数据表,A个表节点分别表征的数据表均属于A个数据表;目标数据表的总数量为至少两个;
第一确定模块13可以包括:第一获取单元131、第一确定单元132以及第二确定单元133。
第一获取单元131,用于获取查询指标中的查询度量,在至少两个目标数据表中,获取查询度量所属的数据表;
第一确定单元132,用于在A个表节点中,将用于表征查询度量所属的数据表的表节点确定为第一表节点;
第二确定单元133,用于根据每两个具有表连接关系的数据表之间的连接代价、第一表节点以及第一剩余表节点,确定数据表连接路径;第一剩余表节点用于表征剩余数据表;剩余数据表包括至少两个目标数据表中除了查询度量所属的数据表之外的数据表;第一剩余表节点属于A个表节点。
其中,第一获取单元131、第一确定单元132以及第二确定单元133的具体功能实现方式,可以参见上述图2对应实施例中的步骤S103,这里不再进行赘述。
再请参见图14,第二确定单元133可以包括:节点获取子单元1331、路径确定子单元1332以及节点添加子单元1333。
节点获取子单元1331,用于在第一剩余表节点中,获取与第一表节点连接且连接代价最小的第二表节点;
路径确定子单元1332,用于若第二表节点等于第一剩余表节点,则根据由第一表节点连接至第二表节点的连接代价,确定数据表连接路径;由第一表节点连接至第二表节点的连接代价,属于每两个具有表连接关系的数据表之间的连接代价;
节点添加子单元1333,用于若第一剩余表节点中存在除了第二表节点之外的第二剩余表节点,则将第一表节点以及第二表节点均添加至第一已处理表节点集合,根据第一已处理表节点集合、第二剩余表节点以及每两个具有表连接关系的数据表之间的连接代价,确定数据表连接路径。
其中,节点获取子单元1331、路径确定子单元1332以及节点添加子单元1333的具体功能实现方式,可以参见上述图2对应实施例中的步骤S103,这里不再进行赘述。
再请参见图14,路径确定子单元1332可以包括:第一确定子单元13321、第一获取子单元13322、第二获取子单元13323以及第二确定子单元13324。
第一确定子单元13321,用于若由第一表节点连接至第二表节点的连接代价等于单位连接代价值,则将由第一表节点连接至第二表节点的连接路径,确定为数据表连接路径;
第一获取子单元13322,用于若由第一表节点连接至第二表节点的连接代价大于单位连接代价值,则在路由表中,获取针对第一表节点的下一跳表节点B;下一跳表节点B属于A个表节点,且下一跳表节点B不属于用于表征至少两个目标数据表的表节点;由第一表节点连接至下一跳表节点B的连接代价等于单位连接代价值;
第二获取子单元13323,用于在每两个具有表连接关系的数据表之间的连接代价中,获取由下一跳表节点B连接至第二表节点的连接代价;
第二确定子单元13324,用于根据由第一表节点连接至第二表节点的连接路径,以及由下一跳表节点B连接至第二表节点的连接代价,确定数据表连接路径。
其中,第一确定子单元13321、第一获取子单元13322、第二获取子单元13323以及第二确定子单元13324的具体功能实现方式,可以参见上述图2对应实施例中的步骤S103,这里不再进行赘述。
再请参见图14,节点添加子单元1333可以包括:第三获取子单元13331、第三确定子单元13332以及第四确定子单元13333。
第三获取子单元13331,用于在第二剩余表节点中,获取与第一已处理表节点集合中的表节点连接且连接代价最小的第三表节点;
第三确定子单元13332,用于若第三表节点等于第二剩余表节点,则根据由第一表节点连接至第二表节点的连接代价,以及由第一已处理表节点集合中的表节点连接至第三表节点的连接代价,确定数据表连接路径;由第一已处理表节点集合中的表节点连接至第三表节点的连接代价,属于每两个具有表连接关系的数据表之间的连接代价;
第四确定子单元13333,用于若第二剩余表节点中存在除了第三表节点之外的第三剩余表节点,则将第三表节点添加至第一已处理表节点集合,得到第二已处理表节点集合,根据第二已处理表节点集合、第三剩余表节点以及每两个具有表连接关系的数据表之间的连接代价,确定数据表连接路径。
其中,第三获取子单元13331、第三确定子单元13332以及第四确定子单元13333的具体功能实现方式,可以参见上述图10对应实施例中的步骤S1031-步骤S1033,这里不再进行赘述。
再请参见图14,第三确定子单元13332,具体用于根据由第一表节点连接至第二表节点的连接代价,确定由第一表节点连接至第二表节点的连接路径;
第三确定子单元13332,还具体用于若由第一表节点连接至第三表节点的连接代价,小于或等于由第二表节点连接至第三表节点的连接代价,则根据由第一表节点连接至第三表节点的连接代价,确定由第一表节点连接至第三表节点的连接路径,将由第一表节点连接至第二表节点的连接路径,与,由第一表节点连接至第三表节点的连接路径,确定为数据表连接路径;
第三确定子单元13332,还具体用于若由第一表节点连接至第三表节点的连接代价,大于由第二表节点连接至第三表节点的连接代价,则根据由第二表节点连接至第三表节点的连接代价,确定由第一表节点连接至第三表节点的连接路径,将由第一表节点连接至第二表节点的连接路径,与,由第一表节点连接至第三表节点的连接路径,确定为数据表连接路径。
其中,第三确定子单元13332的具体功能实现方式,可以参见上述图10对应实施例中的步骤S1032,这里不再进行赘述。
再请参见图14,第二确定模块14可以包括:第二获取单元141以及第一执行单元142。
第二获取单元141,用于获取数据库引擎,在查询优化策略集合中,获取与数据库引擎相适配的查询优化策略,将获取到的查询优化策略确定为目标查询优化策略;
第一执行单元142,用于将数据表连接路径作为目标查询优化策略的输入数据,执行目标查询优化策略,对数据表连接路径进行优化处理,得到优化查询代码;
则第二确定模块14可以包括:第二执行单元143。
第二执行单元143,用于执行优化查询代码。
其中,第二获取单元141、第一执行单元142以及第二执行单元143的具体功能实现方式,可以参见上述图2对应实施例中的步骤S104,这里不再进行赘述。
再请参见图14,数据表关系图包括A个表节点;一个表节点用于表征一个数据表,A个表节点分别表征的数据表均属于A个数据表;A个表节点之间的节点关系用于表征A个数据表之间的表关系;
第二获取模块12可以包括:第三确定单元121、第三获取单元122、第四确定单元123以及路由生成单元124。
第三确定单元121,用于在A个表节点之间的节点关系中,获取属于节点直连关系的直连表节点对,将直连表节点对中的两个表节点之间的连接代价确定为单位连接代价值;直连表节点对中的两个表节点之间存在节点边;
第三获取单元122,用于在A个表节点之间的节点关系中,获取属于节点间连关系的间连表节点对;间连表节点对中的两个表节点之间不存在节点边,且间连表节点对中的两个表节点之间存在中间表节点;
第四确定单元123,用于确定间连表节点对中的两个表节点之间的中间表节点的数量C,将间连表节点对中的两个表节点之间的连接代价确定为(C+1)*单位连接代价值;C为正整数,且C小于或等于A-2;
路由生成单元124,用于根据连接代价为单位连接代价值的直连表节点对以及连接代价为(C+1)*单位连接代价值的间连表节点对,生成数据表关系图对应的路由表。
其中,第三确定单元121、第三获取单元122、第四确定单元123以及路由生成单元124的具体功能实现方式,可以参见上述图8对应实施例中的步骤S1021-步骤S1024,这里不再进行赘述。
再请参见图14,直连表节点对包括第四表节点以及第五表节点;间连表节点对包括第六表节点以及第七表节点;
路由生成单元124可以包括:第一生成子单元1241、第二生成子单元1242、第三生成子单元1243以及第四生成子单元1244。
第一生成子单元1241,用于生成由第四表节点连接至第五表节点的第一直连表节点对,将第五表节点确定为第一直连表节点对的下一跳表节点D;
第二生成子单元1242,用于生成由第五表节点连接至第四表节点的第二直连表节点对,将第四表节点确定为第二直连表节点对的下一跳表节点E;
第三生成子单元1243,用于生成由第六表节点引导至第七表节点的第一间连表节点对,在中间表节点中,获取与第六表节点存在节点边的第一中间表节点,将第一中间表节点确定为第一间连表节点对的下一跳表节点F;
第四生成子单元1244,用于生成由第七表节点连接至第六表节点的第二间连表节点对,在中间表节点中,获取与第七表节点存在节点边的第二中间表节点,将第二中间表节点确定为第二间连表节点对的下一跳表节点G;
第四生成子单元1244,还用于将连接代价为单位连接代价值且携带下一跳表节点D的第一直连表节点对、连接代价为单位连接代价值且携带下一跳表节点E的第二直连表节点对、连接代价为(C+1)*单位连接代价值且携带下一跳表节点F的第一间连表节点对,以及连接代价为(C+1)*单位连接代价值且携带下一跳表节点G的第二间连表节点对,确定为数据表关系图对应的路由表。
其中,第一生成子单元1241、第二生成子单元1242、第三生成子单元1243以及第四生成子单元1244的具体功能实现方式,可以参见上述图8对应实施例中的步骤S1024,这里不再进行赘述。
再请参见图14,第二获取模块12还可以包括:更新处理单元125。
更新处理单元125,用于若获取到表节点动态信息,则根据表节点动态信息,对路由表进行更新处理,得到数据表关系图对应的更新路由表;
则第一确定模块13可以包括:第五确定单元134。
第五确定单元134,用于根据更新路由表,确定数据表连接路径;数据表连接路径中的数据表均属于更新路由表包括的数据表。
其中,更新处理单元125以及第五确定单元134的具体功能实现方式,可以参见上述图8对应实施例中的步骤S1025,这里不再进行赘述。
再请参见图14,更新处理单元125可以包括:关系获取子单元1251、第一创建子单元1252、第二创建子单元1253、价值确定子单元1254以及更新处理子单元1255。
关系获取子单元1251,用于若表节点动态信息用于指示在数据表关系图中添加表节点X,则在表节点动态信息中,获取与表节点X具有节点直连关系的表节点Y;表节点Y属于A个表节点;
第一创建子单元1252,用于创建包括表节点X以及表节点Y的新增直连表节点对,将新增直连表节点对的连接代价确定为单位连接代价值;
第二创建子单元1253,用于创建包括表节点X以及表节点U的新增间连表节点对;表节点U以及表节点Y之间存在节点连接关系,且在添加有表节点X的数据表关系图中,表节点X以及第一表节点集合中的表节点之间不存在节点边;表节点U属于A个表节点;第一表节点集合包括表节点U,与表节点U以及表节点Y之间的中间表节点;
价值确定子单元1254,用于将新增间连表节点对的连接代价确定为(V+1)*单位连接代价值;V为正整数,且V小于或等于A-1;由表节点Y连接至表节点U的连接代价等于V*单位连接代价值;
更新处理子单元1255,用于根据连接代价为单位连接代价值的新增直连表节点对,以及连接代价为(V+1)*单位连接代价值的新增间连表节点对,对路由表进行更新处理,得到数据表关系图对应的更新路由表。
其中,关系获取子单元1251、第一创建子单元1252、第二创建子单元1253、价值确定子单元1254以及更新处理子单元1255的具体功能实现方式,可以参见上述图8对应实施例中的步骤S1025,这里不再进行赘述。
再请参见图14,更新处理子单元1255可以包括:第四获取子单元12551、第一更新子单元12552、第二更新子单元12553、第五确定子单元12554以及第三更新子单元12555。
第四获取子单元12551,用于在路由表中,获取包括表节点Y且属于节点间连关系的间连表节点对,将获取到的间连表节点对确定为初始间连表节点对;在添加有表节点X的数据表关系图中,表节点X以及第二表节点集合中的至少一个表节点之间存在节点边;第二表节点集合包括初始间连表节点对中的两个表节点,以及初始间连表节点对中的中间表节点;
第一更新子单元12552,用于通过表节点X,对初始间连表节点对中的中间表节点进行更新处理,得到更新中间表节点;
第二更新子单元12553,用于若初始间连表节点对中的中间表节点的数量大于更新中间表节点的数量W,则将初始间连表节点对中的中间表节点更新为更新中间表节点;
第五确定子单元12554,用于将更新有更新中间表节点的初始间连表节点对的连接代价确定为(W+1)*单位连接代价值;
第三更新子单元12555,用于根据连接代价为单位连接代价值的新增直连表节点对、连接代价为(V+1)*单位连接代价值的新增间连表节点对,以及连接代价为(W+1)*单位连接代价值且更新有更新中间表节点的初始间连表节点对,对路由表进行更新处理,得到数据表关系图对应的更新路由表。
其中,第四获取子单元12551、第一更新子单元12552、第二更新子单元12553、第五确定子单元12554以及第三更新子单元12555的具体功能实现方式,可以参见上述图8对应实施例中的步骤S1025,这里不再进行赘述。
再请参见图14,数据处理装置1还可以包括:字段选取模块15、模型创建模块16以及接口发布模块17。
字段选取模块15,用于在A个数据表中分别选取候选度量字段以及候选维度字段;候选度量字段包括查询指标中的查询度量所属的度量字段;候选维度字段包括查询指标中的查询维度所属的维度字段;
模型创建模块16,用于构建包括候选度量字段以及候选维度字段的指标模型,校验指标模型的模型状态;
接口发布模块17,用于若模型状态为有效模型状态,则发布指标模型对应的查询接口;查询接口用于获取指标查询请求。
其中,字段选取模块15、模型创建模块16以及接口发布模块17的具体功能实现方式,可以参见上述图11对应实施例中的步骤S201-步骤S203,这里不再进行赘述。
上述可知,在查询指标值时,通过路由表中的每两个具有表连接关系的数据表之间的连接代价,本申请可以确定用于连接目标数据表的路径,即数据表连接路径,进而可以生成用于确定指标值的查询代码,明显地,采用本申请,无需手动输入查询代码,故可以降低指标值查询难度以及提升指标值查询效率。
进一步地,请参见图15,图15是本申请实施例提供的一种计算机设备的结构示意图。如图15所示,该计算机设备1000可以包括:至少一个处理器1001,例如CPU,至少一个网络接口1004,用户接口1003,存储器1005,至少一个通信总线1002。其中,通信总线1002用于实现这些组件之间的连接通信。其中,在一些实施例中,用户接口1003可以包括显示屏(Display)、键盘(Keyboard),网络接口1004可选地可以包括标准的有线接口、无线接口(如WI-FI接口)。存储器1005可以是高速RAM存储器,也可以是非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。存储器1005可选地还可以是至少一个位于远离前述处理器1001的存储装置。如图15所示,作为一种计算机存储介质的存储器1005可以包括操作系统、网络通信模块、用户接口模块以及设备控制应用程序。
在图15所示的计算机设备1000中,网络接口1004可提供网络通讯功能;而用户接口1003主要用于为用户提供输入的接口;而处理器1001可以用于调用存储器1005中存储的设备控制应用程序,以实现:
获取携带查询指标的指标查询请求,根据指标查询请求确定查询指标所属的目标数据表;
获取基于数据表关系图所生成的路由表;数据表关系图用于指示A个数据表之间的表关系;A个数据表包括目标数据表;A为大于1的正整数;路由表用于指示A个数据表中,每两个具有表连接关系的数据表之间的连接代价;
根据每两个具有表连接关系的数据表之间的连接代价,确定数据表连接路径;数据表连接路径用于表征连接目标数据表的路径;数据表连接路径中的数据表均属于A个数据表;
生成数据表连接路径对应的查询代码,执行查询代码,在目标数据表中确定查询指标的指标值。
应当理解,本申请实施例中所描述的计算机设备1000可执行前文各实施例中对数据处理方法或装置的描述,在此不再赘述。另外,对采用相同方法的有益效果描述,也不再进行赘述。
本申请实施例还提供一种计算机可读存储介质,该计算机可读存储介质存储有计算机程序,该计算机程序被处理器执行时实现前文各实施例中对数据处理方法或装置的描述,在此不再赘述。另外,对采用相同方法的有益效果描述,也不再进行赘述。
上述计算机可读存储介质可以是前述任一实施例提供的数据处理装置或者上述计算机设备的内部存储单元,例如计算机设备的硬盘或内存。该计算机可读存储介质也可以是该计算机设备的外部存储设备,例如该计算机设备上配备的插接式硬盘,智能存储卡(smart media card,SMC),安全数字(secure digital,SD)卡,闪存卡(flash card)等。进一步地,该计算机可读存储介质还可以既包括该计算机设备的内部存储单元也包括外部存储设备。该计算机可读存储介质用于存储该计算机程序以及该计算机设备所需的其他程序和数据。该计算机可读存储介质还可以用于暂时地存储已经输出或者将要输出的数据。
本申请实施例还提供了一种计算机程序产品,该计算机程序产品包括计算机程序,该计算机程序存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机程序,处理器执行该计算机程序,使得该计算机设备可执行前文各实施例中对数据处理方法或装置的描述,在此不再赘述。另外,对采用相同方法的有益效果描述,也不再进行赘述。
本申请实施例的说明书和权利要求书及附图中的术语“第一”、“第二”等是用于区别不同对象,而非用于描述特定顺序。此外,术语“包括”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、装置、产品或设备没有限定于已列出的步骤或模块,而是可选地还包括没有列出的步骤或模块,或可选地还包括对于这些过程、方法、装置、产品或设备固有的其他步骤单元。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
以上所揭露的仅为本申请较佳实施例而已,当然不能以此来限定本申请之权利范围,因此依本申请权利要求所作的等同变化,仍属本申请所涵盖的范围。
Claims (17)
1.一种数据处理方法,其特征在于,包括:
获取携带查询指标的指标查询请求,根据所述指标查询请求确定所述查询指标所属的目标数据表;
获取基于数据表关系图所生成的路由表;所述数据表关系图用于指示A个数据表之间的表关系;所述A个数据表包括所述目标数据表;A为大于1的正整数;所述路由表用于指示所述A个数据表中,每两个具有表连接关系的数据表之间的连接代价;
根据所述每两个具有表连接关系的数据表之间的连接代价,确定数据表连接路径;所述数据表连接路径用于表征连接所述目标数据表的路径;所述数据表连接路径中的数据表均属于所述A个数据表;
生成所述数据表连接路径对应的查询代码,执行所述查询代码,在所述目标数据表中确定所述查询指标的指标值。
2.根据权利要求1所述的方法,其特征在于,所述数据表关系图包括A个表节点;一个表节点用于表征一个数据表,所述A个表节点分别表征的数据表均属于所述A个数据表;所述目标数据表的总数量为至少两个;
所述根据所述每两个具有表连接关系的数据表之间的连接代价,确定数据表连接路径,包括:
获取所述查询指标中的查询度量,在至少两个目标数据表中,获取所述查询度量所属的数据表;
在所述A个表节点中,将用于表征所述查询度量所属的数据表的表节点确定为第一表节点;
根据所述每两个具有表连接关系的数据表之间的连接代价、所述第一表节点以及第一剩余表节点,确定数据表连接路径;所述第一剩余表节点用于表征剩余数据表;所述剩余数据表包括所述至少两个目标数据表中除了所述查询度量所属的数据表之外的数据表;所述第一剩余表节点属于所述A个表节点。
3.根据权利要求2所述的方法,其特征在于,所述根据所述每两个具有表连接关系的数据表之间的连接代价、所述第一表节点以及第一剩余表节点,确定数据表连接路径,包括:
在所述第一剩余表节点中,获取与所述第一表节点连接且连接代价最小的第二表节点;
若所述第二表节点等于所述第一剩余表节点,则根据由所述第一表节点连接至第二表节点的连接代价,确定数据表连接路径;由所述第一表节点连接至所述第二表节点的连接代价,属于所述每两个具有表连接关系的数据表之间的连接代价;
若所述第一剩余表节点中存在除了所述第二表节点之外的第二剩余表节点,则将所述第一表节点以及所述第二表节点均添加至第一已处理表节点集合,根据所述第一已处理表节点集合、所述第二剩余表节点以及所述每两个具有表连接关系的数据表之间的连接代价,生成数据表连接路径。
4.根据权利要求3所述的方法,其特征在于,所述根据由所述第一表节点连接至第二表节点的连接代价,确定数据表连接路径,包括:
若由所述第一表节点连接至第二表节点的连接代价等于单位连接代价值,则将由所述第一表节点连接至第二表节点的连接路径,确定为数据表连接路径;
若由所述第一表节点连接至第二表节点的连接代价大于所述单位连接代价值,则在所述路由表中,获取针对所述第一表节点的下一跳表节点B;所述下一跳表节点B属于所述A个表节点,且所述下一跳表节点B不属于用于表征所述至少两个目标数据表的表节点;由所述第一表节点连接至所述下一跳表节点B的连接代价等于所述单位连接代价值;
在所述每两个具有表连接关系的数据表之间的连接代价中,获取由所述下一跳表节点B连接至所述第二表节点的连接代价;
根据由所述第一表节点连接至第二表节点的连接路径,以及由所述下一跳表节点B连接至所述第二表节点的连接代价,确定数据表连接路径。
5.根据权利要求3所述的方法,其特征在于,所述根据所述第一已处理表节点集合、所述第二剩余表节点以及所述每两个具有表连接关系的数据表之间的连接代价,生成数据表连接路径,包括:
在所述第二剩余表节点中,获取与所述第一已处理表节点集合中的表节点连接且连接代价最小的第三表节点;
若所述第三表节点等于所述第二剩余表节点,则根据由所述第一表节点连接至第二表节点的连接代价,以及由所述第一已处理表节点集合中的表节点连接至所述第三表节点的连接代价,确定数据表连接路径;由所述第一已处理表节点集合中的表节点连接至所述第三表节点的连接代价,属于所述每两个具有表连接关系的数据表之间的连接代价;
若所述第二剩余表节点中存在除了所述第三表节点之外的第三剩余表节点,则将所述第三表节点添加至所述第一已处理表节点集合,得到第二已处理表节点集合,根据所述第二已处理表节点集合、所述第三剩余表节点以及所述每两个具有表连接关系的数据表之间的连接代价,生成数据表连接路径。
6.根据权利要求5所述的方法,其特征在于,所述根据由所述第一表节点连接至第二表节点的连接代价,以及由所述第一已处理表节点集合中的表节点连接至所述第三表节点的连接代价,确定数据表连接路径,包括:
根据由所述第一表节点连接至所述第二表节点的连接代价,确定由所述第一表节点连接至所述第二表节点的连接路径;
若由所述第一表节点连接至所述第三表节点的连接代价,小于或等于由所述第二表节点连接至所述第三表节点的连接代价,则根据由所述第一表节点连接至所述第三表节点的连接代价,确定由所述第一表节点连接至所述第三表节点的连接路径,将由所述第一表节点连接至所述第二表节点的连接路径,与,由所述第一表节点连接至所述第三表节点的连接路径,确定为数据表连接路径;
若由所述第一表节点连接至所述第三表节点的连接代价,大于由所述第二表节点连接至所述第三表节点的连接代价,则根据由所述第二表节点连接至所述第三表节点的连接代价,确定由所述第一表节点连接至所述第三表节点的连接路径,将由所述第一表节点连接至所述第二表节点的连接路径,与,由所述第一表节点连接至所述第三表节点的连接路径,确定为数据表连接路径。
7.根据权利要求1所述的方法,其特征在于,所述生成所述数据表连接路径对应的查询代码,包括:
获取数据库引擎,在查询优化策略集合中,获取与所述数据库引擎相适配的查询优化策略,将获取到的查询优化策略确定为目标查询优化策略;
将所述数据表连接路径作为所述目标查询优化策略的输入数据,执行所述目标查询优化策略,对所述数据表连接路径进行优化处理,得到优化查询代码;
则所述执行所述查询代码,包括:
执行所述优化查询代码。
8.根据权利要求1所述的方法,其特征在于,所述数据表关系图包括A个表节点;一个表节点用于表征一个数据表,所述A个表节点分别表征的数据表均属于所述A个数据表;所述A个表节点之间的节点关系用于表征所述A个数据表之间的表关系;
所述获取基于数据表关系图所生成的路由表,包括:
在所述A个表节点之间的节点关系中,获取属于节点直连关系的直连表节点对,将所述直连表节点对中的两个表节点之间的连接代价确定为单位连接代价值;所述直连表节点对中的两个表节点之间存在节点边;
在所述A个表节点之间的节点关系中,获取属于节点间连关系的间连表节点对;所述间连表节点对中的两个表节点之间不存在节点边,且所述间连表节点对中的两个表节点之间存在中间表节点;
确定所述间连表节点对中的两个表节点之间的中间表节点的数量C,将所述间连表节点对中的两个表节点之间的连接代价确定为(C+1)*单位连接代价值;C为正整数,且C小于或等于A-2;
根据连接代价为所述单位连接代价值的所述直连表节点对以及连接代价为(C+1)*单位连接代价值的所述间连表节点对,生成所述数据表关系图对应的路由表。
9.根据权利要求8所述的方法,其特征在于,所述直连表节点对包括第四表节点以及第五表节点;所述间连表节点对包括第六表节点以及第七表节点;
所述根据连接代价为所述单位连接代价值的所述直连表节点对以及连接代价为(C+1)*单位连接代价值的所述间连表节点对,生成所述数据表关系图对应的路由表,包括:
生成由所述第四表节点连接至所述第五表节点的第一直连表节点对,将所述第五表节点确定为所述第一直连表节点对的下一跳表节点D;
生成由所述第五表节点连接至所述第四表节点的第二直连表节点对,将所述第四表节点确定为所述第二直连表节点对的下一跳表节点E;
生成由所述第六表节点引导至所述第七表节点的第一间连表节点对,在所述中间表节点中,获取与所述第六表节点存在节点边的第一中间表节点,将所述第一中间表节点确定为所述第一间连表节点对的下一跳表节点F;
生成由所述第七表节点连接至所述第六表节点的第二间连表节点对,在所述中间表节点中,获取与所述第七表节点存在节点边的第二中间表节点,将所述第二中间表节点确定为所述第二间连表节点对的下一跳表节点G;
将连接代价为所述单位连接代价值且携带所述下一跳表节点D的第一直连表节点对、连接代价为所述单位连接代价值且携带所述下一跳表节点E的第二直连表节点对、连接代价为(C+1)*单位连接代价值且携带所述下一跳表节点F的第一间连表节点对,以及连接代价为(C+1)*单位连接代价值且携带所述下一跳表节点G的第二间连表节点对,确定为所述数据表关系图对应的路由表。
10.根据权利要求8所述的方法,其特征在于,所述方法还包括:
若获取到表节点动态信息,则根据所述表节点动态信息,对所述路由表进行更新处理,得到所述数据表关系图对应的更新路由表;
则所述根据所述每两个具有表连接关系的数据表之间的连接代价,确定数据表连接路径,包括:
根据所述更新路由表,确定数据表连接路径;所述数据表连接路径中的数据表均属于所述更新路由表包括的数据表。
11.根据权利要求10所述的方法,其特征在于,所述根据所述表节点动态信息,对所述路由表进行更新处理,得到所述数据表关系图对应的更新路由表,包括:
若所述表节点动态信息用于指示在所述数据表关系图中添加表节点X,则在所述表节点动态信息中,获取与所述表节点X具有节点直连关系的表节点Y;所述表节点Y属于所述A个表节点;
创建包括所述表节点X以及所述表节点Y的新增直连表节点对,将所述新增直连表节点对的连接代价确定为所述单位连接代价值;
创建包括所述表节点X以及表节点U的新增间连表节点对;所述表节点U以及所述表节点Y之间存在节点连接关系,且在添加有所述表节点X的数据表关系图中,所述表节点X以及第一表节点集合中的表节点之间不存在节点边;所述表节点U属于所述A个表节点;所述第一表节点集合包括所述表节点U,与所述表节点U以及所述表节点Y之间的中间表节点;
将所述新增间连表节点对的连接代价确定为(V+1)*单位连接代价值;V为正整数,且V小于或等于A-1;由所述表节点Y连接至所述表节点U的连接代价等于V*单位连接代价值;
根据连接代价为所述单位连接代价值的所述新增直连表节点对,以及连接代价为(V+1)*单位连接代价值的所述新增间连表节点对,对所述路由表进行更新处理,得到所述数据表关系图对应的更新路由表。
12.根据权利要求11所述的方法,其特征在于,所述根据连接代价为所述单位连接代价值的所述新增直连表节点对,以及连接代价为(V+1)*单位连接代价值的所述新增间连表节点对,对所述路由表进行更新处理,得到所述数据表关系图对应的更新路由表,包括:
在所述路由表中,获取包括所述表节点Y且属于节点间连关系的间连表节点对,将获取到的间连表节点对确定为初始间连表节点对;在添加有所述表节点X的数据表关系图中,所述表节点X以及第二表节点集合中的至少一个表节点之间存在节点边;所述第二表节点集合包括所述初始间连表节点对中的两个表节点,以及所述初始间连表节点对中的中间表节点;
通过所述表节点X,对所述初始间连表节点对中的中间表节点进行更新处理,得到更新中间表节点;
若所述初始间连表节点对中的中间表节点的数量大于所述更新中间表节点的数量W,则将所述初始间连表节点对中的中间表节点更新为所述更新中间表节点;
将更新有所述更新中间表节点的初始间连表节点对的连接代价确定为(W+1)*单位连接代价值;
根据连接代价为所述单位连接代价值的所述新增直连表节点对、连接代价为(V+1)*单位连接代价值的所述新增间连表节点对,以及连接代价为(W+1)*单位连接代价值且更新有所述更新中间表节点的初始间连表节点对,对所述路由表进行更新处理,得到所述数据表关系图对应的更新路由表。
13.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在所述A个数据表中分别选取候选度量字段以及候选维度字段;所述候选度量字段包括所述查询指标中的查询度量所属的度量字段;所述候选维度字段包括所述查询指标中的查询维度所属的维度字段;
构建包括所述候选度量字段以及所述候选维度字段的指标模型,校验所述指标模型的模型状态;
若所述模型状态为有效模型状态,则发布所述指标模型对应的查询接口;所述查询接口用于获取所述指标查询请求。
14.一种数据处理装置,其特征在于,包括:
第一获取模块,用于获取携带查询指标的指标查询请求,根据所述指标查询请求确定所述查询指标所属的目标数据表;
第二获取模块,用于获取基于数据表关系图所生成的路由表;所述数据表关系图用于指示A个数据表之间的表关系;所述A个数据表包括所述目标数据表;A为大于1的正整数;所述路由表用于指示所述A个数据表中,每两个具有表连接关系的数据表之间的连接代价;
第一确定模块,用于根据所述每两个具有表连接关系的数据表之间的连接代价,确定数据表连接路径;所述数据表连接路径用于表征连接所述目标数据表的路径;所述数据表连接路径中的数据表均属于所述A个数据表;
第二确定模块,用于生成所述数据表连接路径对应的查询代码,执行所述查询代码,在所述目标数据表中确定所述查询指标的指标值。
15.一种计算机设备,其特征在于,包括:处理器、存储器以及网络接口;
所述处理器与所述存储器、所述网络接口相连,其中,所述网络接口用于提供数据通信功能,所述存储器用于存储计算机程序,所述处理器用于调用所述计算机程序,以使得所述计算机设备执行权利要求1至13任一项所述的方法。
16.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机程序,所述计算机程序适于由处理器加载并执行,以使得具有所述处理器的计算机设备执行权利要求1-13任一项所述的方法。
17.一种计算机程序产品,其特征在于,所述计算机程序产品包括计算机程序,所述计算机程序存储在计算机可读存储介质中,所述计算机程序适于由处理器读取并执行,以使得具有所述处理器的计算机设备执行权利要求1-13任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310127117.5A CN116975050A (zh) | 2023-02-03 | 2023-02-03 | 一种数据处理方法、装置、设备以及计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310127117.5A CN116975050A (zh) | 2023-02-03 | 2023-02-03 | 一种数据处理方法、装置、设备以及计算机可读存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116975050A true CN116975050A (zh) | 2023-10-31 |
Family
ID=88480346
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310127117.5A Pending CN116975050A (zh) | 2023-02-03 | 2023-02-03 | 一种数据处理方法、装置、设备以及计算机可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116975050A (zh) |
-
2023
- 2023-02-03 CN CN202310127117.5A patent/CN116975050A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20170213127A1 (en) | Method and System for Discovering Ancestors using Genomic and Genealogic Data | |
CN110837550A (zh) | 基于知识图谱的问答方法、装置、电子设备及存储介质 | |
CN106407208B (zh) | 一种城市管理本体知识库的构建方法及系统 | |
CN109684330A (zh) | 用户画像库构建方法、装置、计算机设备及存储介质 | |
CN109947998A (zh) | 跨异构系统的网络的计算数据沿袭 | |
CN109492772A (zh) | 生成信息的方法和装置 | |
US20170235726A1 (en) | Information identification and extraction | |
CN104765729A (zh) | 一种跨平台微博社区账户匹配方法 | |
Nabti et al. | Querying massive graph data: A compress and search approach | |
CN109885585A (zh) | 支持存储过程、触发器与视图的分布式数据库系统和方法 | |
CN113535977A (zh) | 一种知识图谱融合方法和装置及设备 | |
CN115510249A (zh) | 一种知识图谱的构建方法及装置、电子设备、存储介质 | |
CN110413807A (zh) | 一种基于内容语义元数据的图像查询方法与系统 | |
CN117235285B (zh) | 融合知识图谱数据的方法及装置 | |
AL-Msie'deen et al. | Detecting commonality and variability in use-case diagram variants | |
CN105843809A (zh) | 数据处理方法和装置 | |
Niu | Optimization of teaching management system based on association rules algorithm | |
CN117493333A (zh) | 数据归档方法、装置、电子设备及存储介质 | |
CN110062112A (zh) | 数据处理方法、装置、设备及计算机可读存储介质 | |
CN107291875B (zh) | 一种基于元数据图的元数据组织管理方法和系统 | |
CN116975050A (zh) | 一种数据处理方法、装置、设备以及计算机可读存储介质 | |
CN113010642B (zh) | 语义关系的识别方法、装置、电子设备及可读存储介质 | |
CN110765100B (zh) | 标签的生成方法、装置、计算机可读存储介质及服务器 | |
CN114492844A (zh) | 机器学习工作流的构建方法、装置、电子设备及存储介质 | |
CN116263659A (zh) | 数据处理方法、装置、计算机程序产品、设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication |