你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

Azure Data Factory 和 Azure Synapse Analytics 中的 Excel 文件格式

适用于: Azure Data Factory Azure Synapse Analytics

提示

Microsoft Fabric 中的 Data Factory 是下一代 Azure Data Factory,具有更加简化的架构、内置人工智能和新功能。 如果不熟悉数据集成,请从Fabric数据工厂开始。 现有 ADF 工作负载可以升级到 Fabric,以跨数据科学、实时分析和报告访问新功能。

如果要分析Excel文件,请遵循本文。 该服务支持“.xls”和“.xlsx”。

以下连接器支持Excel格式:Amazon S3Amazon S3 兼容存储Azure BlobAzure Data Lake Storage Gen1Azure Data Lake Storage Gen2Azure FilesFile SystemFTPGoogle Cloud StorageHDFSHTTPOracle Cloud StorageSFTP。 它可以作为源,但不可作为接收器。

注意

使用 HTTP 时不支持“.xls”格式。

数据集属性

有关可用于定义数据集的各部分和属性的完整列表,请参阅数据集一文。 本部分提供Excel数据集支持的属性列表。

属性 描述 必需
类型 数据集的 type 属性必须设置为 Excel
位置 文件的位置配置。 每个基于文件的连接器在 location 下都有其自己的位置类型和支持的属性。
sheetName 要读取数据的Excel工作表名称。 指定 sheetNamesheetIndex
sheetIndex 要读取数据的Excel工作表索引,从 0 开始。 指定 sheetNamesheetIndex
范围 给定工作表中用于定位选择性数据的单元格范围,例如:
- 未指定:以表的形式从第一个非空行和列读取整个工作表
- A3:读取从给定单元格开始的表,动态检测下面的所有行和右侧的所有列
- A3:H5:以表的形式读取此固定范围
- A3:A3:读取此单个单元格
firstRowAsHeader 指定是否要将给定工作表/范围内的第一行视为带有列名的标题行。
允许的值为 truetrue(默认值)。
空值 指定 null 值的字符串表示形式。
默认值为空字符串
压缩 用来配置文件压缩的属性组。 如果需要在活动执行期间进行压缩/解压缩,请配置此部分。
类型
(在 compression 下)
用来读取/写入 JSON 文件的压缩编解码器。
允许的值为 bzip2、gzip、deflate、ZipDeflate、TarGzip、Tar、snappy 或 lz4 。 默认设置是不压缩。
Note当前Copy activity不支持“snappy”和“lz4”,映射数据流不支持“ZipDeflate”、“TarGzip”和“Tar”。
注意,使用复制活动来解压缩 ZipDeflate 文件并写入到基于文件的目标数据存储时,会将文件提取到以下文件夹:
否。
水平仪
(在 compression 下)
压缩率。
允许的值为 OptimalFastest
- 最快:压缩操作应尽可能快地完成,即使生成的文件未能达到最佳压缩效果。
- 最佳:压缩操作应以最佳方式进行,甚至当操作需要更长时间完成时。 有关详细信息,请参阅 Compression Level(压缩级别)主题。

下面是Azure Blob Storage上Excel数据集的示例:

{
    "name": "ExcelDataset",
    "properties": {
        "type": "Excel",
        "linkedServiceName": {
            "referenceName": "<Azure Blob Storage linked service name>",
            "type": "LinkedServiceReference"
        },
        "schema": [ < physical schema, optional, retrievable during authoring > ],
        "typeProperties": {
            "location": {
                "type": "AzureBlobStorageLocation",
                "container": "containername",
                "folderPath": "folder/subfolder",
            },
            "sheetName": "MyWorksheet",
            "range": "A3:H5",
            "firstRowAsHeader": true
        }
    }
}

复制活动属性

有关可用于定义活动的各部分和属性的完整列表,请参阅管道一文。 本部分提供Excel源支持的属性列表。

Excel 作为数据源

在复制活动的*source*部分支持以下属性。

属性 描述 必需
类型 复制活动源的 type 属性必须设置为“ExcelSource”。
存储设置 有关如何从数据存储读取数据的一组属性。 每个基于文件的连接器在 storeSettings 下都有其自己支持的读取设置。
"activities": [
    {
        "name": "CopyFromExcel",
        "type": "Copy",
        "typeProperties": {
            "source": {
                "type": "ExcelSource",
                "storeSettings": {
                    "type": "AzureBlobStorageReadSettings",
                    "recursive": true
                }
            },
            ...
        }
        ...
    }
]

映射数据流属性

在映射数据流中,可以读取以下数据存储中的Excel格式:Azure Blob StorageAzure Data Lake Storage Gen1Azure Data Lake Storage Gen2Amazon S3SFTP。 可以使用Excel数据集或内联数据集来指向Excel文件。

源属性

下表列出了Excel源支持的属性。 可以在“源选项”选项卡中编辑这些属性。在使用内联数据集时,你会看到其他文件设置,这些设置与数据集属性部分描述的属性相同。

名称 描述 必需 允许的值 数据流脚本属性
通配符路径 将处理与通配符路径匹配的所有文件。 重写数据集中设置的文件夹和文件路径。 String[] 通配符路径
分区根路径 对于已分区的文件数据,可以输入分区根路径,以便将已分区的文件夹读取为列 字符串 partitionRootPath
文件列表 源是否指向某个列出待处理文件的文本文件 truefalse 文件列表
用于存储文件名的列 使用源文件名称和路径创建新列 字符串 rowUrlColumn
完成后 在处理后删除或移动文件。 文件路径从容器根开始 删除:truefalse
Move:['<from>', '<to>']
purgeFiles
moveFiles
按上次修改时间筛选 选择根据上次更改时间筛选文件 时间戳 modifiedAfter
modifiedBefore
允许找不到文件 如果为 true,则找不到文件时不会引发错误 truefalse 忽略未找到文件

源示例

下图是使用数据集模式映射数据流中的Excel源配置的示例。

Excel source

关联的数据流脚本为:

source(allowSchemaDrift: true,
    validateSchema: false,
    wildcardPaths:['*.xls']) ~> ExcelSource

如果你使用内联数据集,则会在映射数据流中看到以下源选项。

Excel源内联数据集

关联的数据流脚本为:

source(allowSchemaDrift: true,
    validateSchema: false,
    format: 'excel',
    fileSystem: 'container',
    folderPath: 'path',
    fileName: 'sample.xls',
    sheetName: 'worksheet',
    firstRowAsHeader: true) ~> ExcelSourceInlineDataset

注意

映射数据流不支持读取受保护的Excel文件,因为这些文件可能包含机密性通知,或强制实施限制其内容访问的特定访问限制。

处理非常大的Excel文件

Excel连接器不支持对Copy activity进行流式传输读取,并且必须先将整个文件加载到内存中,然后才能读取数据。 若要导入架构、预览数据或刷新Excel数据集,必须在 http 请求超时(100 秒)之前返回数据。 对于大型Excel文件,这些操作可能不会在该时间范围内完成,从而导致超时错误。 如果要将大型Excel文件(>100MB)移到另一个数据存储中,可以使用以下选项之一来解决此限制:

  • 使用自承载集成运行时(SHIR),然后使用Copy activity将大型Excel文件移动到 SHIR 的另一个数据存储中。
  • 将大型Excel文件拆分为几个较小的文件,然后使用Copy activity移动包含文件的文件夹。
  • 使用数据流活动将大型Excel文件移到另一个数据存储中。 数据流支持对Excel进行流式传输读取,并且可以快速移动/传输大型文件。
  • 手动将大型Excel文件转换为 CSV 格式,然后使用Copy activity移动文件。