Formato de texto delimitado no Azure Data Factory e no Azure 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 quiser analisar os arquivos de texto delimitados ou gravar os dados em um formato de texto delimitado.

Há suporte para o formato de texto delimitado para os seguintes conectores:

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 de texto delimitado.

Propriedade Descrição Obrigatório
type A propriedade type do conjunto de dados deve ser definida como DelimitedText. 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. Sim
columnDelimiter O(s) caractere(s) usado(s) para separar as colunas em um arquivo.
O valor padrão é vírgula ,. Quando o delimitador de coluna é definido como cadeia de caracteres vazia, o que significa que não há delimitador, a linha inteira é tomada como uma única coluna.
Atualmente, o delimitador de colunas como cadeia de caracteres vazia tem suporte apenas para o fluxo de dados de mapeamento, e não para a atividade Copy.
Não
rowDelimiter Para a atividade Copy, o caractere individual ou "\r\n" usado para separar as linhas em um arquivo. O valor padrão é um dos seguintes valores na leitura: ["\r\n", "\r" e "\n"] e na gravação "\r\n". "\r\n" só tem suporte no comando de cópia.
Para o Fluxo de dados de mapeamento, o único ou duplo caractere usado para separar as linhas em um arquivo. O valor padrão é um dos seguintes valores na leitura: ["\r\n", "\r" e "\n"] e na gravação "\n".
Quando o delimitador de linha é definido como sem delimitador (cadeia de caracteres vazia), o delimitador de coluna também deve ser definido como sem delimitador (cadeia de caracteres vazia), o que significa tratar todo o conteúdo como um único valor.
Atualmente, o delimitador de linha como cadeia de caracteres vazia tem suporte apenas para o fluxo de dados de mapeamento e não para a atividade Copy.
Não
quoteChar O caractere individual para citar valores de coluna se ele contiver delimitador de coluna.
O valor padrão é aspas duplas".
Quando quoteChar é definido como cadeia de caracteres vazia, isso significa que não há nenhum caractere de aspas e o valor da coluna não está entre aspas e escapeChar é usado para o escape do delimitador de coluna e ele mesmo.
Não
escapeChar O caractere individual para o escape das aspas dentro de um valor entre aspas.
O valor padrão é barra invertida \ .
Quando escapeChar é definido como cadeia de caracteres vazia, o quoteChar também deve ser definido como cadeia de caracteres vazia; nesse caso, verifique se todos os valores de coluna não contêm delimitadores.
Não
firstRowAsHeader Especifica se deve tratar/transformar a primeira linha como linha de cabeçalho com nomes de colunas.
Os valores permitidos são true e false (padrão).
Quando a primeira linha como cabeçalho é falsa, observe que a visualização de dados da interface do usuário e a saída da atividade de pesquisa geram automaticamente nomes de coluna como Prop_{n} (a partir de 0), a atividade de cópia requer mapeamento explícito da origem para o coletor e localiza colunas por ordinal (a partir de 1) e o fluxo de dados de mapeamento lista e localiza colunas com o nome Column_{n} (a partir de 1).
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
encodingName O tipo de codificação usado para ler/gravar arquivos de teste.
Os valores permitidos são os seguintes: "UTF-8","UTF-8 without BOM", "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".
Observe que o fluxo de dados de mapeamento não dá suporte à codificação UTF-7.
Observe que o fluxo de dados de mapeamento não dá suporte para a codificação UTF-8 com a Marca de Ordem de Byte (BOM).
Não
compressionCodec O codec de compactação usado para ler/gravar arquivos de texto.
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
compressionLevel 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 dados de texto delimitado no Armazenamento de Blobs do Azure:

{
    "name": "DelimitedTextDataset",
    "properties": {
        "type": "DelimitedText",
        "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",
            },
            "columnDelimiter": ",",
            "quoteChar": "\"",
            "escapeChar": "\"",
            "firstRowAsHeader": true,
            "compressionCodec": "gzip"
        }
    }
}

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 fonte e coletor de texto delimitado.

