4

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

最好在事先不知道该列中不同值的数量时解决这个问题,但现在我们可以假设所有这些输出表都已经存在。底线是不同值的数量以及因此不同表的数量足够高,以至于手动设置单个过滤器不是一种选择。

是否可以使用 Talend Open Studio 或任何类似的开源 ETL 工具(如 Pentaho Keetle)来解决这个问题?

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

4

3 回答 3

2

在 PDI 或 Pentaho Kettle 中,您可以通过分区来做到这一点。(步骤 IIRC 上的右键单击选项)PDI 中的分区正是为此类问题而设计的。

于 2012-10-24T06:03:25.370 回答
1

是的,可以根据单列将数据拆分为不同的表,但为此您需要动态创建表:-

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

在此处输入图像描述

于 2014-03-25T06:01:34.767 回答
0

我想到的第一个解决方案是使用复制器将当前行传输到三个过滤器,这些过滤器充当保护器,只让给定列中包含 1 2 或 3 的行通过。图片:http: //i.imgur.com/FmvwU.png

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

于 2012-10-22T19:56:58.720 回答