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

Azure 数据工厂和 Synapse Analytics 管道中的 XML 格式

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

提示

试用 Microsoft Fabric 中的数据工厂,这是一种适用于企业的一站式分析解决方案。 Microsoft Fabric 涵盖从数据移动到数据科学、实时分析、商业智能和报告的所有内容。 了解如何免费开始新的试用

如果要分析 XML 文件,请按此文的要求操作。

以下连接器支持 XML 格式:Amazon S3Amazon S3 兼容存储Azure BlobAzure Data Lake Storage Gen1Azure Data Lake Storage Gen2Azure 文件存储文件系统FTPGoogle 云存储HDFSHTTPOracle 云存储SFTP。 它可以作为源,但不可作为接收器。

数据集属性

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

属性 描述 必需
type 数据集的 type 属性必须设置为 Xml。
location 文件的位置设置。 每个基于文件的连接器在 location 下都有其自己的位置类型和支持的属性。 请在连接器文章 -> 数据集属性部分中查看详细信息。
encodingName 用于读取/写入测试文件的编码类型。
可用的值如下:"UTF-8"、"UTF-16"、"UTF-16BE"、"UTF-32"、"UTF-32BE"、"US-ASCII"、"UTF-7"、"BIG5"、"EUC-JP"、"EUC-KR"、"GB2312"、"GB18030"、"JOHAB"、"SHIFT-JIS"、"CP875"、"CP866"、"IBM00858"、"IBM037"、"IBM273"、"IBM437"、"IBM500"、"IBM737"、"IBM775"、"IBM850"、"IBM852"、"IBM855"、"IBM857"、"IBM860"、"IBM861"、"IBM863"、"IBM864"、"IBM865"、"IBM869"、"IBM870"、"IBM01140"、"IBM01141"、"IBM01142"、"IBM01143"、"IBM01144"、"IBM01145"、"IBM01146"、"IBM01147"、"IBM01148"、"IBM01149"、"ISO-2022-JP"、"ISO-2022-KR"、"ISO-8859-1"、"ISO-8859-2"、"ISO-8859-3"、"ISO-8859-4"、"ISO-8859-5"、"ISO-8859-6"、"ISO-8859-7"、"ISO-8859-8"、"ISO-8859-9"、"ISO-8859-13"、"ISO-8859-15"、"WINDOWS-874"、"WINDOWS-1250"、"WINDOWS-1251"、"WINDOWS-1252"、"WINDOWS-1253"、"WINDOWS-1254"、"WINDOWS-1255"、"WINDOWS-1256"、"WINDOWS-1257"、"WINDOWS-1258"。
nullValue 指定 null 值的字符串表示形式。
默认值为空字符串
compression 用来配置文件压缩的属性组。 如果需要在活动执行期间进行压缩/解压缩,请配置此部分。
type
(在 compression 下)
用来读取/写入 XML 文件的压缩编解码器。
允许的值为 bzip2、gzip、deflate、ZipDeflate、TarGzip、Tar、snappy 或 lz4 。 默认设置是不压缩。
注意:目前,复制活动不支持“snappy”和“lz4”,映射数据流不支持“ZipDeflate”、“TarGzip”和“Tar”。
注意,使用复制活动解压缩 ZipDeflate/TarGzip/Tar 文件并将其写入基于文件的接收器数据存储时,默认情况下文件将提取到 <path specified in dataset>/<folder named as source compressed file>/ 文件夹,对复制活动源使用 preserveZipFileNameAsFolder/preserveCompressionFileNameAsFolder 来控制是否以文件夹结构形式保留压缩文件名 。
否。
level
(在 compression 下)
压缩率。
允许的值为 OptimalFastest
- Fastest:尽快完成压缩操作,不过,无法以最佳方式压缩生成的文件。
- 最佳:以最佳方式完成压缩操作,不过,需要耗费更长的时间。 有关详细信息,请参阅 Compression Level(压缩级别)主题。

下面是 Azure Blob 存储上的 XML 数据集的示例:

{
    "name": "XMLDataset",
    "properties": {
        "type": "Xml",
        "linkedServiceName": {
            "referenceName": "<Azure Blob Storage linked service name>",
            "type": "LinkedServiceReference"
        },
        "typeProperties": {
            "location": {
                "type": "AzureBlobStorageLocation",
                "container": "containername",
                "folderPath": "folder/subfolder",
            },
            "compression": {
                "type": "ZipDeflate"
            }
        }
    }
}

复制活动属性

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

了解如何通过架构映射来映射 XML 数据和接收器数据存储/格式。 预览 XML 文件时,使用 JSON 层次结构显示数据,并使用 JSON 路径指向字段。

XML 作为源

复制活动的 *source* 节支持以下属性。 详细了解 XML 连接器行为

属性 描述 必需
type 复制活动的 type 属性必须设置为 XmlSource。
formatSettings 一组属性。 请参阅下面的“XML 读取设置”表。
storeSettings 有关如何从数据存储读取数据的一组属性。 每个基于文件的连接器在 storeSettings 下都有其自己支持的读取设置。 请在连接器文章 -> 复制活动属性部分中查看详细信息。

formatSettings 下支持的“XML 读取设置”:

