大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。
Jetbrains全系列IDE稳定放心使用
1: 关于ID生成器。
如果一个转化流程里的两个分支分别使用了Generate ID组件, 请注意“计数器名称”,这个很重要。
1) 如果改名字不同,则最总汇总结果中的id是会分别生成的,也就是说会出现重复的id。
2) 如果名字相同,最终结果中id是不会重复的。
2:关于序列生成器
首先抱歉,上面所说的“Generate ID“组件,其实指的就是序列生成器。
kettle5.3中包含两个序列生成器组件,一个是”增加序列“,一个是”根据字段值来改变序列“。
1)增加序列
有两种用法:
a. 使用数据库来生成序列。
这种用法是需要连接数据库,如oracle,并且指定一个sequence名。其原理是利用数据库本身的功能来辅助生成序列。
b. 使用转换计数器来生成序列
通常指定一个”计数器名称”,并指定起始值、步进值、最大值三个参数。可见,其用法与在数据库里创建sequence相同。
2)根据字段值来改变序列
这个生成器的核心用法在于, 根据上个步骤的输出流(对生成器来说是输入流)的某一个或几个字段的变化来生成序列。对于输入流,如果指定的某一个或某几个字段的值没有变化,那么序列生成器会从起始值开始,根据规则来生成序列;如果变化了,序列生成器则从起始值重新开始生成序列。
应用场景,参看这样的输入流图例:
发现”group“字段具有重复性,如果要依据每个不同的group值来重新生成序列,序列生成器的配置可以如下:
在序列器编辑中,指定”group“字段作为是序列器是否重新从起始值开始的判断依据。
最终生成的数据如下:
序列生成器的用法解释到此结束。
2:关于分析查询组件(analytic query)
这个组件的作用相当奇特,它可以在一个输入流中根据当前数据行往上回溯或者往下预查询一个数据行(一条记录)中的某些字段的值,回溯或者预查询的位置能以参数的方式指定。
另一个奇特之处在于,它可以在输入流中指定一个或多个字段,然后依据这些字段对输入流中的数据进行分组。依据当前数据行的位置, 回溯或者预查询其它数据行的字段的值时,同时还要参考分组字段的值是否有变化。 如果回溯或者预查询的数据行的分组字段跟当前行不同,那么返回null,否则的话返回确定的值。
以上是该组件的核心用法,需多读并用心理解。
以下举例说明。
测试表简短说明:
一个教师信息表中有rownum字段,代表数据行号; 另一个字段是教师能力Faculty字段(取值01,02,03等)。 很多教师都拥有相同的Faculty值。
接下来配置分析查询组件,如图:
在分组字段加入Faculty字段, 然后在“要取值的字段“中指定要回溯或者要预查询的字段名。 ”新增加的字段“的意思是,回溯或者预查询的字段的值将以什么字段名显示在本条数据里。“类型”里要指明是向前还是向后查询,N的意思不用解释了吧,相信聪明的你一定看的懂。
下面给出一个执行的样例:
上图中,LEAD_SEQ代表向前2行seqence字段的值,LAG_SEQ代表向后两行sequence的值,LEAD4_SEQ代表向前4行sequence的值。 请千万注意该值的变化,有Faculty字段在起作用。
该组件讲解完毕。
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/182623.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...