SQL 存储过程与 Azure 数据工厂数据流
阅读:130
点赞:0
一、引言
在本文中,我们将探讨两种常用的方法,用于创建暂存表并将数据迁移到 Dynamics 365 Customer Engagement (D365):使用 SQL 存储过程和 Azure Data Factory (ADF) 数据流。我们将比较这两种方法的优缺点,重点关注执行时间、成本及其在数据迁移项目中的适用性。
二、场景:迁移 D365 案例记录
我们需要从源 SQL 数据库迁移 5 条测试的 Dynamics 365 案例(incident entity)。D365 案例记录的关键属性包括需要解析的查找和选项集。
查找和选项集
-
查找:检索 D365 记录的唯一标识符(GUID)。 -
选项集:映射 D365 选项集的整数值。
一旦获取了这些引用,我们可以构建暂存表,为数据迁移做准备。
三、解析引用并创建暂存表
在将记录迁移到 D365 之前,我们需要通过连接源表与各种 D365 参考表来创建暂存表。
有两种常见的方法可以实现这一目标:
3.1 选项 1:使用 SQL 存储过程
-
编写并执行 SQL 存储过程,以连接源表与参考表。 -
通过 ADF 存储过程活动调用该存储过程以生成暂存表。 -
使用 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 数据流
-
使用 ADF 数据流构建暂存表,进行源表与 D365 参考表之间的左连接。 -
添加一列以处理多实体查找(例如 CustomerEntityReferenceType
)。 -
使用 Sink 任务将转换后的数据集加载到 SQL 暂存表中。 -
通过管道中的数据流活动执行数据流。
四、性能比较:执行时间
-
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 存储过程,我们可以提升数据迁移的效率与经济性。