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

APLICA-SE A: Azure Data Factory Azure Synapse Analytics

Dica

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

Siga este artigo quando desejar analisar os arquivos XML.

O formato XML é compatível com os seguintes conectores: Amazon S3, Armazenamento compatível com Amazon S3, Blob do Azure, Azure Data Lake Storage Gen1, Azure Data Lake Storage Gen2, Arquivos do Azure, Sistema de arquivos, FTP, Google Cloud Storage, HDFS, HTTP, Oracle Cloud Storage e SFTP. É compatível como origem, mas não como coletor.

Propriedades do conjunto de dados

Para obter uma lista completa das seções e propriedades disponíveis para definir os conjuntos de dados, confira o artigo sobre Conjuntos de Dados. Esta seção fornece uma lista das propriedades com suporte pelo conjunto de dados XML.

Propriedade Descrição Obrigatório
type A propriedade type do conjunto de dados deve ser definida como Xml. Sim
local Configurações de local dos arquivos. Cada conector baseado em arquivo tem seu próprio tipo de local e propriedades com suporte em location. Veja os detalhes na seção do artigo sobre o conector –> 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", "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".
Não
nullValue Especifica a representação de cadeia de caracteres do valor nulo.
O valor padrão pode ser uma cadeia de caracteres vazia.
Não
compactação Grupo de propriedades para configurar a compactação de arquivo. Configure esta seção quando desejar fazer compactação/descompactação durante a execução da atividade. Não
type
(em compression )
O codec de compactação usado para ler/gravar arquivos XML.
Os valores permitidos são bzip2, gzip, deflate, ZipDeflate, TarGzip, tar, snappyou lz4. O padrão é não compactado.
Observação a atividade Copy atualmente não dá suporte a "snappy" e "lz4" e o fluxo de dados de mapeamento não dá suporte a "ZipDeflate", "TarGzip" e "Tar".
Observação ao usar a atividade Copy para descompactar arquivos ZipDeflate/TarGzip/Tar e gravar no armazenamento de dados de 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 preserveZipFileNameAsFolder/preserveCompressionFileNameAsFolder na origem da atividade de cópia para controlar se deseja preservar o nome dos arquivos compactados como estrutura de pastas.
Não.
nível
(em compression )
A taxa de compactação.
Os valores permitidos são Ideal ou Mais rápida.
- Mais rápida: a operação de compactação deve ser concluída o mais rápido possível, mesmo se o arquivo resultante não for compactado da maneira ideal.
- Ideal: a operação de compactação deve ser concluída da maneira ideal, mesmo se a operação demorar mais tempo para ser concluída. Para saber mais, veja o tópico Nível de compactação .
Não

Veja abaixo um exemplo de conjunto de um 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 de cópia

Para obter uma lista completa das seções e propriedades disponíveis para definir atividades, confia o artigo Pipelines. Esta seção fornece uma lista das propriedades com suporte pela origem XML.

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

XML como origem

As propriedades a seguir têm suporte na seção de *origem* da atividade de cópia. Saiba mais sobre o comportamento do conector XML.

Propriedade Descrição Obrigatório
type A propriedade type da origem da atividade de cópia deve ser definida como XmllSource. Sim
formatSettings 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 com suporte em storeSettings. Veja os detalhes na seção do artigo sobre o conector –> Propriedades da atividade Copy. Não

Configurações de leitura XML com suporte em formatSettings:

Propriedade Descrição Obrigatório
type 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
namespaces Se é para habilitar o namespace 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 inteiro, duplo e booliano devem ser detectados. Os valores permitidos são: true (padrão), false. Não
compressionProperties 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 verdadeiro (padrão) , o serviço grava arquivos descompactados em <path specified in dataset>/<folder named as source zip file>/.
• Quando definido como falso, o serviço grava arquivos descompactados diretamente em <path specified in dataset>. Verifique se não há nomes de arquivo duplicados nos arquivos zip de origem diferentes para evitar a corrida ou comportamento inesperado.
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 zip de origem deve ser preservado como estrutura de pastas durante a cópia.
• Quando definido como verdadeiro (padrão) , o serviço grava arquivos descompactados em <path specified in dataset>/<folder named as source compressed file>/.
• Quando definido como falso, o serviço grava arquivos descompactados diretamente em <path specified in dataset>. Verifique se não há nomes de arquivo duplicados nos arquivos de origem diferentes para evitar a corrida ou comportamento inesperado.
Não

Mapeamento de propriedades de fluxo de dados

Nos fluxos de dados de mapeamento, é possível ler o formato XML nos seguintes armazenamentos de dados: Armazenamento de Blobs do Azure, Azure Data Lake Storage Gen1, Azure Data Lake Storage Gen2, Amazon S3 e SFTP. É possível apontar para arquivos XML usando o conjunto de programas XML ou um conjunto de linhas embutido.

Propriedades da Origem

A tabela abaixo lista as propriedades com suporte de uma origem XML. É possível editar essas propriedades na guia Opções de origem. Saiba mais sobre o comportamento do conector XML. Ao usar o conjunto de linhas embutido, será possível ver as configurações de arquivo adicionais, que são iguais às propriedades descritas na seção Propriedades do conjunto.

Nome Descrição Obrigatório Valores permitidos Propriedade do script do Fluxo de Dados
Caminhos curinga Todos os arquivos correspondentes ao caminho curinga serão processados. Substitui a pasta e o caminho do arquivo definido no conjunto de dados. Não String[] wildcardPaths
Caminho raiz da partição Para dados de arquivo particionados, é possível inserir um caminho raiz de partição para ler pastas particionadas como colunas Não String partitionRootPath
Lista de arquivos Se sua fonte estiver apontando para um arquivo de texto que lista os arquivos a serem processados Não true ou false fileList
Coluna para armazenar o nome do arquivo Criar uma nova coluna com o nome e o caminho do arquivo de origem Não String rowUrlColumn
Após a conclusão Exclua ou mova os arquivos após o processamento. O caminho do arquivo inicia a partir da raiz do contêiner Não Excluir: true ou false
Mover['<from>', '<to>']
purgeFiles
moveFiles
Filtrar pela última modificação Escolher filtrar arquivos com base na última alteração Não Carimbo de data/hora modifiedAfter
modifiedBefore
Modo de validação Especifica se o esquema XML deve ser validado. Não None (padrão, sem validação)
xsd (validar usando o XSD)
dtd (validar usando o DTD).
validationMode
Namespaces Se é para habilitar o namespace ao analisar os arquivos XML. Não true (padrão) ou false namespaces
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
Permitir nenhum arquivo encontrado Se for true, um erro não será gerado caso nenhum arquivo seja encontrado não true ou false ignoreNoFilesFound

Exemplo de script de origem XML

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

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:

    • É possível 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 por meio do caminho relativo.
  • Tratamento de namespace:

    • O namespace pode ser desabilitado ao usar o fluxo de dados. Neste caso, 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 namespaceUri,elementName e namespaceUri,@attributeName, por padrão. É possível definir o prefixo de namespace para cada URI de namespace na origem. Neste caso, os nomes do elemento e dos atributos seguem o padrão definedPrefix:elementName ou definedPrefix:@attributeName em vez disso.
  • Coluna de valor:

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