我正在尝试使用Talend Open Studio根据给定列的值将表拆分为多个表。假设此列可以包含任何整数值1,2,3等,那么根据此值,这些行应该转到table_1,table_2,table_3等。
如果我能够在事先不知道该列中不同值的数量时解决这个问题,那将是最好的,但是现在我们可以假设所有这些输出表已经存在。底线是不同值的数量,因此不同表格的数量足够高,无法手动设置单个过滤器。
使用Talend Open Studio或Pentaho Keetle等任何类似的开源ETL工具可以解决这个问题吗?
当然,我可以自己编写一个简单的脚本,但我更喜欢使用合适的ETL工具,因为完整的ETL过程非常复杂。
答案 0 :(得分:2)
在PDI或Pentaho Kettle中,您可以通过分区来完成此操作。 (步骤IIRC上的右键单击选项)PDI中的分区是针对这类问题而设计的。
答案 1 :(得分:1)
是的,这可以做到并将基于单列的数据拆分到不同的表,但为此你需要动态创建表: -
tFileInputDelimited-> tFlowtoIterate - > tFixedFlowInput->并且可以使用 globalMap()获取列值并使用相同的值来分隔 数据到不同的表。 - >并且可以使用globalMap(Columnused to 表名中的单独数据。
答案 2 :(得分:0)
我想到的第一个解决方案是使用复制器将当前行传输到三个过滤器,这三个过滤器充当防护,只允许在给定列中使用1 2或3行。 pic:http://i.imgur.com/FmvwU.png
但你也可以动态构建表名,如果这是你想要的,pic:http://i.imgur.com/8LR7Q.png