属性 描述 必需
type formatSettings 的 type 必须设置为 XmlReadSettings。
validationMode 指定是否要验证 XML 架构。
允许的值为 none(默认值、无验证)、xsd(使用 XSD 验证)以及 dtd (使用 DTD 验证) 。
namespaces 分析 XML 文件时是否启用命名空间。 允许的值是:true(默认)、false。
namespacePrefixes 命名空间 URI 到前缀的映射,用于在分析 xml 文件时为字段命名。
如果 XML 文件具有命名空间,且已启用命名空间,则默认情况下,字段名称与 XML 文档中的名称相同。
如果在此映射中为命名空间 URI 定义了一个项,则字段名称为 prefix:fieldName
detectDataType 是否检测整数、双精度和布尔数据类型。 允许的值是:true(默认)、false。
compressionProperties 一组属性,指示如何为给定的压缩编解码器解压缩数据。
preserveZipFileNameAsFolder
(在 compressionProperties->type 下为 ZipDeflateReadSettings
当输入数据集配置了 ZipDeflate 压缩时适用。 指示是否在复制过程中以文件夹结构形式保留源 zip 文件名。
- 如果设置为“true(默认)”,服务会将解压缩的文件写入 <path specified in dataset>/<folder named as source zip file>/
- 如果设置为“false”,服务会将解压缩的文件直接写入 <path specified in dataset>。 请确保不同的源 zip 文件中没有重复的文件名,以避免产生冲突或出现意外行为。
preserveCompressionFileNameAsFolder
(在 compressionProperties->type 下为 TarGZipReadSettingsTarReadSettings
当输入数据集配置了 TarGzip/Tar 压缩时适用 。 指示是否在复制过程中以文件夹结构形式保留源压缩文件名。
- 如果设置为“true(默认)”,服务会将解压缩文件写入 <path specified in dataset>/<folder named as source compressed file>/
- 如果设置为“false”,服务会将解压文件直接写入 <path specified in dataset>。 请确保不同的源文件中没有重复的文件名,以避免产生冲突或出现意外行为。

映射数据流属性

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

源属性

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

名称 说明 必需 允许的值 数据流脚本属性
通配符路径 将处理与通配符路径匹配的所有文件。 重写数据集中设置的文件夹和文件路径。 String[] wildcardPaths
分区根路径 对于已分区的文件数据,可以输入分区根路径,以便将已分区的文件夹读取为列 字符串 partitionRootPath
文件列表 源是否指向某个列出待处理文件的文本文件 truefalse fileList
用于存储文件名的列 使用源文件名称和路径创建新列 字符串 rowUrlColumn
完成后 在处理后删除或移动文件。 文件路径从容器根开始 删除:truefalse
Move:['<from>', '<to>']
purgeFiles
moveFiles
按上次修改时间筛选 选择根据上次更改时间筛选文件 时间戳 modifiedAfter
modifiedBefore
验证模式 指定是否要验证 XML 架构。 None(默认值,无验证)
xsd(使用 XSD 进行验证)
dtd(使用 DTD 进行验证)。
validationMode
命名空间 分析 XML 文件时是否启用命名空间。 true(默认值)或 false namespaces
命名空间前缀对 命名空间 URI 到前缀的映射,用于在分析 xml 文件时为字段命名。
如果 XML 文件具有命名空间,且已启用命名空间,则默认情况下,字段名称与 XML 文档中的名称相同。
如果在此映射中为命名空间 URI 定义了一个项,则字段名称为 prefix:fieldName
使用模式 ['URI1'->'prefix1','URI2'->'prefix2'] 的数组 namespacePrefixes
允许找不到文件 如果为 true,则找不到文件时不会引发错误 truefalse ignoreNoFilesFound

XML 源脚本示例

下面的脚本是使用数据集模式的映射数据流中 XML 源配置的示例。

source(allowSchemaDrift: true,
    validateSchema: false,
    validationMode: 'xsd',
    namespaces: true) ~> XMLSource

下面的脚本是使用内联数据集模式的 XML 源配置的示例。

source(allowSchemaDrift: true,
    validateSchema: false,
    format: 'xml',
    fileSystem: 'filesystem',
    folderPath: 'folder',
    validationMode: 'xsd',
    namespaces: true) ~> XMLSource

XML 连接器行为

使用 XML 作为源时,请注意以下事项。

  • XML 属性:

    • 元素的属性将被分析为层次结构中元素的子字段。
    • 属性字段的名称遵循模式 @attributeName
  • XML 架构验证:

    • 可以选择不验证架构,或者使用 XSD 或 DTD 验证架构。
    • 使用 XSD 或 DTD 验证 XML 文件时,必须通过相对路径在 XML 文件内部引用 XSD/DTD。
  • 命名空间处理:

    • 在使用数据流时,可以禁用命名空间,在这种情况下,用于定义命名空间的属性将会被分析为普通属性。
    • 启用命名空间后,默认情况下,元素和属性的名称将遵循模式 namespaceUri,elementNamenamespaceUri,@attributeName。 可以为源中的每个命名空间 URI 定义命名空间前缀,在此情况下,元素和属性的名称将遵循模式 definedPrefix:elementNamedefinedPrefix:@attributeName
  • 值列:

    • 如果 XML 元素同时具有简单文本值和属性/子元素,则简单文本值将被解析为“值列”的值,其中内置字段名称为 _value_。 如果适用,它还会继承元素的命名空间。