一种可视化结构化查询语言条件树构建方法及装置的制造方法
【技术领域】
[0001]本发明涉及通信领域中业务运营支撑技术,尤其涉及一种可视化结构化查询语言(Structured Query Language, SQL)条件树构建方法及装置。
【背景技术】
[0002]随着信息技术的发展,企业的信息量与日俱增,业务系统越来越复杂,从而对数据分析的要求也越来越高。面对当前日益复杂的数据分析需求,分析人员往往需要设计复杂的业务分析SQL,在设计过程中通常存在如下几个问题:
[0003]第一、大部分业务分析人员掌握的有关数据库方面知识不深,无法完全手工进行复杂业务的SQL编写;
[0004]第二、从安全方面考虑,往往需要避免业务分析人员直接编写数据库SQL脚本,换而使用映射后的业务SQL脚本;
[0005]第三、现有的数据分析产品在构建复杂SQL时,在简易性、易懂性方面存在一定的欠缺。
[0006]面对上述问题,亟需一种简便、快速,同时又能满足复杂业务数据分析需求的数据分析方法,使复杂数据分析工作的效率提升。
[0007]另外,现有业界的数据分析产品,如商业的cognos、bo、MicroStrategy、以及开源的Pentaho、SpagoBI等,在构建数据分析的SQL条件语句时,只是简单地将用户所定义的各个条件一一罗列,采用默认与(and)的运算关系进行组合,当需要处理SQL条件随意组合的复杂业务数据分析需求时,在易用性与直观性方面存在不足。
[0008]申请号为201110163280.4的中国专利申请文件,公开了一种复杂SQL语句的生成方法,可以直接应用于数据库系统的测试过程,能解决手工编写组合关键字SQL语句出错率高、效率低的问题。该申请文件通过SQL关键字、组合SQL语句和生成方法,同时根据用户指定的关键字生成复杂SQL,其重点在于构造复杂SQL的完整语法,并不侧重复杂SQL在条件上的构造方法,也不侧重于用户从业务的角度构造复杂SQL的方法,在构造的方法与展现的方法上仍存在层次不清晰、难以理解等弊端。
【发明内容】
[0009]有鉴于此,本发明实施例希望提供一种可视化SQL条件树构建方法及装置,能够使整个SQL条件语句的构建过程方便快捷、简明易懂,有效满足复杂业务数据分析的需求。
[0010]为达到上述目的,本发明的技术方案是这样实现的:
[0011]本发明实施例提供了一种可视化SQL条件树构建方法,该方法包括:
[0012]判断待构建SQL条件中的各个条件是否属于属性运算表达式,将属于属性运算表达式的条件分别作为第一层叶子节点,对不属于属性运算表达式的条件作为第一层中间节点,并将不属于属性运算表达式的条件按与或关系划分为一个以上第一子条件组;
[0013]判断各第一子条件组中的各个条件是否属于属性运算表达式,将属于属性运算表达式的条件分别作为第二层叶子节点,对不属于属性运算表达式的条件作为第二层中间节点,并将不属于属性运算表达式的条件按与或关系划分为一个以上第二子条件组;
[0014]依此类推,直到全部条件均分解为属性运算表达式;
[0015]根据所述待构建SQL条件构建默认条件组,并将默认条件组作为根节点,再按确定的各层的中间节点和叶子节点构建SQL条件树。
[0016]上述方案中,所述条件组或子条件组包括各个属性运算表达式间、或属性运算表达式组合间的与或关系;所述属性运算表达式包括各个SQL属性与值之间的运算关系。
[0017]上述方案中,所述方法还包括:将所述SQL条件树通过操作界面以条件组名称和运算关系两列进行展现。
[0018]上述方案中,所述条件组名称对应根节点、中间节点以及叶子节点分别为:默认条件组、子条件组以及属性运算表达式中各个SQL属性的名称。
[0019]本发明实施例还提供了一种可视化SQL条件树构建装置,该装置包括:判断模块、构建模块;其中,
[0020]所述判断模块,用于判断待构建SQL条件中的各个条件是否属于属性运算表达式,将属于属性运算表达式的条件分别作为第一层叶子节点,对不属于属性运算表达式的条件作为第一层中间节点,并将不属于属性运算表达式的条件按与或关系划分为一个以上第一子条件组;判断各第一子条件组中的各个条件是否属于属性运算表达式,将属于属性运算表达式的条件分别作为第二层叶子节点,对不属于属性运算表达式的条件作为第二层中间节点,并将不属于属性运算表达式的条件按与或关系划分为一个以上第二子条件组;依此类推,直到全部条件均分解为属性运算表达式;
[0021]所述构建模块,用于根据所述待构建SQL条件构建默认条件组,并将默认条件组作为根节点,再按照所述判断模块确定的各层的中间节点和叶子节点构建SQL条件树。
[0022]上述方案中,所述装置还包括显示模块;其中,
[0023]所述显示模块,用于将由所述构建模块构建的SQL条件树通过操作界面以条件组名称和运算关系两列进行展现。
[0024]本发明实施例所提供的可视化SQL条件树构建方法及装置,判断待构建SQL条件中的各个条件是否属于属性运算表达式,将属于属性运算表达式的条件分别作为第一层叶子节点,对不属于属性运算表达式的条件作为第一层中间节点,并将不属于属性运算表达式的条件按与或关系划分为一个以上第一子条件组;判断各第一子条件组中的各个条件是否属于属性运算表达式,将属于属性运算表达式的条件分别作为第二层叶子节点,对不属于属性运算表达式的条件作为第二层中间节点,并将不属于属性运算表达式的条件按与或关系划分为一个以上第二子条件组;依此类推,直到全部条件均分解为属性运算表达式;根据所述待构建SQL条件构建默认条件组,并将默认条件组作为根节点,再按确定的各层的中间节点和叶子节点构建SQL条件树。进一步地,将所述SQL条件树通过操作界面以条件组名称和运算关系两列进行展现。如此,本发明实施例在进行复杂业务数据分析时,通过可视化的操作界面,采用树型结构与条件组结合的方式,使整个SQL条件语句的构建过程方便快捷、简明易懂,能有效满足复杂业务数据分析的需求,提升数据分析工作的效率,降低数据分析的成本。
【附图说明】
[0025]图1为现有技术中cognos构建数据分析条件的界面示意图;
[0026]图2为本发明实施例可视化SQL条件树构建方法的实现流程示意图;
[0027]图3为本发明实施例可视化SQL条件树构建装置的组成结构示意图;
[0028]图4为本发明实施例一种SQL条件树的组成结构示意图;
[0029]图5为本发明实施例可视化SQL条件树的实际应用效果图。
【具体实施方式】
[0030]图1为现有技术中cognos构建数据分析条件的界面示意图,如图1所示,cognos在构建SQL条件时,是将各个逻辑条件并排放置在界面上方,如此,不能直观地体现SQL条件中逻辑条件组合的层次关系。
[0031]在本发明实施例中,判断待构建SQL条件中的各个条件是否属于属性运算表达式,将属于属性运算表达式的条件分别作为第一层叶子节点,对不属于属性运算表达式的条件作为第一层中间节点,并将不属于属性运算表达式的条件按与或关系划分为一个以上第一子条件组;判断各第一子条件组中的各个条件是否属于属性运算表达式,将属于属性运算表达式的条件分别作为第二层叶子节点,对不属于属性运算表达式的条件作为第二层中间节点,并将不属于属性运算表达式的条件按与或关系划分为一个以上第二子条件组,依此类推,直到全部条件均分解为属性运算表达式;之后,先根据所述待构建SQL条件构建默认条件组,并将默认条件组作为根节点,再按确定的各层的中间节点和叶子节点构建SQL条件树。
[0032]进一步地,还可以将所述SQL条件树通过操作界面以条件组名称和运算关系两列进行展现。
[0033]图2为本发明实施例可视化SQL条件树构建方法的实现流程示意图,如图2所示,本发明实施例可视化SQL条件树构建方法包括:
[0034]步骤S100:判断待构建SQL条件中的各个条件是否属于属性运算表达式,将属于属性运算表达式的条件分别作为第一层叶子节点,对不属于属性运算表达式的条件作为第一层中间节点,并将不属于属性运算表达式的条件按与或关系划分为一个以上第一层子条件组;
[0035]步骤SlOl:判断各第一层子条件组中的各个条件是否属于属性运算表达式,将属于属性运算表达式的条件分别作为第二层叶子节点,对不属于属性运算表达式的条件作为第二层中间节点,并将不属于属性运算表达式的条件按与或关系划分为一个以上第二层子条件组;
[0036]步骤S102:依此类推,直到全部条件均分解为属性运算表达式;
[0037]步骤S103:根据所述待构建SQL条件构建默认条件组,并将默认条件组作为根节点,再按确定的各层的中间节点和叶子节点构建SQL条件树。
[0038]这里,所述条件组或子条件组包括各个属性运算表达式间、或者属性运算表达式组合间的与或关系;所述属性运算表达式包括各个SQL属性与值之间的运算关系。
[0039]进一步地,本发明实施例的
方法还可以包括步骤S104:将所述SQL条件树通过操作界面以条件组名称和运算关系两列进行展现。
[0040]这里,所述条件组名称对应根节点、中间节点以及叶子节点分别为:默认条件组、子条件组以及属性运算表达式中的各个SQL属性的名称。
[0041]图3为本发明实施例可视化SQL条件树构建装置组成结构示意图,如图3所示,本发明实施例可视化SQL条件树构建装置,包括:判断模块10、构建模块11 ;其中,
[0042]所述判断模块10,用于判断待构建SQL条件中的各个条件是否属于属性运算表达式,将属于属性运算表达式的条件分别作为第一层叶子节点,对不属于属性运算表达式的条件作为第一层中间节点,并将不属于属性运算表达式的条件按与或关系划分为一个以上第一子条件组;判断各第一子条件组中的各个条件是否属于属性运算表达式,将属于属性运算表达式的条件分别作为第二层叶子节点,对不属于属性运算表达式的条件作为第二层中间节点,并将不属于属性运算表达式的条件按与或关系划分为一个以上第二子条件组;依此类推,直到全部条件均分解为属性运算表达式;
[0043]所述构建模块11,用于根据所述待构建SQL条件构建默认条件组,并将默认条件组作为根节点,再按照所述判断模块10确定的各层的中间节点和叶子节点构建SQL条件树。
[0044]这里,所述条件组或子条件组包括各个属性运算表达式间、或者属性运算表达式组合间的与或关系;所述属性运算表达式包括各个SQL属性与值之间的运算关系。
[0045]进一步地,本发明实施例所述装置还包括显示模块12 ;其中,
[0046]所述显示模块12,用于将所述构建模块11构建的SQL条件树通过操作界面以条件组名称和运算关系两列进行展现。
[0047]这里,所述条件组名称对应根节点、中间节点以及叶子节点分别为:默认条件组、子条件组以及属性运算表达式中的各个SQL属性的名称。
[0048]在实际应用中,所述判断模块10、构建模块11、显示模块12均可由中央处理器(CPU)、微处理器(MPU)、数字信号处理器(DSP)、或现场可编程门阵列(FPGA)实现。
[0049]下面以一个实际的案例来说明本发明是如何构建复杂SQL条件语句的,假设需要构建一个复杂的SQL条件,如:满足“统计时间”等于2013年6月,并且“归属地市”为福州,用户属于高校市场用户或者中高端市场用户,且高校市场用户中满足20〈=ARPU〈=50或80〈=ARPU〈=100。
[0050]步骤S200:判断所给出的SQL条件中的各个条件是否属于属性运算表达式,将属于属性运算表达式的条件分别作为第一层叶子节点;
[0051]具体的,在所给出的SQL条件中,统计时间=201306、归属地市=福州,属于属性运算表达式,可以作为第一层叶子节点;其余不属于属性运算表达式的条件,如“用户属于高校市场用户或者中高端市场用户,且高校市场用户中满足20〈=ARPU〈=50或80〈=ARPU〈=100”,则作为第一层中间节点,并将不属于属性运算表达式的条件按或关系划分为一个第一层子条件组;
[0052]步骤S201:判断第一层子条件组(按or关系)中的各个条件是否属于属性运算表达式,将属于属性运算表达式的条件作为第二层叶子节点;
[0053]具体的,在第一层子条件组中,用户类型=中高端市场用户,属于属性运算表达式,可以作为第二层叶子节点;其余不属于属性运算表达式的条件作为第二层中间节点,并将不属于属性运算表达式的条件按与关系划分为一个第二层子条件组;
[0054]步骤S202:判断第二层子条件组(按and关系)中的各个条件是否属于属性运算表达式,将属于属性运算表达式的条件作为第三层叶子节点;
[0055]具体的,在第二层子条件组中,用户类型=高校市场用户,属于属性运算表达式,可以作为第三层叶子节点;其余不属于属性运算表达式的条件作为第三层中间节点,并将不属于属性运算表达式的条件按或关系划分为一个第三层子条件组;
[0056]步骤S203:判断第三层子条件组(按or关系)中的各个条件是否属于属性运算表达式,将属于属性运算表达式的条件分别作为第四层叶子节点;
[0057]具体的,在第三层子条件组中,20〈=ARPU〈=50、80〈=ARPU〈=100,均属于属性运算表达式,可以作为最后一层叶子节点;至此为止,全部条件均分解为属性运算表达式。
[0058]步骤S204:根据所给出的SQL条件构建默认条件组(按and关系),并将该默认条件组作为根节点,再结合按步骤S200至S203确定的各层的中间节点和叶子节点构建SQL条件树;
[0059]具体如图4所示,为本发明实施例一种SQL条件树的组成结构示意图。
[0060]进一步的,将步骤S204构建的SQL条件树通过操作界面以条件组名称和运算关系两列进行展现后,该应用实例的可视化SQL条件树的实际应用效果图,如图5所示。对比图1和图5可以发现利用本发明实施例构建的SQL条件方式,在表达SQL的逻辑关系及语义上都能让用户更容易理解,达到简明易懂、提高效率的效果。
[0061]以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。
【主权项】
1.一种可视化结构化查询语言SQL条件树构建方法,其特征在于,所述方法包括: 判断待构建SQL条件中的各个条件是否属于属性运算表达式,将属于属性运算表达式的条件分别作为第一层叶子节点,对不属于属性运算表达式的条件作为第一层中间节点,并将不属于属性运算表达式的条件按与或关系划分为一个以上第一子条件组; 判断各第一子条件组中的各个条件是否属于属性运算表达式,将属于属性运算表达式的条件分别作为第二层叶子节点,对不属于属性运算表达式的条件作为第二层中间节点,并将不属于属性运算表达式的条件按与或关系划分为一个以上第二子条件组; 依此类推,直到全部条件均分解为属性运算表达式; 根据所述待构建SQL条件构建默认条件组,并将默认条件组作为根节点,再按确定的各层的中间节点和叶子节点构建SQL条件树。2.根据权利要求1所述的方法,其特征在于,所述条件组或子条件组包括各个属性运算表达式间、或属性运算表达式组合间的与或关系;所述属性运算表达式包括各个SQL属性与值之间的运算关系。3.根据权利要求1或2所述的方法,其特征在于,所述方法还包括:将所述SQL条件树通过操作界面以条件组名称和运算关系两列进行展现。4.根据权利要求3所述的方法,其特征在于,所述条件组名称对应根节点、中间节点以及叶子节点分别为:默认条件组、子条件组以及属性运算表达式中各个SQL属性的名称。5.一种可视化SQL条件树构建装置,其特征在于,所述装置包括:判断模块、构建模块;其中, 所述判断模块,用于判断待构建SQL条件中的各个条件是否属于属性运算表达式,将属于属性运算表达式的条件分别作为第一层叶子节点,对不属于属性运算表达式的条件作为第一层中间节点,并将不属于属性运算表达式的条件按与或关系划分为一个以上第一子条件组;判断各第一子条件组中的各个条件是否属于属性运算表达式,将属于属性运算表达式的条件分别作为第二层叶子节点,对不属于属性运算表达式的条件作为第二层中间节点,并将不属于属性运算表达式的条件按与或关系划分为一个以上第二子条件组;依此类推,直到全部条件均分解为属性运算表达式; 所述构建模块,用于根据所述待构建SQL条件构建默认条件组,并将默认条件组作为根节点,再按照所述判断模块确定的各层的中间节点和叶子节点构建SQL条件树。6.根据权利要求5所述的装置,其特征在于,所述条件组或子条件组包括各个属性运算表达式间、或属性运算表达式组合间的与或关系;所述属性运算表达式包括各个SQL属性与值之间的运算关系。7.根据权利要求5或6所述的装置,其特征在于,所述装置还包括显示模块;其中, 所述显示模块,用于将由所述构建模块构建的SQL条件树通过操作界面以条件组名称和运算关系两列进行展现。8.根据权利要求7所述的装置,其特征在于,所述条件组名称对应根节点、中间节点以及叶子节点分别为:默认条件组、子条件组以及属性运算表达式中各个SQL属性的名称。
【专利摘要】本发明公开了一种可视化SQL条件树构建方法,判断待构建SQL条件中的各个条件是否属于属性运算表达式,将属于属性运算表达式的条件分别作为第一层叶子节点,对不属于属性运算表达式的条件作为第一层中间节点,并将不属于属性运算表达式的条件按与或关系划分为一个以上第一子条件组;依此类推,直到全部条件均分解为属性运算表达式;根据所述待构建SQL条件构建默认条件组,并将默认条件组作为根节点,再按确定的各层的中间节点和叶子节点构建SQL条件树。进一步地,将所述SQL条件树通过操作界面以条件组名称和运算关系两列进行展现。本发明还同时公开了一种可视化SQL条件树构建装置。
【IPC分类】G06F17/30
【公开号】CN104899207
【申请号】CN201410078555
【发明人】魏建荣, 彭家华, 谢志崇, 徐林
【申请人】中国移动通信集团福建有限公司
【公开日】2015年9月9日
【申请日】2014年3月5日