Azure 数据工厂附加大量与 csv 文件具有不同架构的文件

Posted

技术标签:

【中文标题】Azure 数据工厂附加大量与 csv 文件具有不同架构的文件【英文标题】:Azure Data Factory appending large number of files having different schema from csv files 【发布时间】:2021-03-09 00:09:48 【问题描述】:

我们有 500 个 CSV 文件上传到 Azure 存储容器。这些文件使用 4 种不同的架构,这意味着它们几乎没有不同的列,而且有些列在所有文件中都是通用的。

我们正在使用 ADF 和架构漂移来映射接收器和源中的列,并能够编写文件。

但这不起作用,它只使用它为每个文件处理的第一个文件的架构,这会导致数据问题。请就这个问题提出建议。

我们针对三个场景运行了管道,但问题仍未解决。在所有三种情况下都会出现与下面提到的相同的问题:

1.不正确的映射,即 A 类型的 Description 和 PayClass 映射到 WBSname 和 Activity Name 2. 如果文件之一中少一列(缺失列)也会干扰映射,即一个文件没有将 Group 错误地映射到另一列的资源类型。

案例 1 源和汇没有架构漂移 在源中创建和上传所有列的空虚拟文件 带有列模式的派生表

案例 2: 源和汇的模式漂移 包含在源中创建和上传的所有列的虚拟文件 带有列模式的派生表

Case 3 : Schema Drift at Source /No Schema Drift at Sink 包含在源中创建和上传的所有列的虚拟文件 带有列模式的派生表

【问题讨论】:

【参考方案1】:

这是因为单源转换读取的文件中有不同的架构。

Schema Drift 将自动处理源的架构因来自管道的不同调用而发生更改的情况。

在您的情况下解决此问题的方法是有 4 个来源:每个 CSV 架构类型有 1 个。您始终可以将结果重新合并到一个流中,并在最后将它们汇集在一起​​。

如果您在此场景中使用架构漂移和 4 种不同的源类型,则数据流将自动处理发现更多列并且每次执行此数据流的管道都会更改列的情况。

顺便说一句,您要求的这个 schemaMerge 功能今天可用于 ADF 数据流中的 Parquet 源。我们正在努力将本机 schemaMerge 添加到 CSV 源。在那之前,您需要使用我上面描述的方法。

【讨论】:

如何添加 4 个来源? 在数据流设计画布上单击“源”转换块 4 次

以上是关于Azure 数据工厂附加大量与 csv 文件具有不同架构的文件的主要内容,如果未能解决你的问题,请参考以下文章

Azure 数据工厂将数据流映射到 CSV 接收器导致零字节文件

如何使用 azure 数据工厂拆分列值

Azure数据工厂映射数据流到CSV接收器的结果为零字节文件

Azure 数据工厂文件创建

到 Azure SQL 数据库的数据流输出仅包含 Azure 数据工厂中的 NULL 数据

Azure 数据工厂 - 为每个活动获取内部元数据