如何在Azure数据工厂中读取扩展名为.xlsx和.xls的文件?

6

我正在尝试在我的Azure数据工厂数据集中读取具有.xlsx扩展名的Azure Blob Storage中的Excel文件。它会抛出以下错误:

Error found when processing 'Csv/Tsv Format Text' source 'Filename.xlsx' with row number 3: found more columns than expected column count: 1.

什么是在 Azure 数据工厂中读取 Excel 文件的正确列和行分隔符?
4个回答

8

2022年3月更新: ADF现在通过Mapping Data Flows更好地支持Excel:

https://learn.microsoft.com/en-us/azure/data-factory/format-excel

Excel文件具有专有格式,不是简单的分隔符文件。正如此处所示,Azure Data Factory没有直接导入Excel文件的选项,例如,您不能创建到Excel文件的链接服务并轻松读取它。您的选择是:

  1. 在转移到云端之前,将数据导出或转换为扁平文件,例如 .csv、制表符分隔符、管道分隔符等,这比 Excel 文件更易于阅读。这是您最简单的选择,尽管显然需要改变过程。
  2. 尝试 shredding XML——创建一个自定义任务,将 Excel 文件作为 XML 打开,并按建议 此处 提取您的数据。
  3. 现在,在 Azure Data Factory 中支持 SSIS 包(使用 执行 SSIS 包 活动),并且对 Excel 文件有更好的支持,例如连接管理器。因此,可能有一种选择是创建一个 SSIS 包来处理 Excel,并在 ADFv2 中托管它。警告!我没有测试过这一点,我只是推测可能是可能的。此外,还要为在 ADFv2 中运行 SSIS 创建 Integration Runtime (IR) 的开销。
  4. 尝试其他一些自定义活动,例如在 github 上有一个用于 shredding XML 的自定义 U-SQL 提取器此处
  5. 尝试使用 Databricks 读取 Excel,一些示例 此处,尽管为了读取几个 Excel 文件而启动 Spark 集群似乎有些过度。如果 Spark 已经在您的架构中,则这可能是一个很好的选择。

让我们知道你的进展。


1
Azure数据工厂V2最近发布了更新,以支持在现有连接器上解析Excel(.xls)文件。
目前支持Excel文件的连接包括:
- Amazon S3 - Azure Blob - Azure Data Lake Storage Gen1 - Azure Data Lake Storage Gen2 - Azure File Storage - 文件系统 - FTP - Google Cloud存储 - HDFS - HTTP - SFTP
更多详细信息可在此处找到:https://learn.microsoft.com/en-us/azure/data-factory/format-excel

0
Azure Data Factory没有直接上传Excel的选项,但是可以通过链接服务进行一些配置来上传。按照以下步骤操作:
  1. 使用适当的协议(FTP、Fileshare、SFTP等)创建一个源链接服务
  2. 创建与您的云存储相关联的链接服务。
  3. 使用之前定义的链接服务,采取复制数据活动,定义文件系统源数据集和接收器数据集。
  4. 在源和接收器中,选择二进制文件选项。 二进制文件选项
  5. 发布和执行您的管道

0

我想更详细地阐述一下第三个选项:SSIS包。我测试了这个解决方案,它有点起作用。首先 - SSIS IR非常昂贵,您希望在不需要时使用http post's to start-stop

其次,SSIS不支持开箱即用地处理blob文件。有一些方法可以解决。您可以使用一些第三方软件(我没有尝试过),或者探索其他选项

在我的情况下,我使用了一个技巧来部署下载文件、处理然后删除它的包。由于SSIS IR是一个虚拟机,所以在部署后它基本上在IR上执行了相同的操作。这只是一个技巧而不是解决方案,也不是100%稳定的。另一个问题是,在处理过程中,数字字段会出现一些微不足道的错误 - 例如,上传25导致在数据库站点上出现25.0000000001。我不知道为什么。我没有足够的时间深入研究这些问题。


Azure Feature Pack for Integration Services (SSIS) 不支持与 Azure Blob 存储一起使用吗? - wBob

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接