《一种基于元数据的批量取数函数的合并方法和装置.pdf》由会员分享,可在线阅读,更多相关《一种基于元数据的批量取数函数的合并方法和装置.pdf(10页珍藏版)》请在专利查询网上搜索。
1、(10)申请公布号 CN 103631951 A (43)申请公布日 2014.03.12 CN 103631951 A (21)申请号 201310681457.9 (22)申请日 2013.12.12 G06F 17/30(2006.01) (71)申请人 用友软件股份有限公司 地址 100094 北京市海淀区北清路 68 号用 友软件园 (72)发明人 冯加滨 (74)专利代理机构 北京中恒高博知识产权代理 有限公司 11249 代理人 刘洪京 (54) 发明名称 一种基于元数据的批量取数函数的合并方法 和装置 (57) 摘要 本发明提供了一种基于元数据的批量取数函 数的合并方法和装置,。
2、 其中的方法包括步骤 : 基 于元数据对单据进行建模 ; 注册取数函数的元数 据信息 ; 为传入的取数参数创建索引 ; 根据取数 函数的元数据信息和取数参数对取数函数进行 分组 ; 解析每个分组的取数函数并转换为查询语 句 ; 执行查询语句并处理返回结果。利用本发明 可以根据注册信息自动智能把批量的取数函数分 组合并, 在解析合并的取数函数后只需执行一次 查询即可取出所需数据, 而不需要个性化地解析 和优化每个取数函数。本发明大大提高了批量取 数函数的执行效率。 (51)Int.Cl. 权利要求书 1 页 说明书 5 页 附图 3 页 (19)中华人民共和国国家知识产权局 (12)发明专利申请。
3、 权利要求书1页 说明书5页 附图3页 (10)申请公布号 CN 103631951 A CN 103631951 A 1/1 页 2 1. 一种基于元数据的批量取数函数的合并方法, 包括以下步骤 : 步骤 S1, 基于元数据对单据进行建模 ; 步骤 S2, 注册取数函数的元数据信息 ; 步骤 S3, 为传入的取数参数创建索引 ; 步骤 S4, 根据取数函数的元数据信息和取数参数对取数函数进行分组 ; 步骤 S5, 解析每个分组的取数函数并转换为查询语句 ; 步骤 S6, 执行查询语句并处理返回结果。 2. 根据权利要求 1 所述的基于元数据的批量取数函数的合并方法, 其中, 取数函数的 元数。
4、据信息包括取数实体、 取数项目和取数条件。 3. 根据权利要求 2 所述的基于元数据的批量取数函数的合并方法, 其中, 取数条件包 括普通条件、 级次条件和强制分组条件。 4.根据权利要求2或3所述的基于元数据的批量取数函数的合并方法, 其中, 对取数函 数进行分组时, 根据取数实体和取数条件来将批量的取数函数分为多个组。 5. 根据权利要求 3 所述的基于元数据的批量取数函数的合并方法, 其中, 在对取数函 数进行分组和解析每个分组的取数函数时, 均针对普通条件、 级次条件和强制分组条件分 别进行处理。 6. 一种基于元数据的批量取数函数的合并装置, 包括以下模块 : 建模模块, 用于基于元。
5、数据对单据进行建模 ; 注册模块, 用于注册取数函数的元数据信息 ; 索引模块, 用于为传入的取数参数创建索引 ; 分组模块, 用于根据取数函数的元数据信息和取数参数对取数函数进行分组 ; 转换模块, 用于解析每个分组的取数函数并转换为查询语句 ; 执行模块, 用于执行查询语句并处理返回结果。 7. 根据权利要求 6 所述的基于元数据的批量取数函数的合并装置, 其中, 取数函数的 元数据信息包括取数实体、 取数项目和取数条件。 8. 根据权利要求 7 所述的基于元数据的批量取数函数的合并装置, 其中, 取数条件包 括普通条件、 级次条件和强制分组条件。 9.根据权利要求7或8所述的基于元数据的。
6、批量取数函数的合并装置, 其中, 分组模块 根据取数实体和取数条件来将批量的取数函数分为多个组。 10. 根据权利要求 8 所述的基于元数据的批量取数函数的合并装置, 其中, 分组模块和 转换模块均针对普通条件、 级次条件和强制分组条件分别进行处理。 权 利 要 求 书 CN 103631951 A 2 1/5 页 3 一种基于元数据的批量取数函数的合并方法和装置 0001 技术领域 本发明涉及数据处理领域, 尤其涉及一种基于元数据的批量取数函数的合并方法和装 置。 0002 背景技术 常见的 ERP 系统中, 经常会用到各种形式的取数函数, 或称为取数公式。所谓取数函 数, 是指根据用户设定。
7、的若干查询条件从指定数据库表中获取某些字段值, 取出的数据被 用于系统控制、 数据分析等场景。 在执行取数函数时, 信息系统需要首先把取数函数转换为 数据库系统可接收并处理的查询语句, 再在数据库中执行该查询语句来实现取数要求。不 同的取数函数往往包括不同的查询条件、 数据来源表、 和取数字段, 因此需要对不同的取数 函数分别进行处理和执行。同时取数函数中还可以包括包含下级这类特殊条件, 在处理和 执行这种取数函数时也需要对这种查询条件进行特别的处理。 因此在有成百上千不同的取 数函数需要批量执行的场景下, 系统需要对大量取数函数进行快速有效地执行, 这对函数 实现的灵活性和执行效率都提出了很。
8、高的要求。 0003 目前的信息系统, 针对这种批量执行取数函数时需要把各种不同的取数函数翻译 为对应查询语句的场景, 有两种解决方案 : 第一种是循环解析每个函数, 按照每个函数的查询条件、 来源数据表和取数字段翻译 转换生成对应的取数查询语句, 实现取数逻辑。 这种方案的优点是函数翻译过程简单, 缺点 是对每个函数都需要个性化解析, 实现的灵活性低。 而且在批量执行时, 每个函数都是单独 执行查询, 需要多次连接数据库来执行查询语句, 造成取数效率非常低下, 尤其是在大批量 执行取数函数的情况下会严重影响系统正常运行。 0004 第二种是在第一种的基础上, 按照固定的简单合并规则, 把取数。
9、函数进行分类合 并。 在大批量执行取数函数时首先按照取数函数名称进行分组, 然后循环每个分组, 判断每 个分组内的若干个函数能不能合并。但只有取数形式比较简单的函数, 例如根据一两个条 件相等取某个固定值, 才能够合并为条件范围转换为一次查询。也就是说这种方案只能针 对特定的形式简单的取数函数做专项效率优化, 对于取数字段不同、 查询条件为包含下级 等形式复杂的函数无法实现合并。 0005 因此在 ERP 系统中如何灵活的实现批量取数函数的合并, 高效的实现取数逻辑是 亟待解决的问题。 0006 发明内容 鉴于现有技术中存在的以上问题, 本发明旨在提供一种基于元数据的批量取数函数的 合并方法和。
10、装置, 以实现批量函数的合并和高效执行。 0007 根据本发明的一个方面, 提供了一种基于元数据的批量取数函数的合并方法, 包 括以下步骤 : 步骤 S1, 基于元数据对单据进行建模 ; 步骤 S2, 注册取数函数的元数据信息 ; 步骤 S3, 为传入的取数参数创建索引 ; 说 明 书 CN 103631951 A 3 2/5 页 4 步骤 S4, 根据取数函数的元数据信息和取数参数对取数函数进行分组 ; 步骤 S5, 解析每个分组的取数函数并转换为查询语句 ; 步骤 S6, 执行查询语句并处理返回结果。 0008 其中, 优选的方案是, 取数函数的元数据信息包括取数实体、 取数项目和取数条 。
11、件。 0009 其中, 优选的方案是, 取数条件包括普通条件、 级次条件和强制分组条件。 0010 其中, 优选的方案是, 对取数函数进行分组时, 根据取数实体和取数条件来将批量 的取数函数分为多个组。 0011 根据本发明的另一方面, 提供了一种基于元数据的批量取数函数的合并装置, 包 括以下模块 : 建模模块, 用于基于元数据对单据进行建模 ; 注册模块, 用于注册取数函数的元数据信息 ; 索引模块, 用于为传入的取数参数创建索引 ; 分组模块, 用于根据取数函数的元数据信息和取数参数对取数函数进行分组 ; 转换模块, 用于解析每个分组的取数函数并转换为查询语句 ; 执行模块, 用于执行查。
12、询语句并处理返回结果。 0012 本发明的基于元数据的批量取数函数的合并方法和装置, 只需要注册取数函数的 取数实体、 取数字段、 查询条件等元数据, 即可以根据注册信息自动智能把批量的取数函数 分组合并, 在解析合并的取数函数后只需执行一次查询即可取出所需数据。对于包含下级 等特殊条件只需要改变注册信息就可以灵活实现, 能够大大提高取数过程的效率。 0013 附图说明 图 1 描述了现有技术中的 ERP 系统取数函数批量执行的方法流程 ; 图 2 是根据本发明的实施例的基于元数据的批量取数函数的合并方法的流程图 ; 图 3 是为传入的取数参数创建索引的一个例子 ; 图 4 描述了根据本发明实。
13、施例的根据取数函数的元数据信息和取数参数对取数函数 进行分组的具体执行步骤 ; 图 5 描述了根据本发明实施例的解析每个分组的取数函数并转换为查询语句的具体 执行步骤 ; 图 6 描述了根据本发明实施例的解析取数条件的具体执行步骤 ; 图 7 是根据本发明的实施例的基于元数据的批量取数函数的合并装置的模块图。 具体实施方式 0014 下面结合附图和实施例对本发明的技术方案作进一步的说明。 0015 图1描述了现有技术中的ERP系统取数函数批量执行的方法流程。 在该方法中, 批 量的取数函数被解析后获得查询语句, 对数据库执行查询后得到结果数据并返回给用户。 该方法的核心在于如何解析取数函数以获。
14、得查询语句。 解析取数函数时如何智能的实现各 种形式的取数函数的合并从而减少查询语句的执行次数, 对于提高系统性能尤为关键。 0016 图 2 是根据本发明的实施例的基于元数据的批量取数函数的合并方法的流程图。 一个取数函数可被分解为取数实体、 取数项目、 取数条件三个部分, 所有的取数函数的本质 说 明 书 CN 103631951 A 4 3/5 页 5 都变成从注册的取数实体中, 根据取数条件获取指定的取数项目, 所谓的取数项目即是取 数的字段。本发明的基于元数据的批量取数函数的合并方法能够根据注册的元数据信息, 动态的对取数函数进行分组合并, 解析出查询语句, 并且按照取数字段要求组织。
15、返回查询 结果。该方法包括以下步骤 : 步骤 S1, 基于元数据对单据进行建模。所谓的单据即是数据库中的数据表呈现给用户 的形式, 用户在输入取数函数时是针对单据进行的。首先需要基于元数据对取数的单据进 行建模, 根据元数据来描述单据实体每个字段的属性, 例如字段的名称、 数据类型、 引用的 参照等。这样我们可以基于注册的字段元数据信息, 公共处理取数函数的翻译和转换。也 就是说, 通过这一建模步骤抽离并建立了单据和数据库中的数据表之间的关联关系, 对所 有的取数函数可以利用相同的逻辑流程来进行解析和转换, 而不需要对每个取数函数进行 个性化的处理和优化。 0017 步骤S2, 注册取数函数的。
16、元数据信息。 需要注册的元数据信息包括取数实体、 取数 项目和取数条件。为了能解析各类复杂的取数条件, 本发明把取数条件划分为 : 普通条件、 级次条件和强制分组条件。 其中, 普通条件为常见的等于某个值的条件 ; 级次条件为指定某 个条件有可能包含下级 ; 强制分组条件指只要条件值不相同就需要强制分组的条件, 其支 持特殊操作符。 0018 步骤 S3, 为传入的取数参数创建索引。所谓取数参数即是用户输入或者选择的取 数函数的具体取值, 包括取数实体的值、 取数项目的值以及具体的取数条件值。 由于本发明 的方法会把取数函数分组合并执行, 因此包括传入的取数参数的取数函数有可能不是按照 预定的。
17、输入顺序执行取数。本发明的合并方法为传入的取数参数创建索引, 以保证在执行 完取数逻辑、 处理取数结果时, 能够标明是哪个取数参数对应的结果, 从而能够返回正确的 结果。创建索引的例子可参见图 3。 0019 如图 3 所示, 共包括了三个取数函数的取数参数, 每个取数函数都包括三个取数 条件, 分别为这些取数函数的取数参数创建索引为1、 2、 3。 在对取数函数进行分组时将第一 和第三取数函数分为一组来执行, 第二取数函数为另一组执行。 在返回结果时, 根据索引即 可区分分组 1 的执行结果中包括的是第一和第三取数函数的执行结果, 分组 2 的执行结果 中是第二取数函数的执行结果。 0020。
18、 步骤 S4, 根据取数函数的元数据信息和取数参数对取数函数进行分组。这一步骤 按照普通条件是否有值、 级次条件是否有值、 强制分组条件是否有值以及强制分组条件值 对取数函数进行分组, 其具体过程将在下文结合图 4 进行详细描述。 0021 步骤S5, 解析每个分组的取数函数并转换为查询语句。 在这一步骤中, 获得每个分 组的取数函数的元数据描述信息和对应参数值, 解析注册的取数项目、 取数实体和取数条 件的元数据信息, 以及对应的取数参数值, 拼接转换为完整的 SQL 查询语句, 其具体过程将 在下文结合图 5 进行详细描述。 0022 步骤S6, 执行查询语句并处理返回的结果。 在这一步骤。
19、中, 在数据库中执行查询语 句, 按照取数项目描述获取查询结果中对应数值, 并按照为取数参数创建的索引, 组织对应 的返回结果。 0023 图 4 描述了根据本发明实施例的根据取数函数的元数据信息和取数参数对取数 函数进行分组的具体执行步骤。如图 4 所示, 在根据取数函数元数据信息和取数参数对取 说 明 书 CN 103631951 A 5 4/5 页 6 数函数进行分组的过程中, 首先获得取数函数的注册信息和取数参数, 然后根据取数函数 的取数实体值进行分组, 之后再针对注册的取数函数的元数据信息中普通条件是否有值、 级次条件是否有值以及强制分组条件是否有值的情况分别进行处理 : 在普通条。
20、件有值的情 况下, 获得普通条件有值的字段列表 ; 在级次条件有值的情况下, 获得级次条件有值的字段 列表 ; 在强制分组条件有值的情况下, 首先获得强制分组条件的有值字段列表, 然后再拼接 上强制分组的条件值。 在对上述三种情况进行处理之后, 在每个条件之间都拼接上分隔符。 在对所有取数函数的所有条件进行处理后, 即可把所有的取数函数分为多个组, 并组成分 组标识符, 最后再汇总同一个分组中的取数项目, 并返回分组后的每个分组描述信息。 0024 图 5 描述了根据本发明实施例的解析每个分组的取数函数并转换为查询语句的 具体执行步骤。如图 5 所示, 在解析每个分组的取数函数并转换为查询语句。
21、的过程中, 首先 获得每个分组的描述信息和其对应的参数, 之后分别对于注册的取数项目、 取数条件和取 数实体进行解析。 在对取数项目进行解析时, 首先判断取数项目是否是汇总项的取数项目, 如果是的话则需要获得需汇总的取数项目字段列表, 然后拼接为 SELECT 语句 ; 如果不是的 话则获得需分组的字段列表, 然后拼接为 GROUP 语句。在对取数条件进行解析时也会添加 需分组字段到需分组的字段列表中。对取数条件的具体解析过程将在下面结合图 6 进行描 述。在对取数条件进行解析后, 将解析的结果拼接为 WHERE 语句, 同时在取数条件中包括级 次条件时, 解析的部分结果也被拼接为 FROM 。
22、语句。在对取数实体进行解析后, 解析的结果 拼接为 FROM 语句。最后将上面所有解析拼接的语句拼接为完整的 SQL 查询语句。 0025 图 6 描述了根据本发明实施例的解析取数条件的具体执行步骤, 其对强制分组、 普通和级次条件分别进行了特定的处理。 对强制分组条件进行拼接后再拼接上操作符和其 对应条件值。 对普通条件在拼接上普通条件后, 获取分组中的所有普通条件值, 然后拼接上 普通条件和其对应的条件值, 判断条件是否已经包含在取数项目中, 如果还没有的话, 则将 其添加到分组条件列表中。 对于级次条件在拼接上级次条件后判断级次条件值中是否包含 下级, 如果为否的话则将其作为普通条件进行。
23、处理, 如果是的话则把上级、 下级的条件值插 入到临时表中, 使用临时表的下级条件值来关联取数实体, 并添加上级字段到分组条件列 表中。所有解析的结果最终被拼接为 WHERE 语句。 0026 图 7 是根据本发明的实施例的基于元数据的批量取数函数的合并装置的模块图。 如图 7 所示, 该基于元数据的批量取数函数的合并装置包括以下模块 : 建模模块, 用于基于 元数据对单据进行建模 ; 注册模块, 用于注册取数函数的元数据信息 ; 索引模块, 用于为传 入的取数参数创建索引 ; 分组模块, 用于根据取数函数的元数据信息和取数参数对取数函 数进行分组 ; 转换模块, 用于解析每个分组的取数函数并。
24、转换为查询语句 ; 执行模块, 用于 执行查询语句并处理返回结果。 0027 相比于现有技术, 本发明具有如下有益效果 : 本方法只需要注册单据元数据信息和取数函数元数据信息就能够灵活的实现批量执 行取数函数时最大限度的合并, 而不需要个性化的去解析每一个取数函数, 不需要在做个 性化的函数效率优化。因此该方法使得各类信息系统能够更灵活、 更高效的执行各种形式 的取数函数, 能够使客户在更多场景下批量运行取数函数, 而不必担心严重影响运行效率。 0028 最后说明的是, 以上实施例仅用以说明本发明的技术方案而非限制, 尽管参照较 佳实施例对本发明进行了详细说明, 本领域的普通技术人员应当理解, 可以对本发明的技 说 明 书 CN 103631951 A 6 5/5 页 7 术方案进行修改或者等同替换, 而不脱离本发明技术方案的宗旨和范围, 其均应涵盖在本 发明的权利要求范围当中。 说 明 书 CN 103631951 A 7 1/3 页 8 图 1 图 2 图 3 说 明 书 附 图 CN 103631951 A 8 2/3 页 9 图 4 说 明 书 附 图 CN 103631951 A 9 3/3 页 10 图 5 图 6 图 7 说 明 书 附 图 CN 103631951 A 10 。