在 Azure 数据工厂中的每个活动中使用数据流活动

问题描述 投票:0回答:1

我正在开发一个管道,在该管道中,我使用获取元数据活动从需要从 SFTP 处理的某些文件中获取文件名,然后过滤文件名以获取我需要的文件,之后我需要处理每个文件将这些文件的数据放入 Azure SQL 表中,我尝试使用 For every 活动,当我尝试使用复制活动来处理文件时,它工作正常,但我还需要将两个额外的列插入到 Azure SQL 表中、处理日期时间和文件名。

首先,当我使用数据流时,它没有检测到文件中的任何列 (https://i.stack.imgur.com/6bR0T.png),并且当我尝试映射接收器活动中的列时,我只获得我创建的派生列。我还尝试使用复制活动,但我真的不知道如何在那里添加派生列。

有谁知道这个接收器/转换是否可以使用复制活动或数据流活动来完成?

azure mapping azure-data-factory sftp sink
1个回答
0
投票

首先,当我使用数据流时,它没有检测到文件中的任何列

根据管道的结构,在 ForEach 活动内,您将使用数据集参数将每个文件名传递到数据流。

当您在每次迭代中对所有文件进行动态转换时,您的源架构在创建数据集时被设置为None

enter image description here

一般来说,在创建数据集时,特定文件的数据集架构将从

connection/store
导入,并且也会在数据流源中采用该架构。

当我尝试映射接收器活动中的列时,我只获得我创建的派生列

只有在数据流调试中才会出现这样的情况。当您使用管道执行数据流时,它将根据每次迭代中的源文件架构动态给出所需的结果。

在下面的演示中,我在数据集中获取了一个将

import schema
设置为
None
的文件,并且数据流调试中的源行现在是
0

enter image description here

您可以看到我正在添加一列新列,而在接收器中它仅显示一列。

但是当我使用管道执行数据流时,它从文件中动态获取架构,您可以看到结果包含源文件中的所有现有列。

enter image description here

因此,上述行为不会影响您的输出文件。如果您想在转换时交叉检查原始数据,您需要在数据集中提供一次源文件,并在数据集中导入模式。导入架构后,在文件名中使用数据集参数在每次迭代中执行此操作。

enter image description here

数据流将接受它,您可以在进行转换时看到数据预览。

© www.soinside.com 2019 - 2024. All rights reserved.