Formato testo delimitato in Azure Data Factory

SI APPLICA A: Azure Data Factory Azure Synapse Analytics

Seguire questo articolo quando si vogliono analizzare i file di testo delimitati o scrivere i dati in formato testo delimitato.

Il formato testo delimitato è supportato per i connettori seguenti: Amazon S3, Amazon S3 Compatible Archiviazione,BLOB di Azure, Azure Data Lake Archiviazione Gen1, Azure Data Lake Archiviazione Gen2,File Archiviazione Di Azure, File System, FTP, Google Cloud Archiviazione, HDFS, HTTP, Oracle Cloud Archiviazione e SFTP.

Proprietà del set di dati

Per un elenco completo delle sezioni e delle proprietà disponibili per la definizione dei set di dati, vedere l'articolo Set di dati. In questa sezione viene fornito un elenco delle proprietà supportate dal set di dati di testo delimitato.

Proprietà Descrizione Obbligatoria
type La proprietà type del set di dati deve essere impostata su DelimitedText.
posizione Impostazioni del percorso dei file. Ogni connettore basato su file ha il proprio tipo di percorso e le proprietà supportate in location .
columnDelimiter Caratteri utilizzati per separare le colonne in un file.
Il valore predefinito è virgola. , Quando il delimitatore di colonna è definito come stringa vuota, ovvero nessun delimitatore, l'intera riga viene presa come una singola colonna.
Attualmente, il delimitatore di colonna come stringa vuota o multi char è supportato solo per il mapping del flusso di dati, ma non per attività Copy.
No
rowDelimiter Singolo carattere o "\r\n" usato per separare le righe in un file.
Il valore predefinito è uno dei valori seguenti in lettura: ["\r\n", "\r", "\n"] e "\n" o "\r\n" in scrittura, rispettivamente tramite mapping del flusso di dati e attività Copy.
Quando il delimitatore di riga è impostato su nessun delimitatore (stringa vuota), il delimitatore di colonna deve essere impostato anche come nessun delimitatore (stringa vuota), il che significa considerare l'intero contenuto come un singolo valore.
Attualmente, il delimitatore di riga come stringa vuota è supportato solo per il mapping del flusso di dati, ma non attività Copy.
No
quoteChar Carattere singolo da virgolette per i valori della colonna se contiene il delimitatore di colonna.
Il valore predefinito è tra virgolette doppie. "
Se è definito come stringa vuota, significa che non sono presenti virgolette e il valore della colonna non è racchiuso tra virgolette e viene usato per eseguire l'escape del delimitatore di colonna quoteChar escapeChar e di se stesso.
No
escapeChar Singolo carattere di cui eseguire l'escape tra virgolette all'interno di un valore tra virgolette.
Il valore predefinito è barra rovesciata. \
Quando è definito come stringa vuota, deve essere impostato anche come stringa vuota, nel qual caso assicurarsi che tutti i valori di colonna escapeChar quoteChar non contengano delimitatori.
No
firstRowAsHeader Specifica se considerare o rendere la prima riga come riga di intestazione con i nomi delle colonne.
I valori consentiti sono true e false (impostazione predefinita).
Quando la prima riga come intestazione è false, si noti che l'anteprima dei dati dell'interfaccia utente e l'output dell'attività di ricerca generano automaticamente nomi di colonna come Prop_{n} (a partire da 0), l'attività di copia richiede il mapping esplicito dall'origine al sink e individua le colonne in base al numero ordinale (a partire da 1) e il mapping degli elenchi di flussi di dati e l'individuazione di colonne con nome Column_{n} (a partire da 1).
No
nullValue Specifica la rappresentazione di stringa del valore Null.
Il valore predefinito è una stringa vuota.
No
encodingName Tipo di codifica utilizzato per leggere/scrivere file di test.
I valori consentiti sono i seguenti: "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", "IS O-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-1252", "WINDOWS-1250" 1253", "WINDOWS-1254", "WINDOWS-1255", "WINDOWS-1256", "WINDOWS-1257", "WINDOWS-1258".
Nota Il flusso di dati di mapping non supporta la codifica UTF-7.
No
compressionCodec Codec di compressione usato per leggere/scrivere file di testo.
I valori consentiti sono bzip2, gzip, deflate, ZipDeflate, TarGzip, Tar, snappy o lz4. Il valore predefinito non è compresso.
Si noti attività Copy attualmente non supporta "snappy" & "lz4" e il flusso di dati di mapping non supporta "ZipDeflate", "TarGzip" e "Tar".
Si noti quando si usa l'attività di copia per decomprimere i file TarGzip ZipDeflate e scrivere nell'archivio dati sink basato su file, per impostazione predefinita i file vengono estratti nella cartella : , usare nell'origine dell'attività di copia per controllare se mantenere il nome dei file compressi come struttura / / <path specified in dataset>/<folder named as source compressed file>/ di preserveZipFileNameAsFolder / preserveCompressionFileNameAsFolder cartelle.
No
Compressionlevel Rapporto di compressione.
I valori consentiti sono Optimal o Fastest.
- Più veloce: L'operazione di compressione deve essere completata il più rapidamente possibile, anche se il file risultante non è compresso in modo ottimale.
- Ottimale: l'operazione di compressione deve essere compressa in modo ottimale, anche se il completamento dell'operazione richiede più tempo. Per maggiori informazioni, vedere l'argomento relativo al livello di compressione .
No

