发明内容
为解决上述技术问题,本发明提供了一种指标一致性分析方法及分析系统,以解决通过指标的名称和业务定义描述很难准确判断两个指标的一致性关系的问题。
为解决上述技术问题,本发明实施例提供了如下技术方案:
一种指标一致性分析方法,包括:
对输入的第一指标和第二指标进行名称一致性分析,判断所述第一指标和第二指标的名称一致性关系,所述名称一致性关系包括名称一致、名称不一致和名称包含;
对所述第一指标和第二指标进行定义一致性分析,判断所述第一指标和第二指标的定义一致性关系,所述定义一致性关系包括定义一致、定义不一致和定义包含;
根据所述第一指标和第二指标的名称一致性关系和定义一致性关系判断所述第一指标和第二指标的一致性关系,所述一致性关系包括一致关系、无关关系、同名不同义关系、同义不同名关系和异常关系。
可选的,所述对输入的第一指标和第二指标进行名称一致性分析,判断所述第一指标和第二指标的名称一致性关系包括:
根据通用词库对输入的第一指标和第二指标进行分词处理,获得多个第一指标词段和多个第二指标词段;
根据维度词库和度量词库将所述多个第一指标词段划分为一个所述第一指标的度量变量和至少一个所述第一指标的维度变量;
根据所述维度词库和度量词库将所述多个第二指标词段划分为一个所述第二指标的度量变量和至少一个所述第二指标的维度变量;
根据所述第一指标的度量变量、至少一个所述第一指标的维度变量、所述第二指标的度量变化、至少一个所述第二指标的维度变量和同义词词库判断所述第一指标和第二指标的名称一致性关系。
可选的,所述根据所述第一指标的度量变量、至少一个所述第一指标的维度变量、所述第二指标的度量变化、至少一个所述第二指标的维度变量和同义词词库判断所述第一指标和第二指标的名称一致性关系包括:
判断所述第一指标的度量变量与所述第二指标的度量变量是否相同,如果是,则判定所述第一指标的度量变量与所述第二指标的度量变量一致;如果否,则根据同义词词库判断所述第一指标的度量变量是否为所述第二指标的度量变量的同义词,若是,则判定所述第一指标的度量变量与所述第二指标的度量变量一致,若否,则判定所述第一指标的度量变量与所述第二指标的度量变量不一致;
将所述至少一个第一指标的维度变量作为维度变量集合,抽取所述维度变量集合中的一个所述第一指标的维度变量作为目标变量,抽取的所述第一指标的维度变量不再作为所述维度变量集合的元素;
判断所述至少一个第二指标的维度变量中是否存在与所述目标变量相同的第二指标的维度变量,如果是,则判定与所述目标变量相同的第二指标的维度变量与所述目标变量一致,如果否,则根据同义词词库判断所述至少一个第二指标的维度变量的同义词中是否存在与所述目标变量相同的维度变量,若是,则判定同义词与所述目标变量相同的第二指标的维度变量与所述目标变量为一致,若否,则判定所述目标变量与所述至少一个第二指标的维度变量不一致;
判断所述目标变量是否为空,如果否,则返回抽取所述维度变量集合中的一个所述第一指标的维度变量作为目标变量的步骤;如果是,则统计所述至少一个第一指标的维度变量数量、所述至少一个第二指标的维度变量的数量、所述至少一个第一指标的维度变量数量与所述至少一个第二指标的维度变量的一致数量;
根据所述第一指标的度量变量与所述第二指标的度量变量的一致与否,以及所述至少一个第一指标的维度变量数量、所述至少一个第二指标的维度变量的数量、所述至少一个第一指标的维度变量与所述至少一个第二指标的维度变量的一致数量判定所述第一指标和第二指标的名称一致性关系。
可选的,所述根据所述第一指标的度量变量与所述第二指标的度量变量的一致与否,以及所述至少一个第一指标的维度变量数量、所述至少一个第二指标的维度变量的数量、所述至少一个第一指标的维度变量与所述至少一个第二指标的维度变量的一致数量判定所述第一指标和第二指标的名称一致性关系包括:
当所述第一指标的度量变量与所述第二指标的度量变量不一致时,所述第一指标和第二指标的名称一致性关系为名称不一致;
当所述第一指标的度量变量与所述第二指标的度量变量一致、所述至少一个第一指标的维度变量数量等于所述至少一个第二指标的维度变量的数量,且所述至少一个第一指标的维度变量与所述至少一个第二指标的维度变量的一致数量等于所述第一指标的维度变量或所述第二指标的维度变量数量时,所述第一指标和第二指标的名称一致性关系为名称一致;
当所述第一指标的度量变量与所述第二指标的度量变量一致、所述至少一个第一指标的维度变量数量小于或大于所述至少一个第二指标的维度变量的数量,且所述至少一个第一指标的维度变量与所述至少一个第二指标的维度变量的一致数量等于所述至少一个第一指标的维度变量时或所述至少一个第二指标的维度变量的数量时,所述第一指标和第二指标的名称一致性关系为名称包含。
可选的,所述对所述第一指标和第二指标进行定义一致性分析,判断所述第一指标和第二指标的定义一致性关系包括:
对输入的第一指标的第一结构化查询语言sql语句和第二指标的第二sql语句进行解析,获得所述第一sql语句的第一数据表和第二sql语句的第二数据表;
判断所述第一数据表和第二数据表是否相同,如果是,则根据所述第一sql语句和第二sql语句判断所述第一指标和第二指标的定义一致性关系;如果否,则根据数据表血缘关系数据库查询所述第一数据表的所有源表和所述第二数据表的所有源表,判断所述第一数据库的所有源表与所述第二数据表的所有源表是否存在相同的数据表,若否,则判定所述第一sql语句与所述第二sql语句之间的定义一致性关系为不一致;若是,则将该数据表作为目标数据表,将所述第一sql语句转换为关于目标数据表的第三sql语句,将所述第二sql语句转换为关于目标数据表的第四sql语句,并将所述第三sqp语句作为新的第一sql语句,将所述第四sql语句作为新的第二sql语句,返回根据所述第一sql语句和第二sql语句判断所述第一指标和第二指标的定义一致性关系的步骤;
所述数据表血缘关系数据库中存储有数据表之间的血缘关系。
可选的,所述根据所述第一sql语句和第二sql语句判断所述第一指标和第二指标的定义一致性关系包括:
对所述第一sql语句和第二sql语句进行解析处理,获得所述第一sql语句的TWhere对象以及所述第二sql语句的TWhere对象;
从所述第一sql语句的TWhere对象和所述第二sql语句的TWhere对象的节点中获取多个第一子条件和多个第二子条件,所述第一子条件为从所述第一sql语句的TWhere对象中获取的子条件,所述第二子条件为从所述第二sql语句的TWhere对象中获取的子条件;
根据所述多个第一子条件和多个第二子条件判断所述第一sql语句和第二sql语句之间的定义一致性关系。
可选的,所述根据所述第一指标和第二指标的名称一致性关系和定义一致性关系判断所述第一指标和第二指标的一致性关系之后还包括:
根据所述第一指标和第二指标的一致性关系给出关于所述第一指标和第二指标的优化策略,所述优化策略包括合并、修改指标名称、修改统计口径和下线指标。
可选的,所述根据所述第一指标和第二指标的名称一致性关系和定义一致性关系判断所述第一指标和第二指标的一致性关系之后还包括:
对具有一致关系的所述第一指标和第二指标,判断所述第一指标和第二指标的数据是否一致,如果是,则对所述第一指标或所述第二指标进行下线指标处理;
对名称一致性关系为包含关系的所述第一指标和第二指标,判断所述第一指标和第二指标的数据关系是否与所述第一指标和第二指标名称一致性关系相违背,如果是,则确定所述第一指标和第二指标为异常关系。
一种指标一致性分析系统,包括:
名称分析模块,用于对输入的第一指标和第二指标进行名称一致性分析,判断所述第一指标和第二指标的名称一致性关系,所述名称一致性关系包括名称一致、名称不一致和名称包含;
定义分析模块,用于对所述第一指标和第二指标进行定义一致性分析,判断所述第一指标和第二指标的定义一致性关系,所述定义一致性关系包括定义一致、定义不一致和定义包含;
判断模块,用于根据所述第一指标和第二指标的名称一致性关系和定义一致性关系判断所述第一指标和第二指标的一致性关系,所述一致性关系包括一致关系、无关关系、同名不同义关系、同义不同名关系和异常关系。
可选的,所述名称分析模块包括:
分词单元,用于根据通用词库对输入的第一指标和第二指标进行分词处理,获得多个第一指标词段和多个第二指标词段;
第一匹配单元,用于根据维度词库和度量词库将所述多个第一指标词段划分为一个所述第一指标的度量变量和至少一个所述第一指标的维度变量;
第二匹配单元,用于根据所述维度词库和度量词库将所述多个第二指标词段划分为一个所述第二指标的度量变量和至少一个所述第二指标的维度变量;
第一判断单元,用于根据所述第一指标的度量变量、至少一个所述第一指标的维度变量、所述第二指标的度量变化、至少一个所述第二指标的维度变量和同义词词库判断所述第一指标和第二指标的名称一致性关系。
可选的,所述第一判断单元包括:
度量变量判断单元,用于判断所述第一指标的度量变量与所述第二指标的度量变量是否相同,如果是,则判定所述第一指标的度量变量与所述第二指标的度量变量一致;如果否,则根据同义词词库判断所述第一指标的度量变量是否为所述第二指标的度量变量的同义词,若是,则判定所述第一指标的度量变量与所述第二指标的度量变量一致,若否,则判定所述第一指标的度量变量与所述第二指标的度量变量不一致;
维度变量抽取单元,用于将所述至少一个第一指标的维度变量作为维度变量集合,抽取所述维度变量集合中的一个所述第一指标的维度变量作为目标变量,抽取的所述第一指标的维度变量不再作为所述维度变量集合的元素;
第二判断单元,用于判断所述至少一个第二指标的维度变量中是否存在与所述目标变量相同的第二指标的维度变量,如果是,则判定与所述目标变量相同的第二指标的维度变量与所述目标变量一致,如果否,则根据同义词词库判断所述至少一个第二指标的维度变量的同义词中是否存在与所述目标变量相同的维度变量,若是,则判定同义词与所述目标变量相同的第二指标的维度变量与所述目标变量为一致,若否,则判定所述目标变量与所述至少一个第二指标的维度变量不一致;
第三判断单元,用于判断所述目标变量是否为空,如果否,则返回所述维度变量抽取单元;如果是,则统计所述至少一个第一指标的维度变量数量、所述至少一个第二指标的维度变量的数量、所述至少一个第一指标的维度变量数量与所述至少一个第二指标的维度变量的一致数量;
第四判断单元,用于根据所述第一指标的度量变量与所述第二指标的度量变量的一致与否,以及所述至少一个第一指标的维度变量数量、所述至少一个第二指标的维度变量的数量、所述至少一个第一指标的维度变量与所述至少一个第二指标的维度变量的一致数量判定所述第一指标和第二指标的名称一致性关系。
可选的,所述第四判断单元具体用于,当所述第一指标的度量变量与所述第二指标的度量变量不一致时,所述第一指标和第二指标的名称一致性关系为名称不一致;
当所述第一指标的度量变量与所述第二指标的度量变量一致、所述至少一个第一指标的维度变量数量等于所述至少一个第二指标的维度变量的数量,且所述至少一个第一指标的维度变量与所述至少一个第二指标的维度变量的一致数量等于所述第一指标的维度变量或所述第二指标的维度变量数量时,所述第一指标和第二指标的名称一致性关系为名称一致;
当所述第一指标的度量变量与所述第二指标的度量变量一致、所述至少一个第一指标的维度变量数量小于或大于所述至少一个第二指标的维度变量的数量,且所述至少一个第一指标的维度变量与所述至少一个第二指标的维度变量的一致数量等于所述至少一个第一指标的维度变量时或所述至少一个第二指标的维度变量的数量时,所述第一指标和第二指标的名称一致性关系为名称包含。
可选的,所述定义分析模块包括:
sql解析单元,用于对输入的第一指标的第一结构化查询语言sql语句和第二指标的第二sql语句进行解析,获得所述第一sql语句的第一数据表和第二sql语句的第二数据表;
第五判断单元,用于判断所述第一数据表和第二数据表是否相同,如果是,则根据所述第一sql语句和第二sql语句判断所述第一指标和第二指标的定义一致性关系;如果否,则根据数据表血缘关系数据库查询所述第一数据表的所有源表和所述第二数据表的所有源表,判断所述第一数据库的所有源表与所述第二数据表的所有源表是否存在相同的数据表,若否,则判定所述第一sql语句与所述第二sql语句之间的定义一致性关系为不一致;若是,则将该数据表作为目标数据表,将所述第一sql语句转换为关于目标数据表的第三sql语句,将所述第二sql语句转换为关于目标数据表的第四sql语句,并将所述第三sqp语句作为新的第一sql语句,将所述第四sql语句作为新的第二sql语句,返回根据所述第一sql语句和第二sql语句判断所述第一指标和第二指标的定义一致性关系的步骤;
所述数据表血缘关系数据库中存储有数据表之间的血缘关系。
可选的,所述第五判断单元具体用于,判断所述第一数据表和第二数据表是否相同,如果是,则对所述第一sql语句和第二sql语句进行解析处理,获得所述第一sql语句的TWhere对象以及所述第二sql语句的TWhere对象;
从所述第一sql语句的TWhere对象和所述第二sql语句的TWhere对象的节点中获取多个第一子条件和多个第二子条件,所述第一子条件为从所述第一sql语句的TWhere对象中获取的子条件,所述第二子条件为从所述第二sql语句的TWhere对象中获取的子条件;
根据所述多个第一子条件和多个第二子条件判断所述第一sql语句和第二sql语句之间的定义一致性关系;
如果否,则根据数据表血缘关系数据库查询所述第一数据表的所有源表和所述第二数据表的所有源表,判断所述第一数据库的所有源表与所述第二数据表的所有源表是否存在相同的数据表,若否,则判定所述第一sql语句与所述第二sql语句之间的定义一致性关系为不一致;若是,则将该数据表作为目标数据表,将所述第一sql语句转换为关于目标数据表的第三sql语句,将所述第二sql语句转换为关于目标数据表的第四sql语句,并将所述第三sqp语句作为新的第一sql语句,将所述第四sql语句作为新的第二sql语句,返回对所述第一sql语句和第二sql语句进行解析处理的步骤。
可选的,还包括:
优化策略模块,用于根据所述第一指标和第二指标的一致性关系给出关于所述第一指标和第二指标的优化策略,所述优化策略包括合并、修改指标名称、修改统计口径和下线指标。
可选的,还包括:
处理模块,用于对具有一致关系的所述第一指标和第二指标,判断所述第一指标和第二指标的数据是否一致,如果是,则对所述第一指标或所述第二指标进行下线指标处理;和用于对名称一致性关系为包含关系的所述第一指标和第二指标,判断所述第一指标和第二指标的数据关系是否与所述第一指标和第二指标名称一致性关系相违背,如果是,则确定所述第一指标和第二指标为异常关系。
从上述技术方案可以看出,本发明实施例提供了一种指标一致性分析方法及分析系统,其中,所述指标一致性分析方法通过对所述第一指标和第二指标分别进行名称一致性分析和定义一致性分析,分别判断所述第一指标和第二指标的名称一致性关系和定义一致性关系,最后根据所述第一指标和第二指标的名称一致性关系和定义一致性关系判断所述第一指标和第二指标的一致性关系,避免根据所述第一指标和第二指标的名称和业务定义描述来判断所述第一指标和第二指标的一致性关系,造成的准确性低的问题。这是因为所述第一指标和第二指标的定义(统计口径或计算方法)具有唯一且确定的特性,不会出现由于人为描述的不清楚或不准确而造成根据一致性判断不准确的情况出现。
并且,所述指标一致性分析方法可以依托所述指标一致性分析系统实现自动对所述第一指标和第二指标的一致性分析,减少了指标管理人员的工作量。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本申请实施例提供了一种指标一致性分析方法,如图1所示,包括:
S101:对输入的第一指标和第二指标进行名称一致性分析,判断所述第一指标和第二指标的名称一致性关系,所述名称一致性关系包括名称一致、名称不一致和名称包含。
需要说明的是,所述名称一致是指所述第一指标和第二指标的名称一致,比如“月有效通话客户数”和“月通话有效客户数”;所述名称不一致是指所述第一指标和第二指标的名称不相关,比如“月有效通话客户数”和“月有效短信客户数”;所述名称包含是指所述第一指标和第二指标的名称为包含关系,比如“月通话客户数”包含“月有效通话客户数”。
S102:对所述第一指标和第二指标进行定义一致性分析,判断所述第一指标和第二指标的定义一致性关系,所述定义一致性关系包括定义一致、定义不一致和定义包含。
需要说明的是,一般而言,一个指标一般包括编码、名称、单位、类别、业务定义描述和指标定义这些参数;其中,编码是一个指标的唯一标识,名称是指指标的短名称,例如活跃客户数等,单位是指标的计量单位,如户、万元等,类别是一个指标的分类,如收入类,市场竞争类等;业务定义描述是一个指标在创建时人为对目标属性或性质的文字描述;而指标定义是指一个指标的统计口径或计算公式,是该指标最终的数值来源的渠道或方式。那么通过对所述第一指标和第二指标进行定义一致性分析可以准确的获悉所述第一指标和第二指标的数值来源的渠道或方式的一致性关系,那么结合所述第一指标和第二指标的名称一致性关系就可以准确的判断出所述第一指标和第二指标的一致性关系,避免根据所述第一指标和第二指标的名称和业务定义描述来判断所述第一指标和第二指标的一致性关系,造成的准确性低的问题。
S103:根据所述第一指标和第二指标的名称一致性关系和定义一致性关系判断所述第一指标和第二指标的一致性关系,所述一致性关系包括一致关系、无关关系、同名不同义关系、同义不同名关系和异常关系。
在上述实施例的基础上,在本申请的一个实施例中,如图2所示,所述对输入的第一指标和第二指标进行名称一致性分析,判断所述第一指标和第二指标的名称一致性关系包括:
S1011:根据通用词库对输入的第一指标和第二指标进行分词处理,获得多个第一指标词段和多个第二指标词段。
例如,对于指标“月有效通话客户数”根据所述通用词库对其进行分词,获得“月”“有效”“通话”“客户数”这四个指标词段。
S1012:根据维度词库和度量词库将所述多个第一指标词段划分为一个所述第一指标的度量变量和至少一个所述第一指标的维度变量。
仍然以“月有效通话客户数”分成的“月”“有效”“通话”“客户数”这四个指标词段为例,将这四个指标词段在所述维度词库和度量词库中进行匹配发现,“月”“有效”“通话”属于维度变量,“客户数”属于度量变量。则“月有效通话客户数”这一指标有三个维度变量,分别是“月”“有效”和“通话”;有一个度量变量,为“客户数”。
S1013:根据所述维度词库和度量词库将所述多个第二指标词段划分为一个所述第二指标的度量变量和至少一个所述第二指标的维度变量。
S1014:根据所述第一指标的度量变量、至少一个所述第一指标的维度变量、所述第二指标的度量变化、至少一个所述第二指标的维度变量和同义词词库判断所述第一指标和第二指标的名称一致性关系。
需要说明的是,步骤S1011、S1012、S1013和S1014可以通过开源项目Luence,结合中文分词组件,采用正向迭代最细粒度切分算法完成。但本申请并不对其具体完成方式作出限定,具体视实际情况而定。
所述通用词库中存储有汉语词典词库,所述汉语词典包括但不限于辞海、中华大辞典和汉语大词典。所述维度词库中存储有用于指标中的所有维度变量;所述度量词库中存储有用于指标中的所有度量变量;所述同义词词库中存储有汉语词语之间的同义词关系。
在上述实施例的基础上,在本申请的另一个实施例中,如图3所示,所述根据所述第一指标的度量变量、至少一个所述第一指标的维度变量、所述第二指标的度量变化、至少一个所述第二指标的维度变量和同义词词库判断所述第一指标和第二指标的名称一致性关系包括:
S10141:判断所述第一指标的度量变量与所述第二指标的度量变量是否相同,如果是,则判定所述第一指标的度量变量与所述第二指标的度量变量一致;如果否,则根据同义词词库判断所述第一指标的度量变量是否为所述第二指标的度量变量的同义词,若是,则判定所述第一指标的度量变量与所述第二指标的度量变量一致,若否,则判定所述第一指标的度量变量与所述第二指标的度量变量不一致;
S10142:将所述至少一个第一指标的维度变量作为维度变量集合,抽取所述维度变量集合中的一个所述第一指标的维度变量作为目标变量,抽取的所述第一指标的维度变量不再作为所述维度变量集合的元素;
S10143:判断所述至少一个第二指标的维度变量中是否存在与所述目标变量相同的第二指标的维度变量,如果是,则判定与所述目标变量相同的第二指标的维度变量与所述目标变量一致,如果否,则根据同义词词库判断所述至少一个第二指标的维度变量的同义词中是否存在与所述目标变量相同的维度变量,若是,则判定同义词与所述目标变量相同的第二指标的维度变量与所述目标变量为一致,若否,则判定所述目标变量与所述至少一个第二指标的维度变量不一致;
S10144:判断所述目标变量是否为空,如果否,则返回抽取所述维度变量集合中的一个所述第一指标的维度变量作为目标变量的步骤;如果是,则统计所述至少一个第一指标的维度变量数量、所述至少一个第二指标的维度变量的数量、所述至少一个第一指标的维度变量数量与所述至少一个第二指标的维度变量的一致数量;
S10145:根据所述第一指标的度量变量与所述第二指标的度量变量的一致与否,以及所述至少一个第一指标的维度变量数量、所述至少一个第二指标的维度变量的数量、所述至少一个第一指标的维度变量与所述至少一个第二指标的维度变量的一致数量判定所述第一指标和第二指标的名称一致性关系。
本申请实施例仅提供了一种可行的步骤S1014的具体实施方式,在本申请的其他实施例中,还可以通过其他的比对方式完成,本申请对此并不做限定,具体视实际情况而定。
在上述实施例的基础上,在本申请的又一个实施例中,如图4所示,所述根据所述第一指标的度量变量与所述第二指标的度量变量的一致与否,以及所述至少一个第一指标的维度变量数量、所述至少一个第二指标的维度变量的数量、所述至少一个第一指标的维度变量与所述至少一个第二指标的维度变量的一致数量判定所述第一指标和第二指标的名称一致性关系包括:
S101451:当所述第一指标的度量变量与所述第二指标的度量变量不一致时,所述第一指标和第二指标的名称一致性关系为名称不一致。
比如对于指标“月有效通话客户数”的度量变量为“客户数”,“月有效通话次数”的度量变量为“通话次数”,且“客户数”和“通话次数”也不是同义词,则可以认为这两个指标的名称一致性关系为名称不一致。
S101452:当所述第一指标的度量变量与所述第二指标的度量变量一致、所述至少一个第一指标的维度变量数量等于所述至少一个第二指标的维度变量的数量,且所述至少一个第一指标的维度变量与所述至少一个第二指标的维度变量的一致数量等于所述第一指标的维度变量或所述第二指标的维度变量数量时,所述第一指标和第二指标的名称一致性关系为名称一致。
比如对于指标“月有效通话客户数”和“月通话有效客户数”这两个指标而言,它们的度量变量一致,维度变量数量相同,且两个指标一致的维度变量的数量等于这两个指标的维度变量的数量,这时我们认为“月有效通话客户数”和“有通话有效客户数”这两个指标的名称一致性关系为一致。
S101453:当所述第一指标的度量变量与所述第二指标的度量变量一致、所述至少一个第一指标的维度变量数量小于或大于所述至少一个第二指标的维度变量的数量,且所述至少一个第一指标的维度变量与所述至少一个第二指标的维度变量的一致数量等于所述至少一个第一指标的维度变量时或所述至少一个第二指标的维度变量的数量时,所述第一指标和第二指标的名称一致性关系为名称包含。
比如对于指标“月有效通话客户数”和“月通话客户数”这两个指标而言,它们的度量变量一致,“月通话客户数”的维度变量数量小于“月有效通话客户数”,且“月通话客户数”与“月有效通话客户数”一致的维度变量数量为2,等于“月通话客户数”的维度变量数量,则认为“月通话客户数”这一指标与“月有效通话客户数”这一指标的名称一致性关系为名称包含,具体地,“月通话客户数”包含“月有效通话客户数”。
在上述实施例的基础上,在本申请的再一个实施例中,如图5所示,所述对所述第一指标和第二指标进行定义一致性分析,判断所述第一指标和第二指标的定义一致性关系包括:
S2011:对输入的第一指标的第一结构化查询语言sql语句和第二指标的第二sql语句进行解析,获得所述第一sql语句的第一数据表和第二sql语句的第二数据表。
S2022:判断所述第一数据表和第二数据表是否相同,如果是,则根据所述第一sql语句和第二sql语句判断所述第一指标和第二指标的定义一致性关系;如果否,则根据数据表血缘关系数据库查询所述第一数据表的所有源表和所述第二数据表的所有源表,判断所述第一数据库的所有源表与所述第二数据表的所有源表是否存在相同的数据表,若否,则判定所述第一sql语句与所述第二sql语句之间的定义一致性关系为不一致;若是,则将该数据表作为目标数据表,将所述第一sql语句转换为关于目标数据表的第三sql语句,将所述第二sql语句转换为关于目标数据表的第四sql语句,并将所述第三sqp语句作为新的第一sql语句,将所述第四sql语句作为新的第二sql语句,返回根据所述第一sql语句和第二sql语句判断所述第一指标和第二指标的定义一致性关系的步骤;
所述数据表血缘关系数据库中存储有数据表之间的血缘关系。
本申请的一个优选实施例提供了一种根据所述第一sql语句和第二sql语句判断所述第一指标和第二指标的定义一致性关系的方法,如图6所示,包括:
S20221:对所述第一sql语句和第二sql语句进行解析处理,获得所述第一sql语句的TWhere对象以及所述第二sql语句的TWhere对象;
S20222:从所述第一sql语句的TWhere对象和所述第二sql语句的TWhere对象的节点中获取多个第一子条件和多个第二子条件,所述第一子条件为从所述第一sql语句的TWhere对象中获取的子条件,所述第二子条件为从所述第二sql语句的TWhere对象中获取的子条件;
S20223:根据所述多个第一子条件和多个第二子条件判断所述第一sql语句和第二sql语句之间的定义一致性关系。
具体地,图7示出了一种根据所述多个第一子条件和多个第二子条件判断所述第一sql语句和第二sql语句之间的定义一致性关系的例子。在图7中,所述第一sql语句的三个第一子条件和第二sql语句的三个第二子条件之间分别为“包含”“一致”和“一致”关系,那么第一sql语句和第二sql语句之间的定义一致性关系为定义包含。
在上述实施例的基础上,在本申请的另一个优选实施例中,如图8所示,所述根据所述第一指标和第二指标的名称一致性关系和定义一致性关系判断所述第一指标和第二指标的一致性关系之后还包括:
S104:根据所述第一指标和第二指标的一致性关系给出关于所述第一指标和第二指标的优化策略,所述优化策略包括合并、修改指标名称、修改统计口径和下线指标。
在上述实施例的基础上,在本申请的又一个优选实施例中,如图9所示,所述根据所述第一指标和第二指标的名称一致性关系和定义一致性关系判断所述第一指标和第二指标的一致性关系之后还包括:
S105:对具有一致关系的所述第一指标和第二指标,判断所述第一指标和第二指标的数据是否一致,如果是,则对所述第一指标或所述第二指标进行下线指标处理;
S106:对名称一致性关系为包含关系的所述第一指标和第二指标,判断所述第一指标和第二指标的数据关系是否与所述第一指标和第二指标名称一致性关系相违背,如果是,则确定所述第一指标和第二指标为异常关系。
具体地,针对名称一致性关系为包含关系的所述第一指标和第二指标,所述第一指标和第二指标的数据关系是否与所述第一指标和第二指标名称一致性关系相违背的情况进行说明,比如当所述第一指标与第二指标的名称一致性关系为第一指标包含第二指标,而所述第一指标和第二指标的定义一致性关系为第二指标包含第一指标时,则认为所述第一指标和第二指标的名称一致性关系和定义一致性关系相违背,此时需要核查所述第一指标和第二指标的数据关系是否与所述第一指标和第二指标名称一致性关系相违背,如果是,则确定所述第一指标和第二指标为异常关系。
相应的,本申请实施例还提供了一种指标一致性分析系统,如图10所示,包括:
名称分析模块100,用于对输入的第一指标和第二指标进行名称一致性分析,判断所述第一指标和第二指标的名称一致性关系,所述名称一致性关系包括名称一致、名称不一致和名称包含;
定义分析模块200,用于对所述第一指标和第二指标进行定义一致性分析,判断所述第一指标和第二指标的定义一致性关系,所述定义一致性关系包括定义一致、定义不一致和定义包含;
判断模块300,用于根据所述第一指标和第二指标的名称一致性关系和定义一致性关系判断所述第一指标和第二指标的一致性关系,所述一致性关系包括一致关系、无关关系、同名不同义关系、同义不同名关系和异常关系。
需要说明的是,所述名称一致是指所述第一指标和第二指标的名称一致,比如“月有效通话客户数”和“月通话有效客户数”;所述名称不一致是指所述第一指标和第二指标的名称不相关,比如“月有效通话客户数”和“月有效短信客户数”;所述名称包含是指所述第一指标和第二指标的名称为包含关系,比如“月通话客户数”包含“月有效通话客户数”。
一般而言,一个指标一般包括编码、名称、单位、类别、业务定义描述和指标定义这些参数;其中,编码是一个指标的唯一标识,名称是指指标的短名称,例如活跃客户数等,单位是指标的计量单位,如户、万元等,类别是一个指标的分类,如收入类,市场竞争类等;业务定义描述是一个指标在创建时人为对目标属性或性质的文字描述;而指标定义是指一个指标的统计口径或计算公式,是该指标最终的数值来源的渠道或方式。那么通过对所述第一指标和第二指标进行定义一致性分析可以准确的获悉所述第一指标和第二指标的数值来源的渠道或方式的一致性关系,那么结合所述第一指标和第二指标的名称一致性关系就可以准确的判断出所述第一指标和第二指标的一致性关系,避免根据所述第一指标和第二指标的名称和业务定义描述来判断所述第一指标和第二指标的一致性关系,造成的准确性低的问题。
在上述实施例的基础上,在本申请的一个实施例中,所述名称分析模块100包括:
分词单元,用于根据通用词库对输入的第一指标和第二指标进行分词处理,获得多个第一指标词段和多个第二指标词段;
例如,对于指标“月有效通话客户数”根据所述通用词库对其进行分词,获得“月”“有效”“通话”“客户数”这四个指标词段。
第一匹配单元,用于根据维度词库和度量词库将所述多个第一指标词段划分为一个所述第一指标的度量变量和至少一个所述第一指标的维度变量;
仍然以“月有效通话客户数”分成的“月”“有效”“通话”“客户数”这四个指标词段为例,将这四个指标词段在所述维度词库和度量词库中进行匹配发现,“月”“有效”“通话”属于维度变量,“客户数”属于度量变量。则“月有效通话客户数”这一指标有三个维度变量,分别是“月”“有效”和“通话”;有一个度量变量,为“客户数”。
第二匹配单元,用于根据所述维度词库和度量词库将所述多个第二指标词段划分为一个所述第二指标的度量变量和至少一个所述第二指标的维度变量;
第一判断单元,用于根据所述第一指标的度量变量、至少一个所述第一指标的维度变量、所述第二指标的度量变化、至少一个所述第二指标的维度变量和同义词词库判断所述第一指标和第二指标的名称一致性关系。
需要说明的是,所述通用词库中存储有汉语词典词库,所述汉语词典包括但不限于辞海、中华大辞典和汉语大词典。所述维度词库中存储有用于指标中的所有维度变量;所述度量词库中存储有用于指标中的所有度量变量;所述同义词词库中存储有汉语词语之间的同义词关系。
在上述实施例的基础上,在本申请的另一个实施例中,所述第一判断单元包括:
度量变量判断单元,用于判断所述第一指标的度量变量与所述第二指标的度量变量是否相同,如果是,则判定所述第一指标的度量变量与所述第二指标的度量变量一致;如果否,则根据同义词词库判断所述第一指标的度量变量是否为所述第二指标的度量变量的同义词,若是,则判定所述第一指标的度量变量与所述第二指标的度量变量一致,若否,则判定所述第一指标的度量变量与所述第二指标的度量变量不一致;
维度变量抽取单元,用于将所述至少一个第一指标的维度变量作为维度变量集合,抽取所述维度变量集合中的一个所述第一指标的维度变量作为目标变量,抽取的所述第一指标的维度变量不再作为所述维度变量集合的元素;
第二判断单元,用于判断所述至少一个第二指标的维度变量中是否存在与所述目标变量相同的第二指标的维度变量,如果是,则判定与所述目标变量相同的第二指标的维度变量与所述目标变量一致,如果否,则根据同义词词库判断所述至少一个第二指标的维度变量的同义词中是否存在与所述目标变量相同的维度变量,若是,则判定同义词与所述目标变量相同的第二指标的维度变量与所述目标变量为一致,若否,则判定所述目标变量与所述至少一个第二指标的维度变量不一致;
第三判断单元,用于判断所述目标变量是否为空,如果否,则返回所述维度变量抽取单元;如果是,则统计所述至少一个第一指标的维度变量数量、所述至少一个第二指标的维度变量的数量、所述至少一个第一指标的维度变量数量与所述至少一个第二指标的维度变量的一致数量;
第四判断单元,用于根据所述第一指标的度量变量与所述第二指标的度量变量的一致与否,以及所述至少一个第一指标的维度变量数量、所述至少一个第二指标的维度变量的数量、所述至少一个第一指标的维度变量与所述至少一个第二指标的维度变量的一致数量判定所述第一指标和第二指标的名称一致性关系。
在上述实施例的基础上,在本申请的又一个实施例中,所述第四判断单元具体用于,当所述第一指标的度量变量与所述第二指标的度量变量不一致时,所述第一指标和第二指标的名称一致性关系为名称不一致;
当所述第一指标的度量变量与所述第二指标的度量变量一致、所述至少一个第一指标的维度变量数量等于所述至少一个第二指标的维度变量的数量,且所述至少一个第一指标的维度变量与所述至少一个第二指标的维度变量的一致数量等于所述第一指标的维度变量或所述第二指标的维度变量数量时,所述第一指标和第二指标的名称一致性关系为名称一致;
当所述第一指标的度量变量与所述第二指标的度量变量一致、所述至少一个第一指标的维度变量数量小于或大于所述至少一个第二指标的维度变量的数量,且所述至少一个第一指标的维度变量与所述至少一个第二指标的维度变量的一致数量等于所述至少一个第一指标的维度变量时或所述至少一个第二指标的维度变量的数量时,所述第一指标和第二指标的名称一致性关系为名称包含。
比如对于指标“月有效通话客户数”的度量变量为“客户数”,“月有效通话次数”的度量变量为“通话次数”,且“客户数”和“通话次数”也不是同义词,则可以认为这两个指标的名称一致性关系为名称不一致。对于指标“月有效通话客户数”和“月通话有效客户数”这两个指标而言,它们的度量变量一致,维度变量数量相同,且两个指标一致的维度变量的数量等于这两个指标的维度变量的数量,这时我们认为“月有效通话客户数”和“有通话有效客户数”这两个指标的名称一致性关系为一致。对于指标“月有效通话客户数”和“月通话客户数”这两个指标而言,它们的度量变量一致,“月通话客户数”的维度变量数量小于“月有效通话客户数”,且“月通话客户数”与“月有效通话客户数”一致的维度变量数量为2,等于“月通话客户数”的维度变量数量,则认为“月通话客户数”这一指标与“月有效通话客户数”这一指标的名称一致性关系为名称包含,具体地,“月通话客户数”包含“月有效通话客户数”。
在上述实施例的基础上,在本申请的再一个实施例中,所述定义分析模块200包括:
sql解析单元,用于对输入的第一指标的第一结构化查询语言sql语句和第二指标的第二sql语句进行解析,获得所述第一sql语句的第一数据表和第二sql语句的第二数据表;
第五判断单元,用于判断所述第一数据表和第二数据表是否相同,如果是,则根据所述第一sql语句和第二sql语句判断所述第一指标和第二指标的定义一致性关系;如果否,则根据数据表血缘关系数据库查询所述第一数据表的所有源表和所述第二数据表的所有源表,判断所述第一数据库的所有源表与所述第二数据表的所有源表是否存在相同的数据表,若否,则判定所述第一sql语句与所述第二sql语句之间的定义一致性关系为不一致;若是,则将该数据表作为目标数据表,将所述第一sql语句转换为关于目标数据表的第三sql语句,将所述第二sql语句转换为关于目标数据表的第四sql语句,并将所述第三sqp语句作为新的第一sql语句,将所述第四sql语句作为新的第二sql语句,返回根据所述第一sql语句和第二sql语句判断所述第一指标和第二指标的定义一致性关系的步骤;
所述数据表血缘关系数据库中存储有数据表之间的血缘关系。
在上述实施例的基础上,在本申请的一个优选实施例中,所述第五判断单元具体用于,判断所述第一数据表和第二数据表是否相同,如果是,则对所述第一sql语句和第二sql语句进行解析处理,获得所述第一sql语句的TWhere对象以及所述第二sql语句的TWhere对象;
从所述第一sql语句的TWhere对象和所述第二sql语句的TWhere对象的节点中获取多个第一子条件和多个第二子条件,所述第一子条件为从所述第一sql语句的TWhere对象中获取的子条件,所述第二子条件为从所述第二sql语句的TWhere对象中获取的子条件;
根据所述多个第一子条件和多个第二子条件判断所述第一sql语句和第二sql语句之间的定义一致性关系;
如果否,则根据数据表血缘关系数据库查询所述第一数据表的所有源表和所述第二数据表的所有源表,判断所述第一数据库的所有源表与所述第二数据表的所有源表是否存在相同的数据表,若否,则判定所述第一sql语句与所述第二sql语句之间的定义一致性关系为不一致;若是,则将该数据表作为目标数据表,将所述第一sql语句转换为关于目标数据表的第三sql语句,将所述第二sql语句转换为关于目标数据表的第四sql语句,并将所述第三sqp语句作为新的第一sql语句,将所述第四sql语句作为新的第二sql语句,返回对所述第一sql语句和第二sql语句进行解析处理的步骤。
具体地,图7示出了一种根据所述多个第一子条件和多个第二子条件判断所述第一sql语句和第二sql语句之间的定义一致性关系的例子。在图7中,所述第一sql语句的三个第一子条件和第二sql语句的三个第二子条件之间分别为“包含”“一致”和“一致”关系,那么第一sql语句和第二sql语句之间的定义一致性关系为定义包含。
在上述实施例的基础上,在本申请的另一个优选实施例中,所述指标一致性分析系统还包括:
优化策略模块,用于根据所述第一指标和第二指标的一致性关系给出关于所述第一指标和第二指标的优化策略,所述优化策略包括合并、修改指标名称、修改统计口径和下线指标。
在上述实施例的基础上,在本申请的又一个优选实施例中,所述指标一致性分析系统还包括:
处理模块,用于对具有一致关系的所述第一指标和第二指标,判断所述第一指标和第二指标的数据是否一致,如果是,则对所述第一指标或所述第二指标进行下线指标处理;和用于对名称一致性关系为包含关系的所述第一指标和第二指标,判断所述第一指标和第二指标的数据关系是否与所述第一指标和第二指标名称一致性关系相违背,如果是,则确定所述第一指标和第二指标为异常关系。
具体地,针对名称一致性关系为包含关系的所述第一指标和第二指标,所述第一指标和第二指标的数据关系是否与所述第一指标和第二指标名称一致性关系相违背的情况进行说明,比如当所述第一指标与第二指标的名称一致性关系为第一指标包含第二指标,而所述第一指标和第二指标的定义一致性关系为第二指标包含第一指标时,则认为所述第一指标和第二指标的名称一致性关系和定义一致性关系相违背,此时需要核查所述第一指标和第二指标的数据关系是否与所述第一指标和第二指标名称一致性关系相违背,如果是,则确定所述第一指标和第二指标为异常关系。
综上所述,本申请实施例提供了一种指标一致性分析方法及分析系统,其中,所述指标一致性分析方法通过对所述第一指标和第二指标分别进行名称一致性分析和定义一致性分析,分别判断所述第一指标和第二指标的名称一致性关系和定义一致性关系,最后根据所述第一指标和第二指标的名称一致性关系和定义一致性关系判断所述第一指标和第二指标的一致性关系,避免根据所述第一指标和第二指标的名称和业务定义描述来判断所述第一指标和第二指标的一致性关系,造成的准确性低的问题。这是因为所述第一指标和第二指标的定义(统计口径或计算方法)具有唯一且确定的特性,不会出现由于人为描述的不清楚或不准确而造成根据一致性判断不准确的情况出现。
并且,所述指标一致性分析方法可以依托所述指标一致性分析系统实现自动对所述第一指标和第二指标的一致性分析,减少了指标管理人员的工作量。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。