Formato testo delimitato in Azure Data Factory e Azure Synapse Analytics

SI APPLICA A: Azure Data Factory Azure Synapse Analytics

Suggerimento

Provare Data Factory in Microsoft Fabric, una soluzione di analisi all-in-one per le aziende. Microsoft Fabric copre tutto, dallo spostamento dati al data science, all'analisi in tempo reale, alla business intelligence e alla creazione di report. Vedere le informazioni su come iniziare una nuova prova gratuita!

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

Il formato testo delimitato è supportato per i connettori seguenti:

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 Richiesto
type La proprietà Tipo del set di dati deve essere impostata su DelimitedText.
location Impostazioni di posizione dei file. Ogni connettore basato su file ha il proprio tipo di percorso e le proprietà supportate in location.
columnDelimiter I caratteri usati per separare le colonne in un file.
Il valore predefinito è la virgola,. Quando il delimitatore di colonna è definito come stringa vuota, ovvero nessun delimitatore, l'intera riga viene considerata come una singola colonna.
Attualmente, il delimitatore di colonna come stringa vuota è supportato solo per il flusso di dati di mapping, ma non per l'attività Copy.
No
rowDelimiter Per l'attività Copy, il carattere singolo o "\r\n" usato per separare le righe in un file. Sono consentiti i seguenti valori in lettura: ["\r\n", "\r", "\n"]; "\r\n" in scrittura. "\r\n" è supportato solo nel comando di copia.
Per Flusso di dati di mapping, i caratteri singoli o due usati per separare le righe in un file. Sono consentiti i seguenti valori in lettura: ["\r\n", "\r", "\n"]; "\n" in scrittura.
Quando il delimitatore di riga è impostato su nessun delimitatore (stringa vuota), anche il delimitatore di colonna deve essere impostato come nessun delimitatore (stringa vuota), il che significa trattare l'intero contenuto come un singolo valore.
Attualmente, il delimitatore di riga come stringa vuota è supportato solo per il flusso di dati di mapping, ma non per l'attività Copy.
No
quoteChar Carattere singolo da racchiudere i valori di colonna tra virgolette se contiene il delimitatore di colonna.
Il valore predefinito è doppie virgolette".
Quando quoteChar viene definita come stringa vuota, significa che non vi sono char virgolette e il valore della colonna non è racchiuso tra virgolette e escapeChar viene usato per eseguire l'escape del delimitatore di colonna e stesso.
No
escapeChar Carattere singolo per saltare le virgolette all'interno di un valore tra virgolette.
Il valore predefinito è barra rovesciata \.
Quando escapeChar è definito come stringa vuota, quoteChar deve essere impostato anche come stringa vuota, nel qual caso assicurarsi che tutti i valori di colonna non contengano delimitatori.
No
firstRowAsHeader Specifica se trattare o impostare la prima riga come riga di intestazione con nomi di colonne.
I valori consentiti sono True e False (predefinito).
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à Copy richiede il mapping esplicito dall'origine al sink e individua le colonne in base all’ordinale (a partire da 1) e gli elenchi dei flussi di dati per mapping e individua le colonne dal nome Colonna_{n} (a partire da 1).
No
nullValue Specifica la rappresentazione di stringa del valore Null.
Il valore predefinito è stringa vuota.
No
encodingName Tipo di codifica usato per leggere/scrivere file di test.
I valori consentiti sono i seguenti: "UTF-8","UTF-8 senza 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".
Si noti che il flusso di dati per mapping non supporta la codifica UTF-7.
Si noti che il flusso di dati per mapping non supporta la codifica UTF-8 con byte Order Mark (BOM).
No
compressionCodec Codec di compressione usato per leggere/scrivere file di testo.
I valori consentiti sono bzip2, gzip, deflate, ZipDeflate, TarGzip, Tar, snappyo lz4. Il valore predefinito non è compresso.
Nota attualmente l'attività Copy non supporta "snappy" & "lz4" e il flusso di dati di mapping non supporta "ZipDeflate", "TarGzip" e "Tar".
Nota quando si usa l'attività Copy per decomprimere i file ZipDeflate/TarGzip/Tar e scrivere nell'archivio dati sink basato su file, per impostazione predefinita i file vengono estratti nella cartella:<path specified in dataset>/<folder named as source compressed file>/, usare preserveZipFileNameAsFolder/preserveCompressionFileNameAsFolder su origine attività Copy per controllare se mantenere il nome dei file compressi come struttura di cartelle.
No
compressionLevel Rapporto di compressione.
I valori consentiti sono ottimale o più veloce.
- Fastest: l'operazione di compressione deve essere completata il più rapidamente possibile, anche se il file risultante non viene compresso in modo ottimale.
- Optimal: l'operazione di compressione deve comprimere il file in modo ottimale, anche se il completamento 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 Archiviazione BLOB di 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"
        }
    }
}

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 di proprietà supportate dall'origine e dal sink di testo delimitati.

