如何使用 azure 数据工厂下载 blob

Posted

技术标签:

【中文标题】如何使用 azure 数据工厂下载 blob【英文标题】:how to download blobs using azure data factory 【发布时间】:2022-01-15 03:35:05 【问题描述】:

我正在使用数据工厂来创建我的管道,但我面临着一些挑战。 管道由一个查找组成,该查找具有一个 json 数组和一个用于循环该 json 数组的 foreach,最后是 foreach 循环内的一个 set 变量:

管道:

查找:

变量:

现在我正在寻找的是将设置变量值(类似于图像)的结果传递给复制活动或类似活动,以便将图像下载到我们的数据湖容器中。 并且下载的图片的名称应该是这样的:

id +'_'+guid()+'.png'

感谢您的帮助

【问题讨论】:

您无法传递结果,但您可以将 URL 用作 COPY 活动(带有 HTTP 数据集)中的源,并将您的数据湖用作接收器。接收器将允许您指定名称。 感谢您的回复,我正在尝试使用复制活动,但它给出了这个错误:ErrorCode=UserErrorInvalidHttpUrlAddress,'Type=Microsoft.DataTransfer.Common.Shared.HybridDeliveryException,Message=Http Url Address 'url.com/productimages/sku/s1200716-main-zoom.jpg?imwidth=48' 无效。,Source=Microsoft.DataTransfer.ClientLibrary,' 你能分享更多关于你的 Http 数据集的信息吗?是二进制的吗? URL 似乎有问题,因此请检查 BaseUrl 设置和相对路径。 【参考方案1】:

使用copy data活动并将源数据集连接到HTTP连接器以执行URL并接收到数据湖存储,您可以将图像复制到数据湖,如下所示。

    使用lookup 活动,从 JSON 文件中获取数组值。

查找的输出:

    lookup 活动的输出传递给Foreach 活动。

@activity('Lookup1').output.value

    Foreach 活动中,使用 copy data 活动将图像从 URL 复制到数据湖。

使用set variable 是可选的,以存储查找输出中的 URL,因为您可以直接在复制活动中使用当前项目。

源数据集:

通过参数化 URL 和使用 二进制 数据集创建 HttpServer 链接服务。

在源数据集中,将数据集参数传递给链接的服务参数值。

    source 设置中,将当前项目 URLs 列传递给数据集属性 item().urls

    使用二进制数据集将 接收器 连接到数据湖存储,并创建一个数据集参数以提供接收器数据集中文件的名称。

    sink 设置中,根据需要提供数据集文件名。

@concat(item().id,'_',guid(),'.png')

数据湖中的接收文件:

图片1:

图片2:

【讨论】:

以上是关于如何使用 azure 数据工厂下载 blob的主要内容,如果未能解决你的问题,请参考以下文章

如何基于 Azure 数据工厂中创建的 Blob 执行触发器?

如何使用数据工厂将 IoT 中心存储的 blob 复制到 Azure SQL

如何从 azure blob 存储中获取 json 数据并使用 azure 数据工厂将其发送到 power apps dataverse

在 Azure Blob 容器中创建两个文件时,如何在 Azure 数据工厂中创建事件触发器?

如何使 Azure 存储 (blob) 工作?

如何使用 Azure 数据工厂中的每个活动合并文件