Formato XML nos pipelines do Azure Data Factory e do Synapse Analytics

APLICA-SE A: Azure Data Factory Azure Synapse Analytics

Gorjeta

Experimente o Data Factory no Microsoft Fabric, uma solução de análise tudo-em-um para empresas. O Microsoft Fabric abrange tudo, desde a movimentação de dados até ciência de dados, análises em tempo real, business intelligence e relatórios. Saiba como iniciar uma nova avaliação gratuitamente!

Siga este artigo quando quiser analisar os arquivos XML.

O formato XML é compatível com os seguintes conectores: Amazon S3, Amazon S3 Compatible Storage, Azure Blob, Azure Data Lake Storage Gen1, Azure Data Lake Storage Gen2, Azure Files, File System, FTP, Google Cloud Storage, HDFS, HTTP, Oracle Cloud Storage e SFTP. Ele é suportado como fonte, mas não coletor.

Propriedades do conjunto de dados

Para obter uma lista completa de seções e propriedades disponíveis para definir conjuntos de dados, consulte o artigo Conjuntos de dados. Esta seção fornece uma lista de propriedades suportadas pelo conjunto de dados XML.

Property Descrição Obrigatório
tipo A propriedade type do conjunto de dados deve ser definida como Xml. Sim
localização Configurações de localização do(s) arquivo(s). Cada conector baseado em arquivo tem seu próprio tipo de local e propriedades suportadas em location. Consulte os detalhes no artigo do conector -> seção Propriedades do conjunto de dados. Sim
encodingName O tipo de codificação usado para ler/gravar arquivos de teste.
Os valores permitidos são os seguintes: "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", "IBMibm 737", "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".
Não
nullValue Especifica a representação da cadeia de caracteres do valor nulo.
O valor padrão é cadeia de caracteres vazia.
Não
compressão Grupo de propriedades para configurar a compactação de arquivos. Configure esta seção quando quiser fazer compressão/descompactação durante a execução da atividade. Não
tipo
(em compression)
O codec de compressão usado para ler/gravar arquivos XML.
Os valores permitidos são bzip2, gzip, deflate, ZipDeflate, TarGzip, Tar, snappy ou lz4. O padrão não é compactado.
Observação atualmente A atividade de cópia não suporta "snappy" & "lz4", e o fluxo de dados de mapeamento não suporta "ZipDeflate", "TarGzip" e "Tar".
Observe que, ao usar a atividade de cópia para descompactar o(s) arquivo(s) TarGzip/Tar do ZipDeflate/e gravar no armazenamento de dados do coletor baseado em arquivo, por padrão, os arquivos são extraídos para a pasta:<path specified in dataset>/<folder named as source compressed file>/, use/preserveCompressionFileNameAsFolderpreserveZipFileNameAsFolderna fonte de atividade de cópia para controlar se o nome do(s) arquivo(s) compactado(s) deve ser preservado como estrutura de pasta.
Não
nível
(em compression)
A taxa de compressão.
Os valores permitidos são Ótimo ou Mais Rápido.
- Mais rápido: A operação de compressão deve ser concluída o mais rápido possível, mesmo que o arquivo resultante não seja compactado de forma ideal.
- Ideal: A operação de compressão deve ser compactada de forma ideal, mesmo que a operação demore mais tempo para ser concluída. Para obter mais informações, consulte o tópico Nível de compactação.
Não

Abaixo está um exemplo de conjunto de dados XML no Armazenamento de Blobs do 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"
            }
        }
    }
}

Propriedades da atividade Copy

Para obter uma lista completa de seções e propriedades disponíveis para definir atividades, consulte o artigo Pipelines . Esta seção fornece uma lista de propriedades suportadas pela fonte XML.

Saiba mais sobre como mapear dados XML e colecionar armazenamento/formato de dados a partir do mapeamento de esquema. Ao visualizar arquivos XML, os dados são mostrados com a hierarquia JSON e você usa o caminho JSON para apontar para os campos.

XML como fonte

As propriedades a seguir são suportadas na seção copy activity *source* . Saiba mais sobre o comportamento do conector XML.

Property Descrição Obrigatório
tipo A propriedade type da fonte de atividade de cópia deve ser definida como XmlSource. Sim
formatConfigurações Um grupo de propriedades. Consulte a tabela de configurações de leitura XML abaixo. Não
storeSettings Um grupo de propriedades sobre como ler dados de um armazenamento de dados. Cada conector baseado em arquivo tem suas próprias configurações de leitura suportadas em storeSettings. Veja os detalhes no artigo do conector -> Seção Copiar propriedades da atividade. Não

Configurações de leitura XML suportadas em formatSettings:

