在 Talend 中查找行号
Find RowNumber in Talend
如何在 Talend Open Studio 6.3 中查找行号?我想按
这样的顺序插入行
- File1 中的第 1 行到第 10 行
- File2 中的第 11 行到第 20 行
- 第 21 行到第 30 行到文件 3
- 然后再次从第 31 行到文件 1
如何实现?我已经生成了一个序列 column.now 如何进行?可以使用 tsamplerow 完成吗?
假设源文件是这样的:-
EMPNO,EMPNAME,DEPTNO
10,A,1
11,B,2
12,C,3
13,D,4
14,E,1
15,F,1
16,G,2
17,H,3
18,I,4
19,J,2
20,K,3
21,L,1
22,M,2
你可以通过在talend job中使用Numeric.sequence("s1",1,1)
定义一个增量值来获取当前行号。
注意:我使用了 OP 的示例数据并将每个文件的行划分为 3。但是在 OP 的场景中它是 10 行
下面是我试过的示例作业,
我正在生成一个序列号以了解当前行号,如下所示
获取当前行值后,我有另一个变量,它每 3 行(在我的示例中)递增,如下所示(在 OP 的示例中,它是每 10 行。)
这是我在 SequenceRow
上下文变量上做的表达式。
context.SequenceRow = (input_row.SequenceNumber > context.RowRangePerFile && input_row.SequenceNumber % context.RowRangePerFile == 1) ? context.SequenceRow+1 : context.SequenceRow;
最后,我根据 SequenceRow
值过滤 tMap_2
中的行,如下所示,
对于out1
,过滤条件为(out2.SequenceRow > context.TotalNoOfFiles && out2.SequenceRow % context.TotalNoOfFiles == 1) || out2.SequenceRow == 1
对于out3
,过滤条件为(out2.SequenceRow > context.TotalNoOfFiles && out2.SequenceRow % context.TotalNoOfFiles == 2) || out2.SequenceRow == 2
对于out4
,过滤条件为(out2.SequenceRow > context.TotalNoOfFiles && out2.SequenceRow % context.TotalNoOfFiles == 0) || out2.SequenceRow == 3
我已经获取了您在问题中提供的示例数据,
EMPNO,EMPNAME,DEPTNO
10,A,1
11,B,2
12,C,3
13,D,4
14,E,1
15,F,1
16,G,2
17,H,3
18,I,4
19,J,2
20,K,3
21,L,1
22,M,2
我在每个文件中每 3 行写入一次,得到的输出是
希望对您有所帮助。
如何在 Talend Open Studio 6.3 中查找行号?我想按
这样的顺序插入行- File1 中的第 1 行到第 10 行
- File2 中的第 11 行到第 20 行
- 第 21 行到第 30 行到文件 3
- 然后再次从第 31 行到文件 1
如何实现?我已经生成了一个序列 column.now 如何进行?可以使用 tsamplerow 完成吗? 假设源文件是这样的:-
EMPNO,EMPNAME,DEPTNO
10,A,1
11,B,2
12,C,3
13,D,4
14,E,1
15,F,1
16,G,2
17,H,3
18,I,4
19,J,2
20,K,3
21,L,1
22,M,2
你可以通过在talend job中使用Numeric.sequence("s1",1,1)
定义一个增量值来获取当前行号。
注意:我使用了 OP 的示例数据并将每个文件的行划分为 3。但是在 OP 的场景中它是 10 行
下面是我试过的示例作业,
我正在生成一个序列号以了解当前行号,如下所示
获取当前行值后,我有另一个变量,它每 3 行(在我的示例中)递增,如下所示(在 OP 的示例中,它是每 10 行。)
这是我在 SequenceRow
上下文变量上做的表达式。
context.SequenceRow = (input_row.SequenceNumber > context.RowRangePerFile && input_row.SequenceNumber % context.RowRangePerFile == 1) ? context.SequenceRow+1 : context.SequenceRow;
最后,我根据 SequenceRow
值过滤 tMap_2
中的行,如下所示,
对于out1
,过滤条件为(out2.SequenceRow > context.TotalNoOfFiles && out2.SequenceRow % context.TotalNoOfFiles == 1) || out2.SequenceRow == 1
对于out3
,过滤条件为(out2.SequenceRow > context.TotalNoOfFiles && out2.SequenceRow % context.TotalNoOfFiles == 2) || out2.SequenceRow == 2
对于out4
,过滤条件为(out2.SequenceRow > context.TotalNoOfFiles && out2.SequenceRow % context.TotalNoOfFiles == 0) || out2.SequenceRow == 3
我已经获取了您在问题中提供的示例数据,
EMPNO,EMPNAME,DEPTNO
10,A,1
11,B,2
12,C,3
13,D,4
14,E,1
15,F,1
16,G,2
17,H,3
18,I,4
19,J,2
20,K,3
21,L,1
22,M,2
我在每个文件中每 3 行写入一次,得到的输出是
希望对您有所帮助。