Rollback/delete parent if child 在 Pentaho kettle 中为 null

Rollback/delete parent if child is null in Pentaho kettle

我正在使用 Pentaho Kettle 8.0,我创建了一个转换以在 postgresql 数据库之间迁移数据。此转换读取有关订单(父)及其项目(子)的信息,并插入或更新目标数据库。但我在处理没有商品的订单或转换无法插入商品时遇到问题。我需要的是,每个订单必须至少有 1 件商品。 我设计了转换以查找订单数据和 insert/update 目标 table,然后查找项目。如果这些步骤出现错误,我该如何rollback/delete家长?

目标 table 是这样的:

订单 - Order_ID,价值,数量,Customer_ID
订单商品 - Item_ID、价值、数量、Order_ID

我建议您分两步完成。首先,你完全按照你所做的去做:插入 parent 和 child,而不用担心插入错误。完成后,另一个转换会清除任何 parent 而没有 child.

如果您需要一步完成(例如,如果系统正在生产中),我会生成订单和物料流。然后,对于每个订单查找是否有一个(或多个)项目并在写入数据库之前过滤这些订单。像这样:

也可以按订单统计商品数量,过滤掉没有商品的订单。