Kettle小细节(输出数据分发和复制)

时间:2024-04-01 20:23:26

笔者在学习过程中遇到这样一个问题:

   例子:生成 100 个随机数,随机数取值于[0,100)之间, 计算小于等于 50 的随机数个数和 大于50 的随机数个 数。 并把这两个统计数字放在数据库表的一行的两列中, 即输出的结果有一行,一行包括两列,每列是一个统 计值

   出现的问题:程序运行到计算器组件还有100条数据记录,但是在过滤记录2和excle输出的时候数据进行了分发,各50条记录

Kettle小细节(输出数据分发和复制)

在不执行任何一个组件的时候能全部输出

Kettle小细节(输出数据分发和复制)

在重新节点连接的时候发现他已经提示了,你是进行分发还是复制,这也是初学者会犯的一个小细节

Kettle小细节(输出数据分发和复制)

选择复制以后会节点连接线会产生一个copy的标识

Kettle小细节(输出数据分发和复制)

也可以在选取计算器组件的时候,右击选择数据发送--》复制发送模式

Kettle小细节(输出数据分发和复制)

最终结果:

Kettle小细节(输出数据分发和复制)

解题思路步骤:

   1.生成随机数,0-1区间内(因为kettle随机数只有随机数字[0-1)和随机整数(-∞,+∞),题目要求[0,100)所以选择随机数字然后乘以常数100)

    2.定义常量,100

    3.计算,随机数乘以100,使得生成的数据在0~100区间内,选择类型integer变成整数省去转换步骤

这里后面有分支,默认是数据分发,这里要保证数据全部都流到两条支路去要选择复制分发模式,在计算器这个步骤上面右键,选择数据发送,复制发送模式

    4.条件判断有几种方法,这里用的是根据java代码过滤记录

    5.分组计算总条数,4步中结果为真进分组1,否则分组2,分组里面计算总条数

    6.关联记录

    7.输出

Kettle小细节(输出数据分发和复制)