是否可以在单个 Azure 数据工厂数据流中进行两阶段加载?

Is it possible to do a two-stage load in a single Azure Data Factory Data Flow?

我有一对具有外键关系的目标 table。父项 table 的主键由插入时的数据库序列生成,因此必须在生成父项的主键后执行对子项 table 的插入。

我想在 Azure 数据工厂中将一对记录作为单个事务插入 table。

是否可以在单个 DataFlow 中插入父项 table,然后使用新插入记录中的值插入子项?我在父项中有一个遗留键值,我可以用它来识别新生成的主键。

在 SQL 术语中,子项的插入看起来像这样:

INSERT INTO child_table
( foreign_key
, some_data_value
)
SELECT
  parent_table.primary_key
, staging_table.some_data_value
FROM staging_table
JOIN parent_table
  ON parent_table.legacy_value = staging_table.legacy_value

DataFlows 可以有自定义的 Sink Ordering,其中可以设置 table 插入的顺序,但在这种情况下,我需要 Source 步骤来检索要在加载父项的 Sink 步骤之后执行的值.

将它分成两个数据流有两个缺点,因为两个插入没有封装在单个事务中,并且集群启动开销时间发生两次。

我很确定这个问题的答案是“不,你不能,无论如何不只是使用 ADF”。

我们需要做的是在数据库中构建一些东西来解决这个问题,例如带有插入触发器的视图,该触发器查找外键并替换值。