一种利用栈生成数据处理顺序的方法,步骤包括建立数据处理模型和执行数据处理模型,所述执行数据处理模型的步骤包括数据处理节点编排和数据模型节点执行。本申请的有益效果是:能够预先生成节点执行顺序,执行过程不需判断其依赖节点;简化了数据模型执行的逻辑,提高了执行的速度。
A Method of Generating Data Processing Sequence by Stack
【技术实现步骤摘要】
一种利用栈生成数据处理顺序的方法
本申请属于数据处理
,具体地说,涉及一种利用栈生成数据处理顺序的方法。
技术介绍
数据处理软件的数据处理一般通过数据处理节点方式进行特定的数据处理算法。用户在设计一个数据处理过程时可以包括多个节点,这些节点之间存在依赖关系。比如一份数据,需要将某一个字符串的列值修改其数值类型,然后再除以100,此时就需要设计两个数据处理节点,A(修改列类型)、B(列值除以100),其中B依赖A。因此在执行一个数据处理流程并执行到某个节点的时候,需要判断其依赖的节点是否执行完毕,当前面节点的执行发生意外时,会导致一连串的节点不能执行,且执行效率低。
技术实现思路
有鉴于此,本申请所要解决的技术问题是提供了一种利用栈生成数据处理顺序的方法,能够预先生成节点执行顺序,执行过程不需判断其依赖节点。为了解决上述技术问题,本申请公开了一种利用栈生成数据处理顺序的方法,并采用以下技术方案来实现。一种利用栈生成数据处理顺序的方法,步骤包括建立数据处理模型和执行数据处理模型,所述执行数据处理模型的步骤包括数据处理节点编排和数据模型节点执行。进一步的,所述数据处理节点编排具体步骤包括:S1、对所述数据处理模型中的各节点进行遍历,判断各节点之间的依赖关系;S2、确定彼此之间无依赖关系的节点;S3、对每一个彼此之间无依赖关系的节点分别建立栈,将所述的建栈的节点放入对应栈中;S4、对建栈的各节点分别按依赖关系向上搜索,依次将各依赖节点放入对应栈中;S5、从待搜索的一个节点开始依照对应栈中的节点顺序依次向上搜索,并将执行过的节点进行标记;S6、从其他待执行的节点开始依照对应栈中的节点顺序依次向上执行,并将执行过的节点进行标记,遇到已经执行过的节点跳过。更进一步的,所述S4和/或所述S5中,向上搜索时如遇到多输入节点,先依照一个分支向上搜索,遇顶后返回所述多输入节点向另外的一个分支搜索,直至全部分支搜索完成。与现有技术相比,本申请可以获得包括以下技术效果:能够预先生成节点执行顺序,执行过程不需判断其依赖节点;简化了数据模型执行的逻辑,提高了执行的速度。当然,实施本申请的任一产品必不一定需要同时达到以上所述的所有技术效果。附图说明此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:图1是本申请一个实施例的数据处理模块处理原理总框图。图2是本申请一个实施例的数据处理各节点依赖关系示意图。具体实施方式以下将配合附图及实施例来详细说明本申请的实施方式,藉此对本申请如何应用技术手段来解决技术问题并达成技术功效的实现过程能充分理解并据以实施。一种利用栈生成数据处理顺序的方法,如图1所示,步骤包括建立数据处理模型和执行数据处理模型,执行数据处理模型包括数据处理节点编排和数据模型节点执行。本专利技术主要针对“执行数据处理模型”进行优化,增加了“数据处理节点编排”的步骤,用于解决没有编排的执行计划会不断回溯节点判断节点状态的问题。例如:数据处理需要对原始的第一数据表D1、第二数据表D2两份数据进行处理。第一数据表D1数据如表D1所示的课程数据表,第二数据表D2数据如表D2所示的成绩数据表。课程名称总课时高等数学22英语22计算机18表D1课程数据表学号高等数学英语计算机201701808575201702888890表D2成绩数据表处理后的第三数据表D3的数据结构要求如表D3所示:学号课程名称成绩课时201701高等数学8022201701英语8522201701计算机7518201702高等数学8822201702英语8822201702计算机9018表D3处理后第一数据表处理后的第四数据表D4的数据结构要求如表D4所示:学号课时2017016220170262表D4处理后第二数据表对第一数据表D1和第二数据表D2进行处理,得到处理后的第三数据表D3和第四数据表D4的过程的各个节点及其关系如图2所示。需要先分别读取D1和D2,然后对第一数据表D1进行列转行处理,再将列转行后的D1与读取的第二数据表D2进行关联。关联后的数据一方面可直接输出第三数据表D3,另一方面进行分组汇总的处理。分组汇总处理后的数据可直接输出第四数据表D4。其中连线箭头方向代表了依赖关系,即节点“列转行”依赖于节点“读取D1”;节点“关联”依赖于节点“读取D2”和节点“列转行”;节点“输出D3”和节点“分组汇总”均依赖于节点“关联”;节点“输出D4”依赖于节点“分组汇总”。对以上数据进行处理的步骤包括:S1、确定所有彼此之间无依赖关系的节点;从图2中可看出,各节点的依赖是层层叠加的,如节点“输出D4”不仅依赖于节点“分组汇总”,还隐性的依赖于节点“关联”、节点“列转行”、节点“读取D1”和节点“读取D2”。彼此之间没有任何依赖关系的节点为“输出D3”和“输出D4”。S2、对彼此之间无依赖关系的节点分别建立栈;S3、对各个栈分别向上搜索,依次将各依赖节点入栈;例如,D3栈如表5所示,上一级节点为“关联”:...关联输出D3表5向上搜索时,如遇到多输入节点,先依照一个分支向上搜索,例如表6所示:读取D1列转行关联输出D3表6依照一个分支向上搜索遇顶后返回最上层的多输入节点向另外的一个分支搜索。若多输入节点处为三个或三个以上的多输入方向,则依次搜索,直到搜索完一个完整的的输入方向。这样就生成了一个执行顺序。具体实例如表7所示:读取D2读取D1列转行关联输出D3表7同理,可生成“输出D4”的栈,如表8所示。需要说明的是也可先搜索节点“读取D2”,再搜索节点“列转行”和节点“读取D1”。读取D2读取D1列转行关联分组汇总输出D4表8S4、对栈中需要执行的一个节点进行向上的执行,并将执行过的节点进行标记;经过以上“数据处理节点编排”生成了两个用于执行的顺序栈,在“数据模型执行”过程中,随意按照顺序栈的顺序先执行一个,将执行过程中遍历的节点标记为“执行过”。S5、对所述栈中另外的一个节点进行向上的执行,如遇前述标记过的节点则跳过不执行。再执行另外一个的时候,遇到标记为“执行过”的节点则跳过执行。如上述输出的两个栈,首先执行D3栈,则标记为“执行过”的节点分别为:“读取D2”->“读取D1”->“列转行”->“关联”->“输出D3”。当再执行D4栈的时候,由于以上节点均为“执行过”的节点,则只需执行“分组汇总”和“输出D4”即可。如此执行过程中便节省了一些原本需要再次执行的节点,提高了数据处理的速度。本申请的有益效果是:能够预先生成节点执行顺序,执行过程不需判断其依赖节点;简化了数据模型执行的逻辑,提高了执行的速度。以上对本申请实施例所提供的一种利用栈生成数据处理顺序的方法,进行了详细介绍。以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。如在说明书及权利要求当中使用了某些词汇来指称特定组件。本领域技术人员应可理解,硬件制造商可能会用不同名词来称呼同一个组件。本说明书及权利要求并不以名称的差异来作为区本文档来自技高网...
【技术保护点】
1.一种利用栈生成数据处理顺序的方法,步骤包括建立数据处理模型和执行数据处理模型,其特征在于:所述执行数据处理模型的步骤包括数据处理节点编排和数据模型节点执行。
【技术特征摘要】
1.一种利用栈生成数据处理顺序的方法,步骤包括建立数据处理模型和执行数据处理模型,其特征在于:所述执行数据处理模型的步骤包括数据处理节点编排和数据模型节点执行。2.根据权利要求1所述利用栈生成数据处理顺序的方法,其特征在于:所述数据处理节点编排具体步骤包括:S1、对所述数据处理模型中的各节点进行遍历,判断各节点之间的依赖关系;S2、确定彼此之间无依赖关系的节点;S3、对每一个彼此之间无依赖关系的节点分别建立栈,将所述的建栈的节点放入对应栈中;S4、对建栈的各节点分...
【专利技术属性】
技术研发人员:崔新洲,陈磊,
申请(专利权)人:天津数观科技有限公司,
类型:发明
国别省市:天津,12
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。