嗨我有一个Ab initio图表,经过一些数据操作后,它将它们加载到一个表中。如果找到重复的行,我正在寻找某种验证组件来结束进程(在将数据加载到表中之前)。
重复的行将具有唯一的ID,但我可以忽略该列/部分记录。
答案 0 :(得分:1)
将流传递给重复数据删除组件。
在Dedup组件中,选择输出的唯一属性。这将为您提供所有独特的记录。
现在,如果您有重复记录,它将通过dup端口。您可以在中间文件中收集这些记录(用于审计目的),并根据您的要求处理图表。
如果您想在找到所有重复项后立即中止该过程,则可以使用定相中止该过程。
如果你不想在DB中插入记录,如果输入有重复记录,那么你可以将关键部分传递给Dedup。它将使处理更快。
答案 1 :(得分:1)
如果您希望在处理错误场景时继续处理,最好的方法之一是通过在AbInitio中使用write_to_log()函数。 虽然这个组件的使用需要明智地进行,因为它是一个记忆吞噬的结果。
答案 2 :(得分:0)
创建两个图表。 图1.进行重复数据删除排序并传递记录。 将重复记录收集到文件中。现在在该图的结束脚本中检查该文件计数。如果count为0则调用图2.否则图表失败。
图2:使用重复数据删除组件的输出更新表。
答案 3 :(得分:0)
您可以通过两种方式处理此方案
在数据库级别
如果您的表有约束,那么只需使用TABLE组件的以下属性
a. ignoreDuplicates
b. reject-threshold
图表级
获取重复数据删除组件,将重复数据删除端口附加到重新格式化,并在重新格式化中使用force_error函数。
#2的重要提示:如果保持表组件的相位高于重组格式组件(包含force_error),那将是很好的,这样如果发生故障,您将为100 %确保对表格数据没有影响。