使用ETL工具按列值将数据拆分为无限数量的表

时间:2012-10-22 15:50:31

标签: sql etl pentaho talend

我正在尝试使用Talend Open Studio根据给定列的值将表拆分为多个表。假设此列可以包含任何整数值1,2,3等,那么根据此值,这些行应该转到table_1,table_2,table_3等。

如果我能够在事先不知道该列中不同值的数量时解决这个问题,那将是最好的,但是现在我们可以假设所有这些输出表已经存在。底线是不同值的数量,因此不同表格的数量足够高,无法手动设置单个过滤器。

使用Talend Open Studio或Pentaho Keetle等任何类似的开源ETL工具可以解决这个问题吗?

当然,我可以自己编写一个简单的脚本,但我更喜欢使用合适的ETL工具,因为完整的ETL过程非常复杂。

3 个答案:

答案 0 :(得分:2)

在PDI或Pentaho Kettle中,您可以通过分区来完成此操作。 (步骤IIRC上的右键单击选项)PDI中的分区是针对这类问题而设计的。

答案 1 :(得分:1)

是的,这可以做到并将基于单列的数据拆分到不同的表,但为此你需要动态创建表: -

  

tFileInputDelimited-> tFlowtoIterate - > tFixedFlowInput->并且可以使用   globalMap()获取列值并使用相同的值来分隔   数据到不同的表。 - >并且可以使用globalMap(Columnused to   表名中的单独数据。

enter image description here

答案 2 :(得分:0)

我想到的第一个解决方案是使用复制器将当前行传输到三个过滤器,这三个过滤器充当防护,只允许在给定列中使用1 2或3行。 pic:http://i.imgur.com/FmvwU.png

但你也可以动态构建表名,如果这是你想要的,pic:http://i.imgur.com/8LR7Q.png