Testo delimitato come origine

Nella sezione *source* dell'attività Copy sono supportate le proprietà seguenti.

Proprietà Descrizione Richiesto
type La proprietà Tipo dell'origine dell'attività Copy deve essere impostata su DelimitedTextSource.
formatSettings Gruppo di proprietà. Fare riferimento alla tabella Impostazioni di lettura testo delimitato di seguito. No
storeSettings Gruppo di proprietà su come leggere i dati da un archivio dati. Ogni connettore basato su file dispone di impostazioni di lettura proprie supportate in storeSettings. No

Impostazioni di lettura testo delimitato supportate in formatSettings:

Proprietà Descrizione Richiesto
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), il servizio scrive i file decompressi in <path specified in dataset>/<folder named as source zip file>/.
- Se impostato su false, il servizio 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 compressione TarGzip/Tar. Indica se mantenere il nome del file compresso di origine come struttura delle cartelle durante la copia.
- Se impostato su true (impostazione predefinita), il servizio scrive i file decompressi in <path specified in dataset>/<folder named as source compressed file>/.
- Se impostato su false, il servizio 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

Nella sezione *sink* dell'attività Copy sono supportate le proprietà seguenti.

Proprietà Descrizione Richiesto
type La proprietà Tipo dell'origine dell'attività Copy deve essere impostata su DynamicsAXSource.
formatSettings Gruppo di proprietà. Fare riferimento alla tabella Impostazioni di scrittura testo delimitato di seguito. No
storeSettings Gruppo di proprietà su come scrivere i dati in un archivio dati. Ogni connettore basato su file dispone di impostazioni di scrittura supportate in storeSettings. No

Impostazioni di scrittura testo delimitato supportate in formatSettings:

Proprietà Descrizione Richiesto
type Il tipo di formatSettings deve essere impostato su DelimitedTextWriteSettings.
fileExtension Estensione di file usata per denominare i file di output, ad esempio, .csv .txt. Deve essere specificato quando fileName non è specificato nel set di dati DelimitedText di output. Quando il nome file è configurato nel set di dati di output, verrà usato come nome file sink e l'impostazione dell'estensione 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 file. No
fileNamePrefix Applicabile quando maxRowsPerFile è configurato.
Specificare il prefisso del nome file durante la scrittura di dati in più file ha dato luogo a questo motivo: <fileNamePrefix>_00000.<fileExtension>. Se non specificato, il prefisso del nome file verrà generato automaticamente. Questa proprietà non si applica quando l'origine è l'archivio basato su file o archivio dati abilitato per l'opzione di partizione.
No

Proprietà del flusso di dati per mapping

In flussi di dati di mapping è possibile leggere e scrivere in formato testo delimitato negli archivi dati seguenti: Archiviazione BLOB di Azure, Azure Data Lake Storage Gen1, Azure Data Lake Storage Gen2 e SFTP, ed è possibile leggere il formato testo delimitato in Amazon S3.

Set di dati inline

