Copiare e trasformare i dati nel server SFTP usando Azure Data Factory o Azure Synapse Analytics

SI APPLICA A: Azure Data Factory Azure Synapse Analytics

Suggerimento

Provare Data Factory in Microsoft Fabric, una soluzione di analisi completa per le aziende. Microsoft Fabric copre tutti gli elementi, dallo spostamento dei dati all'analisi scientifica dei dati, all'analisi in tempo reale, alla business intelligence e alla creazione di report. Scopri come avviare gratuitamente una nuova versione di valutazione .

Questo articolo illustra come usare l'attività di copia per copiare dati da e verso il server FTP sicuro (SFTP) e usare Flusso di dati per trasformare i dati nel server SFTP. Per altre informazioni, vedere l'articolo introduttivo per Azure Data Factory o Azure Synapse Analytics.

Funzionalità supportate

Questo connettore SFTP è supportato per le funzionalità seguenti:

Funzionalità supportate IR
Attività di copia (origine/sink) ① ②
Flusso di dati di mapping (origine/sink)
Attività Lookup ① ②
Attività GetMetadata ① ②
Attività Delete ① ②

(1) Runtime di integrazione di Azure (2) Runtime di integrazione self-hosted

In particolare, il connettore SFTP supporta:

  • Copia di file da e nel server SFTP usando la chiave pubblica SSH di base o l'autenticazione a più fattori.
  • La copia di file così come è o tramite l'analisi o la generazione di file con i formati di file e i codec di compressione supportati.

Prerequisiti

Se l'archivio dati si trova all'interno di una rete locale, una rete virtuale di Azure o un cloud privato virtuale di Amazon, è necessario configurare un runtime di integrazione self-hosted per connettersi.

Se l'archivio dati è un servizio dati cloud gestito, è possibile usare Azure Integration Runtime. Se l'accesso è limitato agli indirizzi IP approvati nelle regole del firewall, è possibile aggiungere indirizzi IP del runtime di integrazione di Azure all'elenco elementi consentiti.

È anche possibile usare la funzionalità di runtime di integrazione della rete virtuale gestita in Azure Data Factory per accedere alla rete locale senza installare e configurare un runtime di integrazione self-hosted.

Per altre informazioni sui meccanismi di sicurezza di rete e sulle opzioni supportate da Data Factory, vedere strategie di accesso ai dati.

Introduzione

Per eseguire l'attività di copia con una pipeline, è possibile usare uno degli strumenti o SDK seguenti:

Creare un servizio collegato SFTP usando l'interfaccia utente

Usare la procedura seguente per creare un servizio collegato SFTP nell'interfaccia utente di portale di Azure.

  1. Passare alla scheda Gestisci nell'area di lavoro di Azure Data Factory o Synapse e selezionare Servizi collegati, quindi fare clic su Nuovo:

  2. Cercare SFTP e selezionare il connettore SFTP.

    Screenshot of the SFTP connector.

  3. Configurare i dettagli del servizio, testare la connessione e creare il nuovo servizio collegato.

    Screenshot of configuration for an SFTP linked service.

Dettagli di configurazione di Connessione or

Le sezioni seguenti forniscono informazioni dettagliate sulle proprietà usate per definire entità specifiche di SFTP.

Proprietà del servizio collegato

Per il servizio collegato SFTP sono supportate le proprietà seguenti:

Proprietà Descrizione Richiesto
Tipo La proprietà type deve essere impostata su Sftp.
host Nome o indirizzo IP del server SFTP.
port Porta in cui il server SFTP è in ascolto.
Il valore consentito è un numero intero e il valore predefinito è 22.
No
skipHostKeyValidation Specificare se si desidera ignorare la convalida tramite della chiave host.
I valori consentiti sono true e false (impostazione predefinita).
No
hostKeyFingerprint Specificare l'impronta digitale della chiave host. Sì, se "skipHostKeyValidation" è impostato su false.
authenticationType Specificare il tipo di autenticazione.
I valori consentiti sono Basic, SshPublicKey e MultiFactor. Per altre proprietà, vedere la sezione Usare l'autenticazione di base. Per esempi JSON, vedere la sezione Usare l'autenticazione con chiave pubblica SSH.
connectVia Runtime di integrazione da usare per la connessione all'archivio dati. Per altre informazioni, vedere la sezione Prerequisiti . Se il runtime di integrazione non è specificato, il servizio usa il runtime di integrazione di Azure predefinito. No