Di seguito è riportato un esempio di set di dati di testo delimitato in Blob di Azure Archiviazione:

{
    "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"
        }
    }
}

Proprietà dell'attività di copia

Per un elenco completo delle sezioni e delle proprietà disponibili per la definizione delle attività, vedere l'articolo sulle pipeline. In questa sezione viene fornito un elenco delle proprietà supportate dall'origine di testo delimitato e dal sink.

Testo delimitato come origine

Le proprietà seguenti sono supportate nella sezione origine dell'attività * di * copia.

Proprietà Descrizione Obbligatoria
type La proprietà type dell'origine dell'attività di copia deve essere impostata su DelimitedTextSource.
formatSettings Gruppo di proprietà. Fare riferimento alla tabella delle impostazioni di lettura del testo delimitato riportata di seguito. No
storeSettings Gruppo di proprietà su come leggere i dati da un archivio dati. Ogni connettore basato su file ha le proprie impostazioni di lettura supportate in storeSettings . No

Impostazioni di lettura di testo delimitato supportate in formatSettings :

Proprietà Descrizione Obbligatoria
type Il tipo di formatSettings deve essere impostato su DelimitedTextReadSettings.
skipLineCount Indica il numero di righe non vuote da ignorare durante la lettura di dati da file di input.
Se vengono specificati sia skipLineCount che firstRowAsHeader, le righe vengono ignorate e quindi le informazioni dell'intestazione vengono lette dal file di input.
No
compressionProperties Gruppo di proprietà su come decomprimere i dati per un determinato codec di compressione. No
preserveZipFileNameAsFolder
(in compressionProperties -> type come ZipDeflateReadSettings)
Si applica quando il set di dati di input è configurato con compressione ZipDeflate. Indica se mantenere il nome del file ZIP di origine come struttura di cartelle durante la copia.
- Se impostato su true (impostazione predefinita), Data Factory scrive i file decompressi in <path specified in dataset>/<folder named as source zip file>/ .
- Se impostato su false, Data Factory scrive i file decompressi direttamente in <path specified in dataset> . Assicurarsi di non avere nomi di file duplicati in file ZIP di origine diversi per evitare corse o comportamenti imprevisti.
No
preserveCompressionFileNameAsFolder
(in compressionProperties -> type come TarGZipReadSettings o TarReadSettings)
Si applica quando il set di dati di input è configurato con la compressione TarGzip. / Indica se mantenere il nome del file compresso di origine come struttura di cartelle durante la copia.
- Se impostato su true (impostazione predefinita), Data Factory scrive i file decompressi in <path specified in dataset>/<folder named as source compressed file>/ .
- Se impostato su false, Data Factory scrive i file decompressi direttamente in <path specified in dataset> . Assicurarsi di non avere nomi di file duplicati in file di origine diversi per evitare corse o comportamenti imprevisti.
No
"activities": [
    {
        "name": "CopyFromDelimitedText",
        "type": "Copy",
        "typeProperties": {
            "source": {
                "type": "DelimitedTextSource",
                "storeSettings": {
                    "type": "AzureBlobStorageReadSettings",
                    "recursive": true
                },
                "formatSettings": {
                    "type": "DelimitedTextReadSettings",
                    "skipLineCount": 3,
                    "compressionProperties": {
                        "type": "ZipDeflateReadSettings",
                        "preserveZipFileNameAsFolder": false
                    }
                }
            },
            ...
        }
        ...
    }
]

Testo delimitato come sink

Le proprietà seguenti sono supportate nella sezione sink dell'attività * di * copia.

Proprietà Descrizione Obbligatoria
type La proprietà type dell'origine dell'attività di copia deve essere impostata su DelimitedTextSink.
formatSettings Gruppo di proprietà. Fare riferimento alla tabella delle impostazioni di scrittura testo delimitato riportata di seguito. No
storeSettings Gruppo di proprietà su come scrivere dati in un archivio dati. Ogni connettore basato su file ha le proprie impostazioni di scrittura supportate in storeSettings . No

