将源中的两个 table 同步到目标节点中的一个 table 时出现问题

Problems synchronizing two tables in the source to one table in target node

我有这种情况:

源节点:

架构 1:

架构 2:

目标节点:

架构 1:

为了解决这个问题,我创建了一个 "default" 类型的路由器,每个 table 触发器和 trigger_router table 中的相应行。之后,我在 transform_table 中创建了一行来管理从源节点中的 Table1 到目标节点中的 Table 7 的转换。这是我的问题:起初,我试图在 transform_table 中创建一行以获取从 Table6 到 Table7 的数据,但我不能使用任何主键来 link Table1 和 Table6 直接在源代码中。现在我正在尝试使用查找转换来获取 field3 和 field4.In 为了实现这一点,我在 transform_column table 中创建了一行,如下所示:

TARGET_COLUMN_NAME: field3 
SOURCE_COLUMN_NAME: null 
PK: 0 
TRANSFORM_TYPE:lookup 
TRANSFORM_EXPRESSION:  
 SELECT field3 
 FROM schema1.table1 s1t1 
 INNER JOIN schema1.table2 s1t2 ON s1t2.table1_id = s1t1.id 
 LEFT JOIN schema1.table3 s1t3 ON s1t3.id = s1t2.table3_id 
 LEFT JOIN schema2.table5 s2t5 ON s2t5.table3_id = s1t3.id 
 LEFT JOIN schema2.table6 s2t6 ON s2t6.id = s2t5.table6_id 
 WHERE s1t1.id = :ID

我知道,当转换发生时,:ID 变量将替换为我得到的 table1 行的 ID。我遇到的问题是 field3 和 field4 在某些 table7 行中可能为 NULL(正如您可以从查询中的 LEFT JOINS 想象的那样)。所以我得到了错误

Expected a single row, but returned no rows from lookup for target column field3 on transform source_2_target_table7_table1_schema1

当查找表达式 returns 没有行时,是否有任何方法可以强制 SymmetricDS 在此列中复制 NULL 值?或者有没有其他方法可以实现这种同步?

提前致谢

通过使用 BSH 转换和 sqlTemplate 解决。当 sqlTemplate 查询 return 没有行时,只是 return null。