Usare l'autenticazione di base

Per usare l'autenticazione di base, impostare la proprietà authenticationType su Basic e specificare le proprietà seguenti oltre alle proprietà generico del connettore SFTP introdotte nella sezione precedente:

Proprietà Descrizione Richiesto
userName Utente che ha accesso al server SFTP.
password Password per l'utente (userName). Contrassegnare questo campo come SecureString per archiviarlo in modo sicuro o fare riferimento a un segreto archiviato in un insieme di credenziali delle chiavi di Azure.

Esempio:

{
    "name": "SftpLinkedService",
    "properties": {
        "type": "Sftp",
        "typeProperties": {
            "host": "<sftp server>",
            "port": 22,
            "skipHostKeyValidation": false,
            "hostKeyFingerPrint": "ssh-rsa 2048 xx:00:00:00:xx:00:x0:0x:0x:0x:0x:00:00:x0:x0:00",
            "authenticationType": "Basic",
            "userName": "<username>",
            "password": {
                "type": "SecureString",
                "value": "<password>"
            }
        },
        "connectVia": {
            "referenceName": "<name of integration runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

Usare l'autenticazione con chiave pubblica SSH

Per usare l'autenticazione basata su chiave pubblica SSH, impostare la proprietà "authenticationType" su SshPublicKey e specificare le proprietà seguenti oltre a quelle generiche del connettore SFTP introdotte nell'ultima sezione:

Proprietà Descrizione Richiesto
userName Utente che ha accesso al server SFTP.
privateKeyPath Specificare il percorso assoluto del file di chiave privata a cui può accedere il runtime di integrazione. Questo vale solo quando il tipo self-hosted del runtime di integrazione viene specificato in "connectVia". Specificare privateKeyPath o privateKeyContent.
privateKeyContent Contenuto della chiave privata SSH con codifica Base64. La chiave privata SSH deve essere in formato OpenSSH. Contrassegnare questo campo come SecureString per archiviarlo in modo sicuro o fare riferimento a un segreto archiviato in un insieme di credenziali delle chiavi di Azure. Specificare privateKeyPath o privateKeyContent.
passPhrase Specificare la pass phrase o la password per decrittografare la chiave privata se il file di chiave o il contenuto della chiave è protetto da una pass phrase. Contrassegnare questo campo come SecureString per archiviarlo in modo sicuro o fare riferimento a un segreto archiviato in un insieme di credenziali delle chiavi di Azure. Sì, se il file di chiave privata o il contenuto della chiave è protetto da una pass phrase.

Nota

Il connettore SFTP supporta una chiave OpenSSH RSA/DSA. Assicurarsi che il contenuto del file di chiave inizi con "-----BEGIN [RSA/DSA] PRIVATE KEY-----". Se il file di chiave privata è un file in formato PPK, usare lo strumento PuTTY per eseguire la conversione da PPK al formato OpenSSH.

Esempio 1: autenticazione SshPublicKey con chiave privata filePath

{
    "name": "SftpLinkedService",
    "properties": {
        "type": "Sftp",
        "typeProperties": {
            "host": "<sftp server>",
            "port": 22,
            "skipHostKeyValidation": true,
            "authenticationType": "SshPublicKey",
            "userName": "xxx",
            "privateKeyPath": "D:\\privatekey_openssh",
            "passPhrase": {
                "type": "SecureString",
                "value": "<pass phrase>"
            }
        },
        "connectVia": {
            "referenceName": "<name of integration runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

Esempio 2: autenticazione SshPublicKey con contenuto della chiave privata

{
    "name": "SftpLinkedService",
    "type": "Linkedservices",
    "properties": {
        "type": "Sftp",
        "typeProperties": {
            "host": "<sftp server>",
            "port": 22,
            "skipHostKeyValidation": true,
            "authenticationType": "SshPublicKey",
            "userName": "<username>",
            "privateKeyContent": {
                "type": "SecureString",
                "value": "<base64 string of the private key content>"
            },
            "passPhrase": {
                "type": "SecureString",
                "value": "<pass phrase>"
            }
        },
        "connectVia": {
            "referenceName": "<name of integration runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

Usare l'autenticazione a più fattori

Per usare l'autenticazione a più fattori, ovvero una combinazione di autenticazioni di chiave pubblica SSH e di base, specificare il nome utente, la password e le informazioni sulla chiave privata descritte nelle sezioni precedenti.

Esempio: autenticazione a più fattori

{
    "name": "SftpLinkedService",
    "properties": {
        "type": "Sftp",
        "typeProperties": {
            "host": "<host>",
            "port": 22,
            "authenticationType": "MultiFactor",
            "userName": "<username>",
            "password": {
                "type": "SecureString",
                "value": "<password>"
            },
            "privateKeyContent": {
                "type": "SecureString",
                "value": "<base64 encoded private key content>"
            },
            "passPhrase": {
                "type": "SecureString",
                "value": "<passphrase for private key>"
            }
        },
        "connectVia": {
            "referenceName": "<name of integration runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

Proprietà del set di dati

Per un elenco completo di sezioni e proprietà disponibili per la definizione dei set di dati, vedere l'articolo Set di dati .

Azure Data Factory supporta i formati di file seguenti. Per impostazioni basate sui formati, fare riferimento ai singoli articoli.

Le proprietà seguenti sono supportate per SFTP nelle location impostazioni nel set di dati basato sul formato:

Proprietà Descrizione Richiesto
Tipo La proprietà type in location nel set di dati deve essere impostata su SftpLocation.
folderPath Percorso della cartella. Se si vuole usare un carattere jolly per filtrare la cartella, ignorare questa impostazione e specificare il percorso nelle impostazioni dell'origine attività. No
fileName Nome del file nel percorso di cartella specificato. Se si vuole usare un carattere jolly per filtrare i file, ignorare questa impostazione e specificare il nome del file nelle impostazioni dell'origine attività. No

Esempio:

{
    "name": "DelimitedTextDataset",
    "properties": {
        "type": "DelimitedText",
        "linkedServiceName": {
            "referenceName": "<SFTP linked service name>",
            "type": "LinkedServiceReference"
        },
        "schema": [ < physical schema, optional, auto retrieved during authoring > ],
        "typeProperties": {
            "location": {
                "type": "SftpLocation",
                "folderPath": "root/folder/subfolder"
            },
            "columnDelimiter": ",",
            "quoteChar": "\"",
            "firstRowAsHeader": true,
            "compressionCodec": "gzip"
        }
    }
}

Proprietà dell'attività di copia

Per un elenco completo di sezioni e proprietà disponibili per la definizione delle attività, vedere l'articolo Pipeline. In questa sezione viene fornito un elenco di proprietà supportate dall'origine SFTP.

SFTP come origine

Azure Data Factory supporta i formati di file seguenti. Per impostazioni basate sui formati, fare riferimento ai singoli articoli.

Le proprietà seguenti sono supportate per SFTP nelle storeSettings impostazioni nell'origine copia basata sul formato:

Proprietà Descrizione Richiesto
Tipo La proprietà type in storeSettings deve essere impostata su SftpRead Impostazioni.
Individuare i file da copiare
OPZIONE 1: percorso statico
Copiare dal percorso di cartella/file specificato nel set di dati. Se si vogliono copiare tutti i file da una cartella, specificare anche wildcardFileName come *.
OPZIONE 2: carattere jolly
- wildcardFolderPath
Percorso della cartella con caratteri jolly per filtrare le cartelle di origine.
I caratteri jolly consentiti sono * (corrisponde a zero o più caratteri) e ? (corrisponde a zero o un singolo carattere); usare per eseguire ^ l'escape se il nome effettivo della cartella ha un carattere jolly o questo carattere di escape all'interno.
Per altri esempi, vedere Esempi di filtro di file e cartelle.
No
OPZIONE 2: carattere jolly
- wildcardFileName
Nome file con caratteri jolly nella cartella specificataPath/wildcardFolderPath per filtrare i file di origine.
I caratteri jolly consentiti sono * (corrisponde a zero o più caratteri) e ? (corrisponde a zero o un singolo carattere); usare per eseguire ^ l'escape se il nome file effettivo ha caratteri jolly o il carattere di escape all'interno. Per altri esempi, vedere Esempi di filtro di file e cartelle.
OPZIONE 3: un elenco di file
- fileListPath
Indica di copiare un set di file specificato. Puntare a un file di testo che include un elenco di file da copiare (un file per riga, con il percorso relativo del percorso configurato nel set di dati).
Quando si usa questa opzione, non specificare il nome del file nel set di dati. Per altri esempi, vedere Esempi di elenco di file.
No
Impostazioni aggiuntive
recursive Indica se i dati vengono letti in modo ricorsivo dalle cartelle secondarie o solo dalla cartella specificata. Quando la proprietà recursive è impostata su true e il sink è un archivio basato su file, una cartella o una sottocartella vuota non viene copiata o creata nel sink.
I valori consentiti sono true (predefinito) e false.
Questa proprietà non è applicabile quando si configura fileListPath.
No
deleteFilesAfterCompletion Indica se i file binari verranno eliminati dall'archivio di origine dopo il corretto spostamento nell'archivio di destinazione. L'eliminazione del file è per file, quindi quando l'attività di copia ha esito negativo, si noterà che alcuni file sono già stati copiati nella destinazione ed eliminati dall'origine, mentre altri rimangono nell'archivio di origine.
Questa proprietà è valida solo nello scenario di copia dei file binari. Valore predefinito: false.
No
modifiedDatetimeStart I file vengono filtrati in base all'attributo Ultima modifica.
I file vengono selezionati se l'ora dell'ultima modifica è maggiore o uguale a modifiedDatetimeStart e minore di modifiedDatetimeEnd. L'ora viene applicata al fuso orario UTC nel formato 2018-12-01T05:00:00Z.
Le proprietà possono essere NULL, il che significa che al set di dati non viene applicato alcun filtro dell'attributo di file. Quando modifiedDatetimeStart ha un valore datetime ma modifiedDatetimeEnd è NULL, significa che vengono selezionati i file il cui ultimo attributo modificato è maggiore o uguale al valore datetime. Quando modifiedDatetimeEnd ha un valore datetime ma modifiedDatetimeStart è NULL, significa che vengono selezionati i file il cui ultimo attributo modificato è minore del valore datetime.
Questa proprietà non è applicabile quando si configura fileListPath.
No
modifiedDatetimeEnd Come sopra. No
enablePartitionDiscovery Per i file partizionati, specificare se analizzare le partizioni dal percorso del file e aggiungerle come colonne di origine aggiuntive.
I valori consentiti sono false (impostazione predefinita) e true.
No
partitionRootPath Quando l'individuazione delle partizioni è abilitata, specificare il percorso radice assoluto per leggere le cartelle partizionate come colonne di dati.

Se non è specificato, per impostazione predefinita,
- Quando si usa il percorso del file nel set di dati o nell'elenco di file nell'origine, il percorso radice della partizione è il percorso configurato nel set di dati.
- Quando si usa il filtro delle cartelle con caratteri jolly, il percorso radice della partizione è il sottopercorso prima del primo carattere jolly.

Si supponga, ad esempio, di configurare il percorso nel set di dati come "root/folder/year=2020/month=08/day=27":
- Se si specifica il percorso radice della partizione come "root/folder/year=2020", l'attività di copia genererà altre due colonne month e day con il valore "08" e "27" rispettivamente, oltre alle colonne all'interno dei file.
- Se il percorso radice della partizione non è specificato, non verrà generata alcuna colonna aggiuntiva.
No
maxConcurrentConnections Limite massimo di connessioni simultanee stabilite all'archivio dati durante l'esecuzione dell'attività. Specificare un valore solo quando si desidera limitare le connessioni simultanee. No
disableChunking Quando si copiano dati da SFTP, il servizio tenta di ottenere prima la lunghezza del file, quindi dividere il file in più parti e leggerli in parallelo. Specificare se il server SFTP supporta il recupero della lunghezza del file o la ricerca di una determinata differenza.
I valori consentiti sono false (impostazione predefinita), true.
No

Esempio:

"activities":[
    {
        "name": "CopyFromSFTP",
        "type": "Copy",
        "inputs": [
            {
                "referenceName": "<Delimited text input dataset name>",
                "type": "DatasetReference"
            }
        ],
        "outputs": [
            {
                "referenceName": "<output dataset name>",
                "type": "DatasetReference"
            }
        ],
        "typeProperties": {
            "source": {
                "type": "DelimitedTextSource",
                "formatSettings":{
                    "type": "DelimitedTextReadSettings",
                    "skipLineCount": 10
                },
                "storeSettings":{
                    "type": "SftpReadSettings",
                    "recursive": true,
                    "wildcardFolderPath": "myfolder*A",
                    "wildcardFileName": "*.csv",
                    "disableChunking": false
                }
            },
            "sink": {
                "type": "<sink type>"
            }
        }
    }
]

SFTP come sink

Azure Data Factory supporta i formati di file seguenti. Per impostazioni basate sui formati, fare riferimento ai singoli articoli.

Le proprietà seguenti sono supportate per SFTP nelle storeSettings impostazioni in un sink di copia basato sul formato:

Proprietà Descrizione Richiesto
Tipo La proprietà type in storeSettings deve essere impostata su SftpWrite Impostazioni.
copyBehavior Definisce il comportamento di copia quando l'origine è costituita da file di un archivio dati basato su file.

I valori consentiti sono i seguenti:
- PreserveHierarchy (predefinito): mantiene la gerarchia dei file nella cartella di destinazione. Il percorso relativo del file di origine nella cartella di origine è identico al percorso relativo del file di destinazione nella cartella di destinazione.
- FlattenHierarchy: tutti i file della cartella di origine si trovano nel primo livello della cartella di destinazione. I nomi dei file di destinazione vengono generati automaticamente.
- MergeFiles: unisce tutti i file della cartella di origine in un solo file. Se si specifica il nome di file, il nome del file unito sarà il nome specificato. In caso contrario, verrà usato un nome di file generato automaticamente.
No
maxConcurrentConnections Limite massimo di connessioni simultanee stabilite all'archivio dati durante l'esecuzione dell'attività. Specificare un valore solo quando si desidera limitare le connessioni simultanee. No
useTempFileRename Indicare se caricare in file temporanei e rinominarli o scrivere direttamente nella cartella o nel percorso del file di destinazione. Per impostazione predefinita, il servizio scrive prima nei file temporanei e quindi li rinomina al termine del caricamento. Questa sequenza consente di evitare (1) conflitti che potrebbero causare un file danneggiato se sono presenti altri processi che scrivono nello stesso file e (2) assicurarsi che la versione originale del file esista durante il trasferimento. Se il server SFTP non supporta un'operazione di ridenominazione, disabilitare questa opzione e assicurarsi di non disporre di una scrittura simultanea nel file di destinazione. Per altre informazioni, vedere il suggerimento per la risoluzione dei problemi alla fine di questa tabella. Nr. Il valore predefinito è true.
operationTimeout Tempo di attesa prima del timeout di ogni richiesta di scrittura nel server SFTP. Il valore predefinito è 60 min (01:00:00). No

Suggerimento

Se viene visualizzato l'errore "UserErrorSftpPathNotFound", "UserErrorSftpPermissionDenied" o "SftpOperationFail" quando si scrivono dati in SFTP e l'utente SFTP usato dispone delle autorizzazioni appropriate, verificare se il server SFTP supporta l'operazione di ridenominazione dei file funziona. In caso contrario, disabilitare l'opzione Carica con file temporaneo (useTempFileRename) e riprovare. Per altre informazioni su questa proprietà, vedere la tabella precedente. Se si usa un runtime di integrazione self-hosted per il attività Copy, assicurarsi di usare la versione 4.6 o successiva.

Esempio:

"activities":[
    {
        "name": "CopyToSFTP",
        "type": "Copy",
        "inputs": [
            {
                "referenceName": "<input dataset name>",
                "type": "DatasetReference"
            }
        ],
        "outputs": [
            {
                "referenceName": "<output dataset name>",
                "type": "DatasetReference"
            }
        ],
        "typeProperties": {
            "source": {
                "type": "<source type>"
            },
            "sink": {
                "type": "BinarySink",
                "storeSettings":{
                    "type": "SftpWriteSettings",
                    "copyBehavior": "PreserveHierarchy"
                }
            }
        }
    }
]

Esempi di filtro file e cartelle

In questa sezione viene descritto il comportamento risultante dall'uso di filtri con caratteri jolly con percorsi di cartelle e nomi di file.

folderPath fileName recursive Struttura delle cartelle di origine e risultato del filtro (i file in grassetto sono stati recuperati)
Folder* (vuoto, usare valore predefinito) falso CartellaA
    File1.csv
    File2.json
    Sottocartella1
        File3.csv
        File4.json
        File5.csv
AltraCartellaB
    File6.csv
Folder* (vuoto, usare valore predefinito) true CartellaA
    File1.csv
    File2.json
    Sottocartella1
        File3.csv
        File4.json
        File5.csv
AltraCartellaB
    File6.csv
Folder* *.csv falso CartellaA
    File1.csv
    File2.json
    Sottocartella1
        File3.csv
        File4.json
        File5.csv
AltraCartellaB
    File6.csv
Folder* *.csv true CartellaA
    File1.csv
    File2.json
    Sottocartella1
        File3.csv
        File4.json
        File5.csv
AltraCartellaB
    File6.csv

Esempi di elenco di file

Questa tabella descrive il comportamento risultante dall'uso di un percorso di elenco di file nell'origine attività Copy. Si presuppone che sia presente la struttura di cartelle di origine seguente e si voglia copiare i file in grassetto:

Esempio di struttura di origine Contenuto in FileListToCopy.txt Configurazione di Azure Data Factory
root
    CartellaA
        File1.csv
        File2.json
        Sottocartella1
            File3.csv
            File4.json
            File5.csv
    Metadati UFX
        FileListToCopy.txt
File1.csv
Sottocartella1/File3.csv
Sottocartella1/File5.csv
Nel set di dati:
- Percorso cartella: root/FolderA

Nell'origine attività Copy:
- Percorso elenco file: root/Metadata/FileListToCopy.txt

Il percorso dell'elenco di file punta a un file di testo nello stesso archivio dati che include un elenco di file da copiare (un file per riga, con il percorso relativo al percorso configurato nel set di dati).

Proprietà del flusso di dati per mapping

Quando si trasformano i dati nei flussi di dati di mapping, è possibile leggere e scrivere file da SFTP nei formati seguenti:

Le impostazioni specifiche del formato si trovano nella documentazione per tale formato. Per altre informazioni, vedere Trasformazione dell'origine nel flusso di dati di mapping e Trasformazione Sink nel flusso di dati di mapping.

Nota

La convalida della chiave host SSH non è ora supportata nel flusso di dati di mapping.

Nota

Per accedere al server SFTP locale, è necessario usare l'area di lavoro gestita di Azure Data Factory o Synapse Rete virtuale usando un endpoint privato. Per informazioni dettagliate, vedere questa esercitazione .

Trasformazione origine

Nella tabella seguente sono elencate le proprietà supportate dall'origine SFTP. È possibile modificare queste proprietà nella scheda Opzioni origine. Quando si usa il set di dati inline, verranno visualizzate impostazioni aggiuntive, che corrispondono alle proprietà descritte nella sezione proprietà del set di dati.

Name Descrizione Richiesto Valori consentiti Proprietà script flusso di dati
Percorso con caratteri jolly L'uso di un criterio con caratteri jolly indicherà a ADF di scorrere ogni cartella e file corrispondente in una singola trasformazione di origine. Si tratta di un modo efficace per elaborare più file all'interno di un singolo flusso. No String[] wildcardPaths
Percorso radice partizione Se sono presenti cartelle partizionate nell'origine file con un key=value formato ( ad esempio , year=2019), è possibile assegnare il livello superiore dell'albero delle cartelle di partizione a un nome di colonna nel flusso di dati del flusso di dati. No Stringa partitionRootPath
Consenti nessun file trovato Se true, non viene generato un errore se non vengono trovati file. No true o false ignoreNoFilesFound
Elenco di file set di file. Creare un file di testo che includa un elenco di file di percorsi relativi da elaborare. Puntare a questo file di testo. No true o false Filelist
Colonna in cui archiviare il nome file archiviare il nome del file di origine in una colonna relativa ai dati. Immettere un nuovo nome di colonna per archiviare la stringa del nome file. No Stringa rowUrlColumn
Dopo il completamento scegliere di non eseguire alcuna operazione con il file di origine dopo l'esecuzione del flusso di dati, eliminare il file di origine oppure spostare il file di origine. I percorsi per lo spostamento sono relativi. No Elimina: true o false
Sposta: ['<from>', '<to>']
purgeFiles
moveFiles
Filtra per data ultima modifica è possibile filtrare i file elaborati specificando un intervallo di date relative all'ultima modifica. Tutte le ore e le date sono in formato UTC. No Timestamp: modifiedAfter
modifiedBefore

Esempio di script di origine SFTP

Quando si usa il set di dati SFTP come tipo di origine, lo script del flusso di dati associato è:

source(allowSchemaDrift: true,
	validateSchema: false,
	ignoreNoFilesFound: true,
	purgeFiles: true,
	fileList: true,
	modifiedAfter: (toTimestamp(1647388800000L)),
	modifiedBefore: (toTimestamp(1647561600000L)),
	partitionRootPath: 'partdata',
	wildcardPaths:['partdata/**/*.csv']) ~> SFTPSource

Trasformazione sink

Nella tabella seguente sono elencate le proprietà supportate dal sink SFTP. È possibile modificare queste proprietà nella scheda Impostazioni. Quando si usa il set di dati inline, verranno visualizzate impostazioni aggiuntive, che corrispondono alle proprietà descritte nella sezione proprietà del set di dati.

Name Descrizione Richiesto Valori consentiti Proprietà script flusso di dati
Cancellare la cartella determina se la cartella di destinazione viene cancellata prima della scrittura dei dati. No true o false truncate
Opzione Nome file Formato di denominazione dei dati scritti. Per impostazione predefinita, un file per partizione in formato part-#####-tid-<guid>. No Pattern: String
Per partizione: String[]
Nome file come dati di colonna: Stringa
Cartella name come dati di colonna: String
Output in un singolo file: ['<fileName>']
filePattern
partitionFileNames
rowUrlColumn
rowFolderUrlColumn
partitionFileNames
Virgolette tutte Determina se racchiudere tutti i valori tra virgolette. No true o false virgoletteTutte

Esempio di script sink SFTP

Quando si usa il set di dati SFTP come tipo di sink, lo script del flusso di dati associato è:

IncomingStream sink(allowSchemaDrift: true,
	validateSchema: false,
	filePattern:'loans[n].csv',
	truncate: true,
	skipDuplicateMapInputs: true,
	skipDuplicateMapOutputs: true) ~> SFTPSink

Proprietà dell'attività Lookup

Per informazioni sulle proprietà dell'attività di ricerca, vedere Attività di ricerca.

Proprietà dell'attività GetMetadata

Per informazioni sulle proprietà dell'attività GetMetadata, vedere Attività GetMetadata.

Proprietà dell'attività Delete

Per informazioni sulle proprietà dell'attività Delete, vedere Delete activity .For information about Delete activity properties, see Delete activity.

Modalità legacy

Nota

I modelli seguenti sono ancora supportati così come per la compatibilità con le versioni precedenti. È consigliabile usare il nuovo modello descritto in precedenza, perché l'interfaccia utente di creazione è passata alla generazione del nuovo modello.

Modello di set di dati legacy

Proprietà Descrizione Richiesto
Tipo La proprietà type del set di dati deve essere impostata su FileShare.
folderPath Percorso della cartella. È supportato un filtro con caratteri jolly. I caratteri jolly consentiti sono * (corrisponde a zero o più caratteri) e ? (corrisponde a zero o a un singolo carattere); usare per eseguire ^ l'escape se il nome file effettivo ha un carattere jolly o questo carattere di escape all'interno.

Esempi: cartellaradice/sottocartella/. Vedere altri esempi in Esempi di filtro file e cartelle.
fileName Nome o filtro con caratteri jolly per i file in "folderPath" specificato. Se non si specifica alcun valore per questa proprietà, il set di dati punta a tutti i file nella cartella.

Per il filtro, i caratteri jolly consentiti sono * (corrisponde a zero o più caratteri) e ? (corrisponde a zero o a un singolo carattere).
- Esempio 1: "fileName": "*.csv"
- Esempio 2: "fileName": "???20180427.txt"
Usare ^ per applicare una sequenza di escape se il nome effettivo della cartella include caratteri jolly o tale carattere di escape.
No
modifiedDatetimeStart I file vengono filtrati in base all'attributo Ultima modifica. I file vengono selezionati se l'ora dell'ultima modifica è maggiore o uguale a modifiedDatetimeStart e minore di modifiedDatetimeEnd. L'ora viene applicata al fuso orario UTC nel formato 2018-12-01T05:00:00Z.

Le prestazioni complessive dello spostamento dei dati saranno influenzate dall'abilitazione di questa impostazione quando si vuole eseguire il filtro di file da un numero elevato di file.

Le proprietà possono essere NULL, il che significa che al set di dati non viene applicato alcun filtro dell'attributo di file. Quando modifiedDatetimeStart ha un valore datetime ma modifiedDatetimeEnd è NULL, significa che vengono selezionati i file il cui ultimo attributo modificato è maggiore o uguale al valore datetime. Quando modifiedDatetimeEnd ha un valore datetime ma modifiedDatetimeStart è NULL, significa che vengono selezionati i file il cui ultimo attributo modificato è minore del valore datetime.
No
modifiedDatetimeEnd I file vengono filtrati in base all'attributo Ultima modifica. I file vengono selezionati se l'ora dell'ultima modifica è maggiore o uguale a modifiedDatetimeStart e minore di modifiedDatetimeEnd. L'ora viene applicata al fuso orario UTC nel formato 2018-12-01T05:00:00Z.

Le prestazioni complessive dello spostamento dei dati saranno influenzate dall'abilitazione di questa impostazione quando si vuole eseguire il filtro di file da un numero elevato di file.

Le proprietà possono essere NULL, il che significa che al set di dati non viene applicato alcun filtro dell'attributo di file. Quando modifiedDatetimeStart ha un valore datetime ma modifiedDatetimeEnd è NULL, significa che vengono selezionati i file il cui ultimo attributo modificato è maggiore o uguale al valore datetime. Quando modifiedDatetimeEnd ha un valore datetime ma modifiedDatetimeStart è NULL, significa che vengono selezionati i file il cui ultimo attributo modificato è minore del valore datetime.
No
format Per copiare i file così come sono tra archivi basati su file (copia binaria), ignorare la sezione del formato nelle definizioni dei set di dati di input e di output.

Per analizzare i file con un formato specifico, sono supportati i tipi di formato di file seguenti: TextFormat, JsonFormat, AvroFormat, OrcFormat e ParquetFormat. Impostare la proprietà type nell'area format su uno di questi valori. Per altre informazioni, vedere Le sezioni Formato testo, Formato Json, Formato Avro, Formato Orc e Formato Parquet.
No (solo per uno scenario di copia binaria)
compressione Specificare il tipo e il livello di compressione dei dati. Per altre informazioni, vedere l'articolo sui formati di file supportati e i codec di compressione.
I tipi supportati sono GZip, Deflate, BZip2 e ZipDeflate.
I livelli supportati sono Ottimale e Più veloce.
No

Suggerimento

Per copiare tutti i file in una cartella, specificare solo folderPath.
Per copiare un singolo file con un nome specificato, specificare folderPath con la parte della cartella e fileName con il nome del file.
Per copiare un subset di file in una cartella, specificare folderPath con la parte della cartella e fileName con il filtro con caratteri jolly.

Nota

Se si usa la proprietà fileFilter per il filtro di file, è ancora supportata così come è, ma è consigliabile usare la nuova funzionalità di filtro aggiunta a fileName da ora in poi.

Esempio:

{
    "name": "SFTPDataset",
    "type": "Datasets",
    "properties": {
        "type": "FileShare",
        "linkedServiceName":{
            "referenceName": "<SFTP linked service name>",
            "type": "LinkedServiceReference"
        },
        "typeProperties": {
            "folderPath": "folder/subfolder/",
            "fileName": "*",
            "modifiedDatetimeStart": "2018-12-01T05:00:00Z",
            "modifiedDatetimeEnd": "2018-12-01T06:00:00Z",
            "format": {
                "type": "TextFormat",
                "columnDelimiter": ",",
                "rowDelimiter": "\n"
            },
            "compression": {
                "type": "GZip",
                "level": "Optimal"
            }
        }
    }
}

Modello di origine legacy attività Copy

Proprietà Descrizione Richiesto
Tipo La proprietà type dell'origine attività Copy deve essere impostata su FileSystemSource
recursive Indica se i dati vengono letti in modo ricorsivo dalle cartelle secondarie o solo dalla cartella specificata. Quando recursive è impostato su true e il sink è un archivio basato su file, le cartelle vuote e le sottocartelle non verranno copiate o create nel sink.
I valori consentiti sono true (impostazione predefinita) e false
No
maxConcurrentConnections Limite massimo di connessioni simultanee stabilite all'archivio dati durante l'esecuzione dell'attività. Specificare un valore solo quando si desidera limitare le connessioni simultanee. No

Esempio:

"activities":[
    {
        "name": "CopyFromSFTP",
        "type": "Copy",
        "inputs": [
            {
                "referenceName": "<SFTP input dataset name>",
                "type": "DatasetReference"
            }
        ],
        "outputs": [
            {
                "referenceName": "<output dataset name>",
                "type": "DatasetReference"
            }
        ],
        "typeProperties": {
            "source": {
                "type": "FileSystemSource",
                "recursive": true
            },
            "sink": {
                "type": "<sink type>"
            }
        }
    }
]

Per un elenco di archivi dati supportati come origini e sink dal attività Copy, vedere archivi dati supportati.