Partilhar via


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

O formato de texto delimitado é suportado para os seguintes conectores:

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

Property Descrição Obrigatório
tipo A propriedade type do conjunto de dados deve ser definida como DelimitedText. 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. Sim
columnDelimiter O(s) caractere(s) usado(s) para separar colunas em um arquivo.
O valor padrão é vírgula ,. Quando o delimitador de coluna é definido como cadeia vazia, o que significa que não há delimitador, toda a linha é tomada como uma única coluna.
Atualmente, o delimitador de coluna como cadeia de caracteres vazia é suportado apenas para mapear o fluxo de dados, mas não para a atividade de cópia.
Não
rowDelimiter Para a atividade Copiar, o caractere único ou "\r\n" usado para separar linhas em um arquivo. O valor padrão é qualquer um dos seguintes valores em leitura: ["\r\n", "\r", "\n"]; na gravação: "\r\n". "\r\n" só é suportado no comando copy.
Para o fluxo de dados de mapeamento, o único ou dois caracteres usados para separar linhas em um arquivo. O valor padrão é qualquer um dos seguintes valores em leitura: ["\r\n", "\r", "\n"]; na escrita: "\n".
Quando o delimitador de linha é definido como nenhum delimitador (cadeia de caracteres vazia), o delimitador de coluna também deve ser definido como nenhum 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 é suportado apenas para mapear o fluxo de dados, mas não para a atividade de cópia.
Não
quoteChar O caractere único para citar valores de coluna se contiver delimitador de coluna.
O valor padrão é aspas duplas".
Quando quoteChar é definido como cadeia de caracteres vazia, significa que não há nenhum char de aspas e o valor da coluna não está entre aspas e escapeChar é usado para escapar do delimitador de coluna e de si mesmo.
Não
escapeChar O caractere único para escapar de aspas dentro de um valor cotado.
O valor padrão é barra invertida \.
Quando escapeChar é definida como cadeia de caracteres vazia, a quoteChar deve ser definida como cadeia de caracteres vazia também, caso em que certifique-se de que todos os valores de coluna não contenham delimitadores.
Não
firstRowAsHeader Especifica se a primeira linha deve ser tratada/criada como uma 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 colunas 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 mapeamento de listas de fluxo de dados e localiza colunas com nome como Column_{n} (a partir de 1).
Não
nullValue Especifica a representação da cadeia de caracteres do valor nulo.
O valor padrão é 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 sem 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", "IBM5000" 0", "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".
Observação O fluxo de dados de mapeamento não suporta codificação UTF-7.
Observação O fluxo de dados de mapeamento não suporta codificação UTF-8 com marca de ordem de bytes (BOM).
Não
compressãoCodec O codec de compressão usado para ler / gravar arquivos de texto.
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/preserveCompressionFileNameAsFolder preserveZipFileNameAsFolderna 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 de compressão 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 de texto delimitado no Armazenamento de Blob 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 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 de texto delimitada e pelo coletor.

Texto delimitado como fonte

As propriedades a seguir são suportadas na seção copy activity *source* .

Property Descrição Obrigatório
tipo A propriedade type da fonte de atividade de cópia deve ser definida como DelimitedTextSource. Sim
formatConfigurações Um grupo de propriedades. Consulte a tabela de 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 suportadas em storeSettings. Não

Configurações de leitura de texto delimitado suportadas em formatSettings:

Property Descrição Obrigatório
tipo 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 as propriedades skipLineCount e firstRowAsHeader forem especificadas simultaneamente, as linhas são ignoradas primeiro e, em seguida, as informações de cabeçalho são lidas a partir do ficheiro de entrada.
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
"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 são suportadas na seção de atividade de cópia *sink* .

Property Descrição Obrigatório
tipo A propriedade type da fonte de atividade de cópia deve ser definida como DelimitedTextSink. Sim
formatConfigurações Um grupo de propriedades. Consulte a tabela de 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 suportadas em storeSettings. Não

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

Property Descrição Obrigatório
tipo 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 é especificado no conjunto de dados DelimitedText de saída. Quando o nome do arquivo é configurado no conjunto de dados de saída, ele será usado como o nome do arquivo coletor e a configuração de extensão de arquivo será ignorada. Sim quando o nome do arquivo não é especificado no conjunto de dados 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 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 do nome do arquivo será gerado automaticamente. Essa propriedade não se aplica quando a origem é armazenamento baseado em arquivo ou armazenamento de dados habilitado para opção de partição.
Não

Mapeando propriedades de fluxo de dados

No mapeamento de fluxos de dados, você pode ler e gravar no 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, e pode ler o formato de texto delimitado no Amazon S3.

Conjunto de dados embutido

O mapeamento de fluxos de dados suporta "conjuntos de dados embutidos" como uma opção para definir sua origem e 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 do melhor desempenho dos conjuntos de dados ADF compartilhados.

Quando você está lendo 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 de opções de esquema. Essa opção desativa a descoberta automática de esquema padrão do ADF e melhorará muito o desempenho da descoberta de arquivos. Antes de definir essa opção, certifique-se de importar a projeção para que o ADF tenha um esquema existente para projeção. Esta opção não funciona com desvio de esquema.

Propriedades de origem

A tabela abaixo lista as propriedades suportadas por uma fonte de texto delimitada. Você pode editar essas propriedades na guia Opções de origem .

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 arquivos 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
Linhas de várias linhas O arquivo de origem contém linhas que abrangem várias linhas. Os valores de várias linhas devem estar entre aspas. não true ou false multiLineRow
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
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
Máximo de colunas O valor padrão é 20480. Personalize esse valor quando o número da coluna for superior a 20480 não Número inteiro maxColunas

Nota

O suporte a fontes de fluxo de dados para lista de arquivos é limitado a 1024 entradas em seu arquivo. Para incluir mais ficheiros, utilize carateres universais na sua lista de ficheiros.

Exemplo de fonte

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

Fonte DelimitedText

O script de fluxo de dados associado é:

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

Nota

As fontes de fluxo de dados suportam um conjunto limitado de globbing Linux que é suportado pelos sistemas de arquivos Hadoop

Propriedades do lavatório

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

Nome Descrição Obrigatório Valores permitidos Propriedade do script de fluxo de dados
Limpar a pasta Se a pasta de destino for limpa antes da gravação não true ou false truncate
Opção de nome de 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: String
Por partição: String[]
Arquivo de nome como dados de coluna: String
Saída para um único arquivo: ['<fileName>']
Pasta de nome como dados de coluna: String
filePattern
partitionFileNames
rowUrlColumn
partitionFileNames
rowFolderUrlColumn
Citar tudo Colocar todos os valores entre aspas não true ou false citaçãoTodos
Cabeçalho Adicionar cabeçalhos de clientes a arquivos de saída não [<string array>] cabeçalho

Exemplo de lavatório

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

Coletor 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: