Поделиться через


Формат XML в конвейерах Фабрики данных Azure и Synapse Analytics

ОБЛАСТЬ ПРИМЕНЕНИЯ: Фабрика данных Azure Azure Synapse Analytics

Совет

Попробуйте использовать фабрику данных в Microsoft Fabric, решение для аналитики с одним интерфейсом для предприятий. Microsoft Fabric охватывает все, от перемещения данных до обработки и анализа данных в режиме реального времени, бизнес-аналитики и отчетности. Узнайте, как бесплатно запустить новую пробную версию !

Если вам требуется анализировать файлы XML, следуйте инструкциям, приведенным в этой статье.

Формат XML поддерживается для следующих соединителей: Amazon S3, хранилище, совместимое с Amazon S3, BLOB-объекты Azure, Azure Data Lake Storage 1-го поколения, Azure Data Lake Storage 2-го поколения, Файлы Azure, файловая система, FTP, Google Cloud Storage, HDFS , HTTP, Oracle Cloud Storage и SFTP. Он поддерживается в качестве источника, но не в качестве приемника.

Свойства набора данных

Полный список разделов и свойств, доступных для определения наборов данных, см. в статье о наборах данных. В этом разделе приведен список свойств, поддерживаемых набором данных XML.

Свойство Описание: Обязательное поле
type Для свойства type набора данных необходимо задать значение Xml. Да
расположение Параметры расположения файлов. Каждый файловый соединитель имеет собственный тип расположения и поддерживает собственный набор свойств в разделе 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".
No
nullValue Задает строковое представление значения NULL.
Значение по умолчанию — пустая строка.
No
compression Группа свойств для настройки сжатия файлов. Настройте этот раздел, если требуется сжатие/распаковка при выполнении действия. No
type
(в разделеcompression)
Кодек сжатия, используемый для чтения и записи файлов XML.
Допустимые значения: bzip2, gzip, deflate, ZipDeflate, TarGzip, Tar, snappy, lz4. Значение по умолчанию — без сжатия.
Примечание. В настоящее время действие Copy не поддерживает кодек "snappy" и "lz4", а поток данных сопоставления не поддерживает кодеки "ZipDeflate", "TarGzip"и"Tar".
Обратите внимание, что при использовании действия копирования для распаковки файлов ZipDeflate / TarGzip / tar и записи в файловое хранилище данных приемника по умолчанию файлы распаковываются в папку: <path specified in dataset>/<folder named as source compressed file>/, используйте preserveZipFileNameAsFolder/preserveCompressionFileNameAsFolder в источнике действия копирования, чтобы использовать имя сжатого (-ых) файла (-ов) для названия структуры папок.
level
(в разделеcompression)
Коэффициент сжатия.
Допустимые значения: оптимальный или самый быстрый.
- Fastest: операция сжатия должна выполняться как можно быстрее, даже если итоговый файл будет сжат не оптимально.
- Optimal: операция сжатия должна выполняться оптимально, даже если для ее завершения требуется больше времени. Дополнительные сведения см. в разделе Уровень сжатия.
No

Ниже приведен пример набора данных XML в хранилище BLOB-объектов Azure:

{
    "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"
            }
        }
    }
}

Свойства действия копирования

Полный список разделов и свойств, используемых для определения действий, см. в статье Конвейеры и действия в фабрике данных Azure. В этом разделе приведен список свойств, поддерживаемых источником XML.

Сведения о сопоставлении XML-данных и приемника хранилища данных и формата из схемы сопоставления. При предварительном просмотре XML-файлов данные отображаются с иерархией JSON, а для указания полей используется путь JSON.

XML в качестве источника

В разделе источника *source* действия копирования поддерживаются указанные ниже свойства. Дополнительные сведения см. в статье Поведение соединителя XML.

Свойство Описание: Обязательное поле
type Свойство type для источника действия копирования должно иметь значение XmlSource. Да
formatSettings Группа свойств. См. таблицу Параметры считывания XML ниже. No
storeSettings Группа свойств, определяющих способ чтения данных из хранилища данных. Каждый файловый соединитель поддерживает собственный набор параметров чтения в разделе storeSettings. Подробные сведения см. в статье о соединителях —> раздел "Свойства действия Copy". No

Поддерживаемые Параметры считывания XML в разделе formatSettings:

