如何忽略查找失败在Kettle Transformation UPDATE步骤中有效?我试图更新一些数据进行转换,但是当键查找与表数据不匹配时,我会在此步骤中看到频繁的错误消息。
答案 0 :(得分:1)
默认情况下,Update step
根据Keys to look up the values
面板中定义的密钥(ID)查找记录(来自数据库)。如果在目标表中找不到记录,则该步骤失败并向控制台抛出错误。它失败是因为它尝试将目标表中的查找值与记录流中的值进行比较。如果它没有从目标数据库中找到任何行进行比较,则会失败。
检查Ignore lookup failures?
时,步骤不会失败。它会忽略特定的失败并继续处理记录流中的另一个传入行。
您可以使用Flag field
来保存查找失败的信息。您可以使用它来跟踪所有失败的ID,并将它们写出到控制台或文件中。
E.g:当您的ETL每天从源加载到目标数据库时,该步骤非常有用。源数据库已包含每日增量[IDs: 1,2,3,4,5,6
],而目标仅包含在[IDs: 1,2,3,4
]之前加载的增量。现在,当您运行从源加载数据并更新目标(使用Update step
)的转换时,它会在ID = 5
上失败。它无法在目标数据库中查找此类记录。
另一个重要选项是Skip lookup
。检查时,它直接执行update语句,而不查找目标数据库中的行,并将表值与记录流中的传入值进行比较。