Informatica - 重复删除

时间:2012-01-30 06:03:49

标签: informatica-powercenter

我有一个包含10条记录的平面文件,其中5条记录是重复记录(唯一键列:Customer_Idsource_system)。此平面文件必须加载到Oracle表,这是第一次加载。

如何消除其中的重复项?

4 个答案:

答案 0 :(得分:4)

有很多方法可以解决这个问题:

  1. 将数据加载到临时表,然后只选择不同的记录
  2. 使用分拣机或聚合器转换,然后选择不同的选项(如果我没记错的话,在属性选项卡中)
  3. 使用动态查找,如果尚未插入记录,则只会将记录插入缓存中。
  4. 在表达式转换中使用变量端口,通过使用过滤器,我们可以删除重复的记录,即使它是关系表或平面文件。由于动态查找成本很高,这种方式更可取。

答案 1 :(得分:1)

您始终可以使用聚合器转换,并按要保留的所有数据进行分组。因此,如果按所有列进行分组,那么只有那些不同的列才会出现。

答案 2 :(得分:1)

您可以使用分拣机并检查加载不同的行。

答案 3 :(得分:1)

SRC - > SQ - > SRT - > EXP - > RTR - > TGT

你来自消息来源

Col1 Col2

1 A

1 B

2 C

2 D

1 E

1 F

3 G

4 H

5我

6 J

4 K

3 L

在col1排序数据中,排序器数据看起来像这样

Col1 Col2

1 A

1 B

1 E

1 F

2 C

2 D

3 G

3 L

4 K

4 H

5我

6 J

在exp中你有两个输入端口

in_col1

in_col2

按照下面的顺序创建变量端口和输出端口

v_FLAG = IIF(v_col1 = in_col1,2,1)

v_col1 = in_col1

out_FLAG =标记v_flag

然后输出表达式数据就像这样

Col1 Col2 FLAG

1,A,1

1,B,2

1,E,2

1,F,2

2,C,1

2,D,2

3,G,1

3,L,2

4,K,1

4,H,2

5,我,1

6,J,1

在路由器中创建两个组,一个用于唯一记录,另一个用于重复记录。

独特=(FLAG = 1)

重复=(FLAG = 2)

将两个组连接到两个目标.SRC - > SQ - > SRT - > EXP - > RTR - > TGT

你来自消息来源

Col1 Col2

1 A

1 B

2 C

2 D

1 E

1 F

3 G

4 H

5我

6 J

4 K

3 L

在col1排序数据中,排序器数据看起来像这样

Col1 Col2

1 A

1 B

1 E

1 F

2 C

2 D

3 G

3 L

4 K

4 H

5我

6 J

在exp中你有两个输入端口

in_col1

in_col2

按照下面的顺序创建变量端口和输出端口

v_FLAG = IIF(v_col1 = in_col1,2,1)

v_col1 = in_col1

out_FLAG =标记v_flag

然后输出表达式数据就像这样

Col1 Col2 FLAG

1,A,1

1,B,2

1,E,2

1,F,2

2,C,1

2,D,2

3,G,1

3,L,2

4,K,1

4,H,2

5,我,1

6,J,1

在路由器中创建两个组,一个用于唯一记录,另一个用于重复记录。

独特=(FLAG = 1)

重复=(FLAG = 2)

将两个组连接到两个目标。