Property Descrição Obrigatório
tipo O tipo de formatSettings deve ser definido como XmlReadSettings. Sim
validationMode Especifica se o esquema XML deve ser validado.
Os valores permitidos são nenhum (padrão, sem validação), xsd (validar usando XSD), dtd (validar usando DTD).
Não
espaços para nomes Se o namespace deve ser habilitado ao analisar os arquivos XML. Os valores permitidos são: true (padrão), false. Não
namespacePrefixes URI de namespace para mapeamento de prefixo, que é usado para nomear campos ao analisar o arquivo xml.
Se um arquivo XML tiver namespace e o namespace estiver habilitado, por padrão, o nome do campo será o mesmo que no documento XML.
Se houver um item definido para o URI do namespace neste mapa, o nome do campo será prefix:fieldName.
Não
detectDataType Se os tipos de dados inteiros, duplos e booleanos devem ser detetados. Os valores permitidos são: true (padrão), false. Não
compressionPropriedades Um grupo de propriedades sobre como descompactar dados para um determinado codec de compactação. Não
preserveZipFileNameAsFolder
(em compressionProperties->type como ZipDeflateReadSettings)
Aplica-se quando o conjunto de dados de entrada é configurado com compactação ZipDeflate . Indica se o nome do arquivo zip de origem deve ser preservado como estrutura de pastas durante a cópia.
- Quando definido como true (padrão), o serviço grava arquivos descompactados em <path specified in dataset>/<folder named as source zip file>/.
- Quando definido como false, o serviço grava arquivos descompactados diretamente no <path specified in dataset>. Certifique-se de que não tem nomes de ficheiros duplicados em ficheiros zip de origem diferentes para evitar corridas ou comportamentos inesperados.
Não
preserveCompressionFileNameAsFolder
(em compressionProperties->type como TarGZipReadSettings ou TarReadSettings)
Aplica-se quando o conjunto de dados de entrada é configurado com compactação TarGzip/Tar. Indica se o nome do arquivo compactado de origem deve ser preservado como estrutura de pasta durante a cópia.
- Quando definido como true (padrão), o serviço grava arquivos descompactados em <path specified in dataset>/<folder named as source compressed file>/.
- Quando definido como false, o serviço grava arquivos descompactados diretamente no <path specified in dataset>. Certifique-se de que não tem nomes de ficheiro duplicados em ficheiros de origem diferentes para evitar corridas ou comportamentos inesperados.
Não

Mapeando propriedades de fluxo de dados

No mapeamento de fluxos de dados, você pode ler o formato XML nos seguintes armazenamentos de dados: Azure Blob Storage, Azure Data Lake Storage Gen1, Azure Data Lake Storage Gen2, Amazon S3 e SFTP. Você pode apontar para arquivos XML usando um conjunto de dados XML ou um conjunto de dados embutido.

Propriedades de origem

A tabela abaixo lista as propriedades suportadas por uma fonte XML. Você pode editar essas propriedades na guia Opções de origem. Saiba mais sobre o comportamento do conector XML. Ao usar o conjunto de dados embutido, você verá configurações de arquivo adicionais, que são as mesmas que as propriedades descritas na seção de propriedades do conjunto de dados.

Nome Descrição Obrigatório Valores permitidos Propriedade do script de fluxo de dados
Caminhos curinga Todos os arquivos correspondentes ao caminho curinga serão processados. Substitui a pasta e o caminho do arquivo definidos no conjunto de dados. Não String[] wildcardCaminhos
Caminho da raiz da partição Para dados de arquivo particionados, você pode inserir um caminho raiz de partição para ler pastas particionadas como colunas Não String partitionRootPath
Lista de ficheiros Se sua fonte está apontando para um arquivo de texto que lista os arquivos a serem processados Não true ou false Lista de arquivos
Coluna para armazenar o nome do arquivo Criar uma nova coluna com o nome do arquivo de origem e o caminho Não String rowUrlColumn
Após a conclusão Exclua ou mova os arquivos após o processamento. O caminho do arquivo começa a partir da raiz do contêiner Não Eliminar: true ou false
Movimentar-se: ['<from>', '<to>']
purgeFiles
moveFiles
Filtrar por última modificação Opte por filtrar ficheiros com base na data em que foram alterados pela última vez Não Carimbo de Data/Hora modificadoApós
modificadoAntes
Modo de validação Especifica se o esquema XML deve ser validado. Não None (padrão, sem validação)
xsd (validar usando XSD)
dtd (validar usando DTD).
validationMode
Espaços de Nomes Se o namespace deve ser habilitado ao analisar os arquivos XML. Não true (por defeito) ou false espaços para nomes
Pares de prefixo de namespace URI de namespace para mapeamento de prefixo, que é usado para nomear campos ao analisar o arquivo xml.
Se um arquivo XML tiver namespace e o namespace estiver habilitado, por padrão, o nome do campo será o mesmo que no documento XML.
Se houver um item definido para o URI do namespace neste mapa, o nome do campo será prefix:fieldName.
Não Matriz com padrão['URI1'->'prefix1','URI2'->'prefix2'] namespacePrefixes
Não permitir que nenhum arquivo seja encontrado Se verdadeiro, um erro não é lançado se nenhum arquivo for encontrado não true ou false ignoreNoFilesFound

Exemplo de script de código-fonte XML

O script abaixo é um exemplo de uma configuração de origem XML no mapeamento de fluxos de dados usando o modo de conjunto de dados.

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

O script abaixo é um exemplo de uma configuração de origem XML usando o modo de conjunto de dados embutido.

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

Comportamento do conector XML

Observe o seguinte ao usar XML como fonte.

  • Atributos XML:

    • Os atributos de um elemento são analisados como os subcampos do elemento na hierarquia.
    • O nome do campo de atributo segue o padrão @attributeName.
  • Validação do esquema XML:

    • Você pode optar por não validar o esquema ou validar o esquema usando XSD ou DTD.
    • Ao usar XSD ou DTD para validar arquivos XML, o XSD/DTD deve ser referenciado dentro dos arquivos XML através do caminho relativo.
  • Tratamento de namespace:

    • O namespace pode ser desabilitado ao usar o fluxo de dados, caso em que os atributos que definem o namespace serão analisados como atributos normais.
    • Quando o namespace está habilitado, os nomes do elemento e dos atributos seguem o padrão e namespaceUri,@attributeName por padrãonamespaceUri,elementName. Você pode definir o prefixo do namespace para cada URI do namespace na origem, caso em que os nomes do elemento e dos atributos seguem o padrão definedPrefix:elementName ou definedPrefix:@attributeName , em vez disso.
  • Coluna Valor:

    • Se um elemento XML tiver um valor de texto simples e elementos atributos/filho, o valor de texto simples será analisado como o valor de uma "coluna de valor" com nome _value_de campo interno. E ele herda o namespace do elemento também, se aplicável.