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 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!
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) | (1) (2) |
Flusso di dati per mapping (origine/sink) | (1) |
Attività Lookup | (1) (2) |
Attività GetMetadata | (1) (2) |
Attività Delete | (1) (2) |
① Azure Integration Runtime ② 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 sono oppure 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 del cloud gestito, è possibile usare Azure Integration Runtime. Se l'accesso è limitato solo agli indirizzi IP approvati nelle regole del firewall, è possibile aggiungere IP di Azure Integration Runtime nell'elenco Consentiti.
È anche possibile usare la funzionalità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.
Operazioni preliminari
Per eseguire l'attività di copia con una pipeline, è possibile usare uno degli strumenti o SDK seguenti:
- Strumento Copia dati
- Il portale di Azure
- .NET SDK
- SDK di Python
- Azure PowerShell
- API REST
- Modello di Azure Resource Manager
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.
Passare alla scheda Gestisci nell'area di lavoro di Azure Data Factory o Synapse e selezionare Servizi collegati, quindi fare clic su Nuovo:
Cercare SFTP e selezionare il connettore SFTP.
Configurare i dettagli del servizio, testare la connessione e creare il nuovo servizio collegato.
Dettagli di configurazione del connettore
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 |
---|---|---|
type | La proprietà type deve essere impostata su Sftp. | Sì |
host | Nome o indirizzo IP del server SFTP. | Sì |
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. |
Sì |
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 Azure Integration Runtime per impostazione predefinita. | 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. | Sì |
password | Password per l'utente (userName). Contrassegnare questo campo come SecureString per archiviarlo in modo sicuro oppure fare riferimento a un segreto archiviato in Azure Key Vault. | Sì |
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. | Sì |
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 oppure fare riferimento a un segreto archiviato in Azure Key Vault. | 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 oppure fare riferimento a un segreto archiviato in Azure Key Vault. | 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.
- Formato Avro
- Formato binario
- Formato di testo delimitato
- Formato Excel
- Formato JSON
- Formato ORC
- Formato Parquet
- Formato XML
Le proprietà seguenti sono supportate per SFTP nelle location
impostazioni nel set di dati basato sul formato:
Proprietà | Descrizione | Richiesto |
---|---|---|
type | La proprietà type in location nel set di dati deve essere impostata su SftpLocation. |
Sì |
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 dell'attività. | No |
fileName | Nome del file nel percorso della cartella specificato. Se si vuole usare un carattere jolly per filtrare i file, ignorare questa impostazione e specificare ilo nome di file nelle impostazioni dell'origine dell'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.
- Formato Avro
- Formato binario
- Formato di testo delimitato
- Formato Excel
- Formato JSON
- Formato ORC
- Formato Parquet
- Formato XML
Le proprietà seguenti sono supportate per SFTP nelle storeSettings
impostazioni nell'origine copia basata sul formato:
Proprietà | Descrizione | Richiesto |
---|---|---|
type | La proprietà type in storeSettings deve essere impostata su SftpReadSettings. |
Sì |
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 file e cartelle. |
No |
OPZIONE 2: carattere jolly - wildcardFileName |
Nome del file con caratteri jolly nel percorso folderPath/wildcardFolderPath specificato 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 file e cartelle. |
Sì |
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 passaggio all'archivio di destinazione. L'eliminazione dei file avviene a livello di singolo file, pertanto quando l'attività Copy non riesce, verranno visualizzati alcuni file già copiati nella destinazione ed eliminati dall'origine, mentre altri sono ancora presenti nell'archivio di origine. Questa proprietà è valida solo nello scenario di copia dei file binari. Il 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 . Data e ora vengono applicate in base al fuso orario UTC nel formato 2018-12-01T05:00:00Z. Le proprietà possono essere NULL, a indicare che al set di dati non è applicato alcun filtro di attributo di file. Quando modifiedDatetimeStart ha un valore datetime ma modifiedDatetimeEnd è NULL, vengono selezionati i file il cui attributo di ultima modifica è maggiore o uguale al valore datetime. Quando modifiedDatetimeEnd ha un valore datetime ma modifiedDatetimeStart è NULL vengono selezionati i file il cui attributo di ultima modifica è 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 (predefinito) 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 ciò 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 carattere jolly, il percorso radice della partizione corrisponde al percorso secondario che precede il 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à Copy genererà altre due colonne month e day , rispettivamente con il valore "08" e "27", 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 i dati da FTP sicuro, il servizio prova a ottenere prima la lunghezza del file, quindi divide il file in più parti e le legge in parallelo. Specificare se il server FTP sicuro supporta l'acquisizione della lunghezza del file o il tentativo di lettura da un determinato offset. I valori consentiti sono false (predefinito), 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 |
---|---|---|
type | La proprietà type in storeSettings deve essere impostata su SftpWriteSettings. |
Sì |
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) assicurare che la versione originale del file esista durante il trasferimento. Se il server FTP sicuro non supporta l'operazione di ridenominazione, disabilitare questa opzione e assicurarsi che non sia presente una scrittura simultanea nel file di destinazione. Per altre informazioni, vedere il suggerimento per la risoluzione dei problemi alla fine di questa tabella. | No. 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) | false | 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 |
false | 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 che si vogliano 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 dell'attività Copy: - Percorso elenco file: root/Metadata/FileListToCopy.txt Il percorso dell'elenco di file fa riferimento 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 del 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 origine nel flusso di dati per mapping e Trasformazione sink nel flusso di dati per 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 i passaggi dettagliati, fare riferimento a 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.
Nome | Descrizione | Richiesto | Valori consentiti | Proprietà script del 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 | String | partitionRootPath |
Consenti nessun file trovato | Se true, non viene generato un errore se non vengono trovati file. | No | true oppure 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 oppure 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 | String | 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 | Eliminare: true o false Spostare: ['<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.
Nome | Descrizione | Richiesto | Valori consentiti | Proprietà script del flusso di dati |
---|---|---|---|---|
Cancellare la cartella | determina se la cartella di destinazione viene cancellata prima della scrittura dei dati. | 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 Cartella name come dati di colonna: String Output in un singolo file: ['<fileName>'] |
filePattern partitionFileNames rowUrlColumn rowFolderUrlColumn partitionFileNames |
Racchiudi tutto tra virgolette | Determina se racchiudere tutti i valori tra virgolette. | No | true oppure false |
quoteAll |
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à Lookup, vedere Attività Lookup.
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 Attività Delete.
Modalità legacy
Nota
I modelli seguenti sono ancora supportati così come sono 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 |
---|---|---|
type | La proprietà type del set di dati deve essere impostata su FileShare. | Sì |
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. |
Sì |
fileName | Filtro con nome o carattere jolly per i file nell'elemento "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, a indicare che al set di dati non è applicato alcun filtro di attributo di file. Quando modifiedDatetimeStart ha un valore datetime ma modifiedDatetimeEnd è NULL, vengono selezionati i file il cui attributo di ultima modifica è maggiore o uguale al valore datetime. Quando modifiedDatetimeEnd ha un valore datetime ma modifiedDatetimeStart è NULL vengono selezionati i file il cui attributo di ultima modifica è 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, a indicare che al set di dati non è applicato alcun filtro di attributo di file. Quando modifiedDatetimeStart ha un valore datetime ma modifiedDatetimeEnd è NULL, vengono selezionati i file il cui attributo di ultima modifica è maggiore o uguale al valore datetime. Quando modifiedDatetimeEnd ha un valore datetime ma modifiedDatetimeStart è NULL vengono selezionati i file il cui attributo di ultima modifica è 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 dell'attività Copy legacy
Proprietà | Descrizione | Richiesto |
---|---|---|
type | La proprietà type dell'origine attività Copy deve essere impostata su FileSystemSource | Sì |
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>"
}
}
}
]
Contenuto correlato
Per un elenco degli archivi dati supportati come origini e sink dall'attività Copy, vedere gli archivi dati supportati.