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:
- Amazon S3
- Armazenamento compatível com Amazon S3
- Azure Blob
- Armazenamento do Azure Data Lake Ger1
- Azure Data Lake Storage Gen2 (Armazenamento do Azure Data Lake Gen2)
- Ficheiros do Azure
- Sistema de Ficheiros
- FTP
- Google Cloud Storage
- HDFS
- HTTP
- Armazenamento em nuvem Oracle
- SFTP
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 preserveZipFileNameAsFolder na 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 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 |
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.
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.
O script de fluxo de dados associado é:
CSVSource sink(allowSchemaDrift: true,
validateSchema: false,
truncate: true,
skipDuplicateMapInputs: true,
skipDuplicateMapOutputs: true) ~> CSVSink
Conectores e formatos relacionados
Aqui estão alguns conectores e formatos comuns relacionados ao formato de texto delimitado:
- Armazenamento de Blobs do Azure
- Formato binário
- Dataverse
- Formato delta
- Formato Excel
- Sistema de Ficheiros
- FTP
- HTTP
- Formato JSON
- Formato Parquet