SQL 存储过程与 Azure 数据工厂数据流

发布:2024-09-28 11:43 阅读:130 点赞:0

一、引言

在本文中,我们将探讨两种常用的方法,用于创建暂存表并将数据迁移到 Dynamics 365 Customer Engagement (D365):使用 SQL 存储过程和 Azure Data Factory (ADF) 数据流。我们将比较这两种方法的优缺点,重点关注执行时间、成本及其在数据迁移项目中的适用性。

案件记录

二、场景:迁移 D365 案例记录

我们需要从源 SQL 数据库迁移 5 条测试的 Dynamics 365 案例(incident entity)。D365 案例记录的关键属性包括需要解析的查找和选项集。

查找和选项集

  • 查找:检索 D365 记录的唯一标识符(GUID)。
  • 选项集:映射 D365 选项集的整数值。

一旦获取了这些引用,我们可以构建暂存表,为数据迁移做准备。

SQL

三、解析引用并创建暂存表

在将记录迁移到 D365 之前,我们需要通过连接源表与各种 D365 参考表来创建暂存表。

有两种常见的方法可以实现这一目标:

临时表

存储过程

3.1 选项 1:使用 SQL 存储过程

来源

  1. 编写并执行 SQL 存储过程,以连接源表与参考表。
  2. 通过 ADF 存储过程活动调用该存储过程以生成暂存表。
  3. 使用 ADF 中的复制活动将数据从暂存表迁移到 D365。
-- 示例 SQL 存储过程
CREATE PROCEDURE CreateStagingTable AS
BEGIN
    -- 创建暂存表的逻辑
    SELECT s.*, r.LookupId
    INTO StagingTable
    FROM SourceTable s
    LEFT JOIN ReferenceTable r ON s.ReferenceId = r.Id
END

复制活动

3.2 选项 2:使用 ADF 数据流

  1. 使用 ADF 数据流构建暂存表,进行源表与 D365 参考表之间的左连接。
  2. 添加一列以处理多实体查找(例如 CustomerEntityReferenceType)。
  3. 使用 Sink 任务将转换后的数据集加载到 SQL 暂存表中。
  4. 通过管道中的数据流活动执行数据流。

接收任务

数据

四、性能比较:执行时间

  • SQL 存储过程:整个管道完成时间为 22 秒,其中存储过程本身仅需 2 秒。
  • ADF 数据流:使用 ADF 数据流的管道耗时近 6 分钟,其中数据流活动耗时 5 分 36 秒。

结论

存储过程在执行时间上明显优于 ADF 数据流,使其成为大规模数据迁移的更高效选择。

五、成本比较:ADF 定价

根据 2020 年 7 月的 Azure 定价,我们来看看这些管道的运行成本。

  • SQL 存储过程:5 条记录的总成本为 £0.009574
  • ADF 数据流:相同 5 条记录的总成本为 £0.6523

结论

ADF 数据流不仅速度慢,而且相对于 SQL 存储过程方法成本高得多。

六、关键要点

  • 执行时间:SQL 存储过程显著更快,尤其是处理多连接的复杂查询时。
  • 成本效益:对于大规模迁移,使用 SQL 存储过程的性价比高,执行时间和成本差异明显。
  • 易用性:虽然 ADF 数据流提供了无代码解决方案,但其带来的便利性在时间和成本上付出了代价。
  • 可扩展性:对于小数据集或快速转换,ADF 数据流可能足够。但对于大规模数据迁移,SQL 存储过程仍然是首选。

七、结论

尽管 ADF 数据流提供了无代码的数据转换方法,但其执行时间和相关成本使得 SQL 存储过程在大多数数据迁移任务中成为更佳选择,尤其是在处理 Dynamics 365 项目中大数据量时。通过使用 SQL 存储过程,我们可以提升数据迁移的效率与经济性。