scenario:
hr schema -> "Employee" table. 由于公司扩张,这个表变得特别大。现在想把这个表按照员工的加入时间分成两张表,比如1990年之前的叫“Emp_old”,另外一张叫“Emp_young”.
Splitter:
owb的splitter是把一个input row按照condition分为多个output输出的operator。Splitter会用multi table insert的方式去插入,这样也就大大提高了效率,所以当你有类似需求的话,应该采用splitter而不是多个filter来实现。(如果splitter的target输出到的operator会改变cardinality,如joiner,aggregator则会生成seperate的insert语句)
Multi-table-insert:
Insert all when condition_1 then into "target_1" values(...) when condition_2 then into "target_2" values(...)
Else into "target_3" values(...)
select ... from source table
如果用多个filter实现,就会分别select然后insert。即:
insert into "target_1" values(...) select ... from source table where condition_1 insert into "target_2" values(...) select ... from source table where condition_2
splitter的用法非常简单, 唯一需要设定的就是输出的condition,只需点击outPut group,在右手边的“property inspector”就可以设定输出的条件。