Texto delimitado como fonte

As propriedades a seguir têm suporte na seção de *origem* da atividade de cópia.

Propriedade Descrição Obrigatório
type A propriedade Type da fonte da atividade de cópia deve ser definida como DelimitedTextSource. Sim
formatSettings Um grupo de propriedades. Consulte a tabela Configurações de leitura de texto delimitado 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. Não

Configurações de leitura de texto delimitado com suporte em formatSettings:

Propriedade Descrição Obrigatório
type O tipo de formatSettings deve ser definido como DelimitedTextReadSettings. Sim
skipLineCount Indica o número de linhas não vazias a serem ignoradas ao ler dados de arquivos de entrada.
Se skipLineCount e firstRowAsHeader forem especificados, primeiro as linhas serão ignoradas e, em seguida, as informações de cabeçalho serão lidas no arquivo de entrada.
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
"activities": [
    {
        "name": "CopyFromDelimitedText",
        "type": "Copy",
        "typeProperties": {
            "source": {
                "type": "DelimitedTextSource",
                "storeSettings": {
                    "type": "AzureBlobStorageReadSettings",
                    "recursive": true
                },
                "formatSettings": {
                    "type": "DelimitedTextReadSettings",
                    "skipLineCount": 3,
                    "compressionProperties": {
                        "type": "ZipDeflateReadSettings",
                        "preserveZipFileNameAsFolder": false
                    }
                }
            },
            ...
        }
        ...
    }
]

Texto delimitado como coletor

As propriedades a seguir têm suporte na seção do *coletor* da atividade de cópia.

Propriedade Descrição Obrigatório
type A propriedade Type da fonte da atividade de cópia deve ser definida como DelimitedTextSink. Sim
formatSettings Um grupo de propriedades. Consulte a tabela Configurações de gravação de texto delimitado abaixo. Não
storeSettings Um grupo de propriedades sobre como gravar dados em um armazenamento de dados. Cada conector baseado em arquivo tem suas próprias configurações de gravação com suporte em storeSettings. Não

Configurações de gravação de texto delimitado com suporte em formatSettings:

Propriedade Descrição Obrigatório
type O tipo de formatSettings deve ser definido como DelimitedTextWriteSettings. Sim
fileExtension A extensão de arquivo usada para nomear os arquivos de saída, por exemplo, .csv, .txt. Ele deve ser especificado quando o fileName não for especificado no conjunto de dados DelimitedText de saída. Quando o nome do arquivo for configurado no conjunto de dados de saída, ele será usado como o nome do arquivo do coletor e a configuração da extensão do arquivo será ignorada. Sim, quando o nome do arquivo não é especificado no conjunto de resultados de saída
maxRowsPerFile Ao gravar dados em uma pasta, você pode optar por gravar em vários arquivos e especificar o máximo de linhas por arquivo. Não
fileNamePrefix Aplicável quando maxRowsPerFile for configurado.
Especifique o prefixo do nome do arquivo ao gravar dados em vários arquivos, resultando neste padrão: <fileNamePrefix>_00000.<fileExtension>. Se não for especificado, o prefixo de nome de arquivo será gerado automaticamente. Essa propriedade não se aplica quando a fonte é um armazenamento baseado em arquivo ou armazenamento de dados habilitado para opção de partição.
Não

Mapeamento de propriedades de fluxo de dados

Nos fluxos de dados de mapeamento, você pode fazer leituras e gravações em formato de texto delimitado nos seguintes armazenamentos de dados: Armazenamento de Blobs do Azure, Azure Data Lake Storage Gen1, Azure Data Lake Storage Gen2 e SFTP. Além disso, você pode ler o formato de texto delimitado no Amazon S3.

Conjunto de dados embutido

