笔者在学习过程中遇到这样一个问题:
例子:生成 100 个随机数,随机数取值于[0,100)之间, 计算小于等于 50 的随机数个数和 大于50 的随机数个 数。 并把这两个统计数字放在数据库表的一行的两列中, 即输出的结果有一行,一行包括两列,每列是一个统 计值
出现的问题:程序运行到计算器组件还有100条数据记录,但是在过滤记录2和excle输出的时候数据进行了分发,各50条记录
在不执行任何一个组件的时候能全部输出
在重新节点连接的时候发现他已经提示了,你是进行分发还是复制,这也是初学者会犯的一个小细节
选择复制以后会节点连接线会产生一个copy的标识
也可以在选取计算器组件的时候,右击选择数据发送--》复制发送模式
最终结果:
解题思路步骤:
1.生成随机数,0-1区间内(因为kettle随机数只有随机数字[0-1)和随机整数(-∞,+∞),题目要求[0,100)所以选择随机数字然后乘以常数100)
2.定义常量,100
3.计算,随机数乘以100,使得生成的数据在0~100区间内,选择类型integer变成整数省去转换步骤
这里后面有分支,默认是数据分发,这里要保证数据全部都流到两条支路去要选择复制分发模式,在计算器这个步骤上面右键,选择数据发送,复制发送模式
4.条件判断有几种方法,这里用的是根据java代码过滤记录
5.分组计算总条数,4步中结果为真进分组1,否则分组2,分组里面计算总条数
6.关联记录
7.输出