1

嗨,我有一个从头算图,经过一些数据处理后,它会将它们加载到表中。如果发现重复行,我正在寻找某种验证组件来结束该过程(在将数据加载到表中之前)。

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

4

4 回答 4

1

将流传递给去重组件。

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

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

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

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

于 2014-07-25T03:46:49.610 回答
1

如果您想在处理错误场景的同时继续处理,最好的方法之一是通过使用 AbInitio 中的 write_to_log() 函数。尽管需要谨慎地使用此组件,因为它是一个内存吞噬功能。

于 2017-07-14T09:25:02.343 回答
0

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

图 2:使用 dedup 组件的输出更新表。

于 2014-05-01T10:31:21.827 回答
0

您可以通过 2 种方式处理这种情况

  1. 在数据库级别

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

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

    采用 dedup 组件,将 dedup 端口附加到重新格式化并在重新格式化内使用 force_error 函数。

    #2 的重要注意事项:如果您保持表格组件的阶段高于重新格式化组件(包含 force_error)会很好,这样在发生故障时您将 100% 确保对表格没有影响数据。

于 2016-03-22T18:55:56.600 回答