Impostazioni di scrittura testo delimitato supportate in formatSettings :

Proprietà Descrizione Obbligatoria
type Il tipo di formatSettings deve essere impostato su DelimitedTextWriteSettings.
Fileextension Estensione di file utilizzata per assegnare un nome ai file di output, ad esempio .csv , .txt . Deve essere specificato quando l'oggetto non è specificato nel set di dati fileName DelimitedText di output. Quando il nome file viene configurato nel set di dati di output, verrà usato come nome del file sink e l'impostazione dell'estensione di file verrà ignorata. Sì quando il nome file non è specificato nel set di dati di output
maxRowsPerFile Quando si scrivono dati in una cartella, è possibile scegliere di scrivere in più file e specificare il numero massimo di righe per ogni file. No
fileNamePrefix Applicabile quando maxRowsPerFile è configurato.
Specificare il prefisso del nome file quando si scrivono dati in più file, con il risultato di questo modello: <fileNamePrefix>_00000.<fileExtension> . Se non specificato, il prefisso del nome file verrà generato automaticamente. Questa proprietà non si applica quando l'origine è un archivio basato su file o un archivio dati abilitato per le opzioni di partizione.
No

Proprietà del flusso di dati per mapping

Nei flussi di dati di mapping è possibile leggere e scrivere in formato testo delimitato negli archivi dati seguenti: Blob di Azure Archiviazione, Azure Data Lake Archiviazione Gen1e Azure Data Lake Archiviazione Gen2.

Proprietà di origine

Nella tabella seguente sono elencate le proprietà supportate da un'origine di testo delimitata. È possibile modificare queste proprietà nella scheda Opzioni di origine.

Nome Descrizione Obbligatoria Valori consentiti Proprietà dello script del flusso di dati
Percorsi con caratteri jolly Verranno elaborati tutti i file che corrispondono al percorso con caratteri jolly. Esegue l'override della cartella e del percorso del file impostati nel set di dati. No String[] wildcardPaths
Partition Root Path (Percorso radice partizione) Per i dati di file partizionati, è possibile immettere un percorso radice della partizione per leggere le cartelle partizionate come colonne No Stringa partitionRootPath
Elenco di file Indica se l'origine punta a un file di testo che elenca i file da elaborare No true o false Filelist
Righe su più righe Il file di origine contiene righe che si estendono su più righe. I valori su più righe devono essere racchiusi tra virgolette. no true o false multiLineRow
Colonna in cui archiviare il nome file Creare una nuova colonna con il nome e il percorso del file di origine No Stringa rowUrlColumn
Dopo il completamento Eliminare o spostare i file dopo l'elaborazione. Il percorso del file inizia dalla radice del contenitore No Elimina: true o false
Sposta: ['<from>', '<to>']
purgeFiles
moveFiles
Filtra in base all'ultima modifica Scegliere di filtrare i file in base all'ultima modifica No Timestamp modifiedAfter
modifiedBefore
Non consentire l'assenza di file trovati Se true, non viene generato un errore se non viene trovato alcun file No true o false ignoreNoFilesFound

Nota

Il supporto delle origini del flusso di dati per l'elenco di file è limitato a 1024 voci nel file. Per includere più file, usare caratteri jolly nell'elenco di file.

Esempio di origine

L'immagine seguente è un esempio di configurazione di origine testo delimitato nei flussi di dati di mapping.

Origine DelimitedText

Lo script del flusso di dati associato è:

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

Nota

Le origini del flusso di dati supportano un set limitato di GLOB linux supportati dai file system Hadoop

Proprietà sink

La tabella seguente elenca le proprietà supportate da un sink di testo delimitato. È possibile modificare queste proprietà nella scheda Impostazioni proprietà.

Nome Descrizione Obbligatoria Valori consentiti Proprietà script del flusso di dati
Cancellare la cartella Se la cartella di destinazione viene cancellata prima della scrittura No true o false truncate
Opzione nome file Formato di denominazione dei dati scritti. Per impostazione predefinita, un file per partizione nel formato part-#####-tid-<guid> No Pattern: String
Per partizione: String[]
Assegnare un nome al file come dati di colonna: String
Output in un singolo file: ['<fileName>']
Assegnare un nome alla cartella come dati della colonna: String
filePattern
partitionFileNames
rowUrlColumn
partitionFileNames
rowFolderUrlColumn
Quote all Racchiudere tutti i valori tra virgolette No true o false quoteAll
Intestazione Aggiungere intestazioni dei clienti ai file di output No [<string array>] header

Esempio di sink

L'immagine seguente è un esempio di configurazione di sink di testo delimitato nei flussi di dati di mapping.

Sink DelimitedText

Lo script del flusso di dati associato è:

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

Passaggi successivi