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 | 数据集的 type 属性必须设置为“Excel”。 | 是 |
location | 文件的位置设置。 每个基于文件的连接器在 location 下都有其自己的位置类型和支持的属性。 |
是 |
sheetName | 要读取数据的 Excel 工作表名称。 | 指定 sheetName 或 sheetIndex |
sheetIndex | 用于读取数据的 Excel 工作表索引,从 0 开始。 | 指定 sheetName 或 sheetIndex |
range | 给定工作表中用于定位选择性数据的单元格范围,例如: - 未指定:以表的形式从第一个非空行和列读取整个工作表 - A3 :读取从给定单元格开始的表,动态检测下面的所有行和右侧的所有列- A3:H5 :以表的形式读取此固定范围- A3:A3 :读取此单个单元格 |
否 |
firstRowAsHeader | 指定是否要将给定工作表/范围内的第一行视为带有列名的标题行。 允许的值为 true 和 true(默认值)。 |
否 |
nullValue | 指定 null 值的字符串表示形式。 默认值为空字符串。 |
否 |
compression | 用来配置文件压缩的属性组。 如果需要在活动执行期间进行压缩/解压缩,请配置此部分。 | 否 |
type (在 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>/ 。 |
否。 |
level (在 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 | 复制活动源的 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 源配置的示例。
关联的数据流脚本为:
source(allowSchemaDrift: true,
validateSchema: false,
wildcardPaths:['*.xls']) ~> ExcelSource
如果你使用内联数据集,则会在映射数据流中看到以下源选项。
关联的数据流脚本为:
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 格式,然后使用复制活动来移动文件。