Свойство Описание: Обязательное поле
type Для типа formatSettings должно быть задано значение XmlReadSettings. Да
validationMode Указывает, следует ли проверять схему XML.
Допустимые значения: none (по умолчанию, без проверки), xsd (проверка с использованием XSD), dtd (проверка с помощью DTD).
No
пространства имен Следует ли включать пространство имен при синтаксическом анализе XML-файлов. Допустимые значения: true (по умолчанию), false. No
namespacePrefixes URI пространства имен для сопоставления с префиксом, который используется для именования полей при синтаксическом анализе XML-файла.
Если в XML-файле есть и включено пространство имен, по умолчанию имя поля совпадает с именем в XML-документе.
Если в этой карте есть элемент, определенный для URI пространства имен, имя поля будет иметь значение prefix:fieldName.
No
detectDataType Определяет, следует ли обнаруживать типы данных "целое число", double и логические. Допустимые значения: true (по умолчанию), false. No
compressionProperties Группа свойств для распаковки данных для данного кодека сжатия. No
preserveZipFileNameAsFolder
(в разделе compressionProperties->type как ZipDeflateReadSettings)
Применяется, когда для входного набора данных настроено сжатие ZipDeflate. Указывает, следует ли использовать имя исходного ZIP-файла в качестве имени структуры папок во время копирования.
— Если задано значение true (по умолчанию), служба записывает разархивированные файлы в <path specified in dataset>/<folder named as source zip file>/.
— Если задано значение false, служба записывает разархивированные файлы непосредственно в <path specified in dataset>. Чтобы избежать непредвиденных ситуаций, убедитесь в том, что в разных исходных ZIP-файлах нет файлов с одинаковыми именами.
No
preserveCompressionFileNameAsFolder
(в разделе compressionProperties->type как TarGZipReadSettings или TarReadSettings)
Применяется, когда для входного набора данных настроено сжатие TarGzip/Tar. Указывает, следует ли сохранять имя исходного сжатого файла в качестве имени структуры папок во время копирования.
— Если задано значение true (по умолчанию), служба записывает распакованные файлы в <path specified in dataset>/<folder named as source compressed file>/.
— Если задано значение false, служба записывает распакованные файлы непосредственно в <path specified in dataset>. Чтобы избежать непредвиденных ситуаций, убедитесь в том, что в разных исходных файлах нет файлов с одинаковыми именами.
No

Свойства потока данных для сопоставления

В потоках данных для сопоставления можно читать и записывать данные формата XML в следующих хранилищах данных: Хранилище BLOB-объектов Azure, Azure Data Lake Storage 1-го поколения, Azure Data Lake Storage 2-го поколения, Amazon S3 и SFTP. Указывать на файлы XML можно либо с помощью набора данных XML, либо с помощью встроенного набора данных.

Свойства источника

В приведенной ниже таблице перечислены свойства, поддерживаемые источником данных XML. Эти свойства можно изменить на вкладке Параметры источника. Дополнительные сведения см. в статье Поведение соединителя XML. При использовании встроенного набора данных будут отображаться дополнительные параметры, совпадающие со свойствами, описанными в разделе Свойства набора данных.

Имя Описание Обязательное поле Допустимые значения Свойство скрипта для потока данных
Пути с подстановочными знаками Будут обработаны все файлы, соответствующие пути с подстановочными знаками. Переопределяет папку и путь к файлу, заданные в наборе данных. No String[] wildcardPaths
Корневой путь раздела Для секционированных файловых данных можно ввести корневой путь к секции, чтобы считывать секционированные папки как столбцы Нет Строка partitionRootPath
Список файлов Сообщает о том, указывает ли источник на текстовый файл, в котором перечислены файлы для обработки. No true или false fileList
Столбец для хранения имени файла Предписывает создать столбец с именем и путем исходного файла. Нет Строка rowUrlColumn
After completion (После завершения) Инструкции в отношении удаления или перемещения файлов после обработки. Путь к файлу начинается с корня контейнера. No Удаление: true или false
Перемещение: ['<from>', '<to>']
Очистка файлов
moveFiles
Фильтр по последнему изменению Задает фильтр для файлов по времени последнего изменения No Метка времени modifiedAfter
modifiedBefore
Режим проверки Указывает, следует ли проверять схему XML. No None (по умолчанию, без проверки)
xsd (проверка с помощью XSD)
dtd (проверка с помощью DTD).
validationMode
Пространства имен Следует ли включать пространство имен при синтаксическом анализе XML-файлов. No true (по умолчанию) или false пространства имен
Пары префиксов пространства имен URI пространства имен для сопоставления с префиксом, который используется для именования полей при синтаксическом анализе XML-файла.
Если в XML-файле есть и включено пространство имен, по умолчанию имя поля совпадает с именем в XML-документе.
Если в этой карте есть элемент, определенный для URI пространства имен, имя поля будет иметь значение prefix:fieldName.
No Массив с шаблоном['URI1'->'prefix1','URI2'->'prefix2'] namespacePrefixes
Allow no files found (Разрешить ненайденные файлы) Когда задано значение true, ошибка не возникает, если файлы не найдены no true или false 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-файлов необходимо ссылаться на XSD/DTD внутри XML-файлов по относительному пути.
  • Обработка пространств имен:

    • Пространство имен можно отключить при использовании потока данных. В этом случае атрибуты, определяющие пространство имен, будут анализироваться так же, как обычные атрибуты.
    • При включенном пространстве имен имена элемента и атрибутов следуют шаблону namespaceUri,elementName и namespaceUri,@attributeName по умолчанию. Можно определить префикс пространства имен для каждого URI пространства имен в источнике. В этом случае имена элемента и атрибутов следуют шаблону definedPrefix:elementName или definedPrefix:@attributeName.
  • Столбец значений:

    • Если XML-элемент имеет как простое текстовое значение, так и атрибуты или дочерние элементы, то простое текстовое значение анализируется как значение столбца значений со встроенным именем поля _value_. Он также наследует пространство имен элемента, если применимо.