我正在尝试在复制数据活动中访问存储在 Blob 存储容器中的一些数据。在源设置中,我可以指定源文件的数据集,现在我想在预复制脚本的接收器设置中访问相同的文件,以对其进行一些转换。
https://i.sstatic.net/JpKmgMU2.png
https://i.sstatic.net/V0FxXaEt.png
在下一张图片中,我想填写引号中的空格,访问复制数据中的源的值是多少。
复制活动预复制脚本仅适用于接收器数据集数据库。无论您在此运行什么查询,都将像目标数据库中的脚本一样。这意味着,预复制脚本将无权访问复制活动的源数据。预复制脚本用于在复制到目标表之前截断或更新目标数据库中的某些表。
由于您的要求是在复制到目标表之前修改源数据,因此您可以使用Dataflow进行转换。在数据流的源中,提供源数据集,您可以根据 SQL 查询使用选择、聚合、派生列转换。在接收器中,添加您的目标 SQL 表。
(或)
如果您的源数据少于 5000 行,您可以尝试以下结合使用查找和复制活动的方法。
对源数据集使用查找活动,它将以 JSON 数组形式提供数据。
查找后使用复制活动,但对于源数据集和接收器数据集,提供相同的目标表数据集。
openjson()
与查找活动输出 JSON 数组一起使用,如查询中的以下示例。
declare @json nvarchar(max) = N'@{activity('Lookup1').output.value}';
SELECT * FROM
OPENJSON (@json)
WITH (
id int '$.id' ,
date varchar(32) '$.date',
name int '$.name'
);
现在,您可以使用上面的 SQL 查询修改源数据,并将其复制到目标表。