Azure 数据工厂和 Azure Synapse Analytics 中的 Excel 文件格式

适用于:Azure 数据工厂 Azure Synapse Analytics

如果要分析 Excel 文件,请按此文的要求操作。 该服务支持“.xls”和“.xlsx”。

以下连接器支持 Excel 格式:Amazon S3、Amazon S3 兼容存储、Azure Blob、Azure Data Lake Storage Gen2、Azure 文件存储、文件系统、FTP、Google 云存储、HDFS、HTTP、Oracle 云存储和 SFTP。 它可以作为源,但不可作为接收器。

注意

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

数据集属性

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

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

下面是 Azure Blob 存储上 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 有关如何从数据存储读取数据的一组属性。 每个基于文件的连接器在 storeSettings 下都有其自己支持的读取设置。 否
"activities": [
    {
        "name": "CopyFromExcel",
        "type": "Copy",
        "typeProperties": {
            "source": {
                "type": "ExcelSource",
                "storeSettings": {
                    "type": "AzureBlobStorageReadSettings",
                    "recursive": true
                }
            },
            ...
        }
        ...
    }
]

映射数据流属性

在映射数据流中,可以在以下数据存储中读取 Excel 格式:Azure Blob 存储、Azure Data Lake Storage Gen2、Amazon S3 和 SFTP。 可以使用 Excel 数据集或内联数据集来指向 Excel 文件。

源属性

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

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

源示例

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

Excel 源

关联的数据流脚本为:

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

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