Os fluxos de dados de mapeamento dão suporte a "conjuntos de dados embutidos" como uma opção para definir a origem e o coletor. Um conjunto de dados delimitado embutido é definido diretamente dentro de suas transformações de origem e coletor e não é compartilhado fora do fluxo de dados definido. Ele é útil para parametrizar as propriedades do conjunto de dados diretamente dentro do fluxo de dados e pode se beneficiar de um melhor desempenho em relação aos conjuntos de dados compartilhados do ADF.

Ao ler um grande número de pastas e arquivos de origem, você pode melhorar o desempenho da descoberta de arquivos de fluxo de dados definindo a opção "Esquema projetado pelo usuário" dentro da Projeção | Caixa de diálogo opções de esquema. Essa opção desativa a descoberta automática de esquema padrão do ADF e melhora muito o desempenho da descoberta de arquivos. Antes de definir essa opção, importe a projeção para que o ADF tenha um esquema existente para projeção. Essa opção não funciona com descompasso de esquema.

Propriedades da fonte

A tabela abaixo lista as propriedades com suporte de uma fonte de texto delimitado. Você pode editar essas propriedades na guia Opções de origem.

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
Linhas multilinha O arquivo de origem contém linhas que abrangem várias linhas. Os valores de multilinha devem estar entre aspas. não true ou false multiLineRow
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
Permitir nenhum arquivo encontrado Se for true, um erro não será gerado caso nenhum arquivo seja encontrado não true ou false ignoreNoFilesFound
Máximo de colunas O valor padrão é 20480. Personalizar esse valor quando o número da coluna for superior a 20480 não Integer maxColumns

Observação

O suporte a fontes de fluxo de dados para a lista de arquivos é limitado a 1024 entradas no arquivo. Para incluir mais arquivos, use curingas na lista de arquivos.

Exemplo de fonte

A imagem abaixo é um exemplo de uma configuração de fonte de texto delimitado nos fluxos de dados de mapeamento.

Fonte do DelimitedText

O script de fluxo de dados associado é:

source(
    allowSchemaDrift: true,
	validateSchema: false,
	ignoreNoFilesFound: false,
	multiLineRow: true,
	wildcardPaths:['*.csv']) ~> CSVSource

Observação

As fontes de fluxo de dados dão suporte a um conjunto limitado de recurso de curinga no Linux que é compatível com sistemas de arquivos do Hadoop

Propriedades do coletor

A tabela abaixo lista as propriedades com suporte de um coletor de texto delimitado. Você pode editar essas propriedades na guia Configurações.

Nome Descrição Obrigatório Valores permitidos Propriedade do script do Fluxo de Dados
Limpe a pasta Se a pasta de destino for limpa antes da gravação não true ou false truncate
Opção do nome do arquivo O formato de nomenclatura dos dados gravados. Por padrão, um arquivo por partição no formato part-#####-tid-<guid> não Padrão: cadeia de caracteres
Por partição: cadeia de caracteres []
Nomear arquivo como dados da coluna: Cadeia de caracteres
Saída para arquivo único: ['<fileName>']
Nomear pasta como dados da coluna: Cadeia de caracteres
filePattern
partitionFileNames
rowUrlColumn
partitionFileNames
rowFolderUrlColumn
Citar tudo Colocar todos os valores entre aspas não true ou false quoteAll
Cabeçalho Adicionar os cabeçalhos de cliente aos arquivos de saída não [<string array>] header

Exemplo de coletor

A imagem abaixo é um exemplo de uma configuração de coletor de texto delimitado nos fluxos de dados de mapeamento.

Coletor de DelimitedText

O script de fluxo de dados associado é:

CSVSource sink(allowSchemaDrift: true,
    validateSchema: false,
    truncate: true,
    skipDuplicateMapInputs: true,
    skipDuplicateMapOutputs: true) ~> CSVSink

Aqui estão alguns conectores e formatos comuns relacionados ao formato de texto delimitado: