Azure 数据工厂中的复制数据未完全读取文件

Posted

技术标签:

【中文标题】Azure 数据工厂中的复制数据未完全读取文件【英文标题】:File is not readed completely by Copy Data in Azure Data Factory 【发布时间】:2021-12-12 08:01:43 【问题描述】:

我正在开发一个管道,该管道能够将位于 Blob 存储中的 .txt 文件中的数据插入到 SQL 数据库中的表中。

问题:不知何故,活动配置无法正常工作,因为'没有读取文件中的所有记录,因此没有将所有数据加载到数据库中(我在打开文件并比较时意识到了这个问题.text 文件中针对 SQL 表的记录数。另外,当我在 SQL 表中搜索上个月的记录时,我没有找到它们)

注意:我从 SQL 中检查了表中字符的大小限制,这不是问题。

我还想与您分享数据复制活动和源数据集配置:

接收数据集:

你们知道我在这里做错了什么吗?希望你能帮助我,最好的问候。

附: Here's the Source Dataset

【问题讨论】:

你可以看到,“复制到接收器的行数”指标“在不解析文件的情况下按原样复制文件时不适用,例如,当源和接收器数据集为二进制格式类型或其他格式时使用相同的设置键入。”我刚刚复制活动失败,但仍然显示写的行数:266,206 你能分享一下接收器数据集的配置吗,自从选择了自动创建表后你是如何指定表名的 @KarthikBhyresh-MT 您能否向我解释一下您是如何正确加载数据的?另外,我更新了帖子并添加了接收器数据集配置屏幕截图 我在第一条评论中的意思是,即使复制活动失败,管道运行详细信息显示写入的行数与读取的行数相同,但实际复制的行数不会相同 我遵循了与您完全相同的配置,我设置了 DISTRIBUTION = HASH(描述),CLUSTERED COLUMNSTORE INDEX。写入的数据:28.054 MB 写入的行数:266,206 您是自动导入架构还是手动映射 【参考方案1】:

正如 cmets 中所讨论的,在使用复制活动时,您必须确保在运行活动之前设置架构。按照设计,架构映射为空,必须由用户手动配置或要求 adf 从数据集中导入架构。

注意:在接收器中使用自动创建表选项时,它会自动在源模式中创建接收器表(如果不存在), 但在指定存储过程时将不受支持(在 接收端)或启用暂存时。

使用 COPY 语句将数据作为接收器加载到 Azure Synapse Analytics 中,连接器支持根据源架构自动创建 DISTRIBUTION = ROUND_ROBIN 的目标表(如果不存在)。

参考官方文档:Copy and transform data in Azure Synapse Analytics by using Azure Data Factory or Synapse pipelines

来源...

下沉...

因此 Azure Synapse 将用作接收器。此外,还必须创建与源的列名、列顺序和列数据类型匹配的 Azure Synapse 表。

用于动态映射

如果您查看管道代码,您可以在 Translator 部分看到与 UI 中的映射部分等效的 JSON。

您可以在动态映射中将其用作基础,以便进一步复制类似文件,而无需手动配置架构。

在翻译器中的映射下复制 JSON

【讨论】:

以上是关于Azure 数据工厂中的复制数据未完全读取文件的主要内容,如果未能解决你的问题,请参考以下文章

Azure ADF 管道复制数据日志文件未触发第二个管道的“已创建 Blob”触发器

如何在 Azure 数据工厂触发时检查是不是正在上传某些文件(允许在 ADF 中上传时读取文件)

Azure 数据工厂中的 Azure Synapse 存储过程:是同步调用吗?

向 Azure 数据工厂中的表添加新列

Azure数据工厂复制字符串失败

如何使用 Azure 数据工厂解析 Excel 的每一行