Ab initio组件,如果找到重复的行/记录,则停止图形

时间:2014-04-29 13:14:23

标签: etl talend data-manipulation ab-initio

嗨我有一个Ab initio图表,经过一些数据操作后,它将它们加载到一个表中。如果找到重复的行,我正在寻找某种验证组件来结束进程(在将数据加载到表中之前)。

重复的行将具有唯一的ID,但我可以忽略该列/部分记录。

4 个答案:

答案 0 :(得分:1)

将流传递给重复数据删除组件。

在Dedup组件中,选择输出的唯一属性。这将为您提供所有独特的记录。

现在,如果您有重复记录,它将通过dup端口。您可以在中间文件中收集这些记录(用于审计目的),并根据您的要求处理图表。

如果您想在找到所有重复项后立即中止该过程,则可以使用定相中止该过程。

如果你不想在DB中插入记录,如果输入有重复记录,那么你可以将关键部分传递给Dedup。它将使处理更快。

答案 1 :(得分:1)

如果您希望在处理错误场景时继续处理,最好的方法之一是通过在AbInitio中使用write_to_log()函数。 虽然这个组件的使用需要明智地进行,因为它是一个记忆吞噬的结果。

答案 2 :(得分:0)

创建两个图表。 图1.进行重复数据删除排序并传递记录。 将重复记录收集到文件中。现在在该图的结束脚本中检查该文件计数。如果count为0则调用图2.否则图表失败。

图2:使用重复数据删除组件的输出更新表。

答案 3 :(得分:0)

您可以通过两种方式处理此方案

  1. 在数据库级别

    如果您的表有约束,那么只需使用TABLE组件的以下属性

    a. ignoreDuplicates
    b. reject-threshold
    
  2. 图表级

    获取重复数据删除组件,将重复数据删除端口附加到重新格式化,并在重新格式化中使用force_error函数。

    #2的重要提示:如果保持表组件的相位高于重组格式组件(包含force_error),那将是很好的,这样如果发生故障,您将为100 %确保对表格数据没有影响。