I flussi di dati di mapping supportano "set di dati inline" come opzione per definire l'origine e il sink. Un set di dati delimitato inline viene definito direttamente all'interno delle trasformazioni di origine e sink e non viene condiviso al di fuori del flusso di dati definito. È utile per la parametrizzazione delle proprietà del set di dati direttamente all'interno del flusso di dati e può trarre vantaggio da prestazioni migliorate dai set di dati di ADF condivisi.

Quando si legge un numero elevato di cartelle e file di origine, è possibile migliorare le prestazioni dell'individuazione dei file del flusso di dati impostando l'opzione "Schema proiettato dall'utente" all'interno della proiezione | Finestra di dialogo Opzioni schema. Questa opzione disattiva l'individuazione automatica dello schema predefinito di ADF e migliorerà notevolmente le prestazioni dell'individuazione dei file. Prima di impostare questa opzione, assicurarsi di importare la proiezione in modo che ADF abbia uno schema esistente per la proiezione. Questa opzione non funziona con lo spostamento schema.

Proprietà di origine

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

Nome Descrizione Richiesto Valori consentiti Proprietà script del flusso di dati
Percorsi con caratteri jolly Verranno elaborati tutti i file corrispondenti al percorso con caratteri jolly. Esegue l'override della cartella e del percorso del file impostato nel set di dati. no String[] wildcardPaths
Partition Root Path (Percorso radice partizione) Per i dati dei file partizionati, è possibile immettere un percorso radice della partizione per leggere le cartelle partizionate come colonne no String partitionRootPath
Elenco di file Indica se l'origine punta a un file di testo che elenca i file da elaborare no true oppure false fileList
Su più righe Il file di origine contiene righe che si estendono su più righe. I valori su più righe devono essere tra virgolette. no true o false multiLineRow
Colonna in cui archiviare il nome del file Creare una nuova colonna con il nome e il percorso del file di origine no String rowUrlColumn
Dopo il completamento Eliminare o spostare i file dopo l'elaborazione. Il percorso del file inizia dalla radice del contenitore no Eliminare: true o false
Spostare: ['<from>', '<to>']
purgeFiles
moveFiles
Filtra per data ultima modifica Scegliere di filtrare i file in base all'ultima modifica no Timestamp: modifiedAfter
modifiedBefore
Consenti nessun file trovato Se true, un errore non viene generato se non vengono trovati file no true oppure false ignoreNoFilesFound
Numero massimo di colonne Il valore predefinito è 20480. Personalizzare questo valore quando il numero di colonna è superiore a 20480 no Intero maxColumns

Nota

Il supporto delle origini del flusso di dati per l'elenco dei 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 delimitata nei flussi di dati di mapping.

Origine DelimitedText

Lo script del flusso di dati associato è:

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

Nota

Le origini del flusso di dati supportano un set limitato di caratteri jolly di Linux supportato dai file system Hadoop

Proprietà sink

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

Nome Descrizione Richiesto Valori consentiti Proprietà script del flusso di dati
Cancellare la cartella Se la cartella di destinazione viene cancellata prima della scrittura no true oppure false truncate
Opzione Nome file Formato di denominazione dei dati scritti. Per impostazione predefinita, un file per partizione in formato part-#####-tid-<guid> no Motivo: Stringa
Per partizione: Stringa[]
Assegna nome al file come dati di colonna: stringa
Output in un singolo file: ['<fileName>']
Assegna nome alla cartella come dati di colonna: stringa
filePattern
partitionFileNames
rowUrlColumn
partitionFileNames
rowFolderUrlColumn
Racchiudi tutto tra virgolette Racchiudere tutti i valori tra virgolette no true oppure false quoteAll
Intestazione Aggiungere intestazioni dei clienti ai file di output no [<string array>] di autorizzazione

Esempio di sink

L'immagine seguente è un esempio di configurazione del 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

Ecco alcuni connettori e formati comuni correlati al formato di testo delimitato: