【问题标题】:Is it possible to do a two-stage load in a single Azure Data Factory Data Flow?是否可以在单个 Azure 数据工厂数据流中进行两阶段加载?
【发布时间】:2021-06-09 09:48:48
【问题描述】:

我有一对具有外键关系的目标表。父表的主键是在插入时由数据库序列生成的,因此必须在生成父表的主键之后才能插入到子表中。

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

是否可以在单个数据流中插入父表,然后使用新插入记录中的值插入子表?我在父级中有一个旧键值,可用于识别新生成的主键。

在 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 可以有 Custom Sink Ordering,其中可以设置表插入的顺序,但在这种情况下,我需要 Source 步骤来检索要在加载父级的 Sink 步骤之后执行的值。

把它分成两个DataFlows有两个缺点,两个insert没有封装在一个事务中,集群启动开销时间发生了两次。

【问题讨论】:

  • 数据库平台是什么?
  • @wBob Azure SQL,我们正在探索通过带有 on-insert 触发器的视图插入以获取外键,或者编写存储过程来执行插入的可能性。但实际上 DB 平台还没有最终确定,它可能最终是 MS Dataverse。

标签: azure-data-factory azure-data-factory-2


【解决方案1】:

我很确定这个问题的答案是“不,你不能,反正不仅仅是 ADF”。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-15
    • 2022-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-08
    相关资源
    最近更新 更多