嗨,我有一个从头算图,经过一些数据处理后,它会将它们加载到表中。如果发现重复行,我正在寻找某种验证组件来结束该过程(在将数据加载到表中之前)。
重复的行将具有唯一的 ID,但也许我可以忽略该列/部分记录。
嗨,我有一个从头算图,经过一些数据处理后,它会将它们加载到表中。如果发现重复行,我正在寻找某种验证组件来结束该过程(在将数据加载到表中之前)。
重复的行将具有唯一的 ID,但也许我可以忽略该列/部分记录。
将流传递给去重组件。
在 Dedup 组件中,选择唯一属性进行输出。这将为您提供所有独特的记录。
现在,如果您有重复的记录,它将通过 dup 端口。您可以在中间文件中收集这些记录(用于审计目的)并根据您的要求处理图表。
如果您想在找到所有重复项后立即中止该过程,您可以使用分阶段中止该过程。
此外,如果您不想将记录插入 DB,如果输入有重复记录,那么您可以将关键部分传递给 Dedup。它将使处理更快。
如果您想在处理错误场景的同时继续处理,最好的方法之一是通过使用 AbInitio 中的 write_to_log() 函数。尽管需要谨慎地使用此组件,因为它是一个内存吞噬功能。
创建两个图表。图 1. 进行去重排序并传递记录。将重复记录收集到文件中。现在在该图的结束脚本中检查该文件计数。如果计数为 0,则调用图 2。否则,图失败。
图 2:使用 dedup 组件的输出更新表。
您可以通过 2 种方式处理这种情况
在数据库级别
如果您的表有约束,那么只需使用 TABLE 组件的以下属性
a. ignoreDuplicates
b. reject-threshold
在图表级别
采用 dedup 组件,将 dedup 端口附加到重新格式化并在重新格式化内使用 force_error 函数。
#2 的重要注意事项:如果您保持表格组件的阶段高于重新格式化组件(包含 force_error)会很好,这样在发生故障时您将 100% 确保对表格没有影响数据。