Copiare dati da e in Azure Data Lake Storage Gen1 tramite 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 copiare dati da e in Azure Data Lake Storage Gen1. Per altre informazioni, leggere l'articolo introduttivo per Azure Data Factory o Azure Synapse Analytics.

Nota

Azure Data Lake Storage Gen1 è stato ritirato il 29 febbraio 2024. Eseguire la migrazione al connettore Azure Data Lake Storage Gen2. Vedere questo articolo per indicazioni sulla migrazione di Azure Data Lake Storage Gen1.

Funzionalità supportate

Questo connettore Azure Data Lake Storage Gen1 è supportato per le funzionalità seguenti:

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

① Azure Integration Runtime ② Runtime di integrazione self-hosted

In particolare, con il connettore è possibile eseguire queste operazioni:

Importante

Se si copiano dati tramite il runtime di integrazione self-hosted, configurare il firewall aziendale in modo da consentire il traffico in uscita verso <ADLS account name>.azuredatalakestore.net e login.microsoftonline.com/<tenant>/oauth2/token sulla porta 443. Quest'ultimo è il servizio token di sicurezza di Azure con cui deve comunicare il runtime di integrazione per ottenere il token di accesso.

Operazioni preliminari

Suggerimento

Per una procedura dettagliata su come usare il connettore Azure Data Lake Storage, vedere Caricare i dati in Azure Data Lake Storage.

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

Creare un servizio collegato ad Azure Data Lake Storage Gen1 usando l'interfaccia utente

Usare la procedura seguente per creare un servizio collegato ad Azure Data Lake Storage Gen1 nell'interfaccia utente del portale di Azure.

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

  2. Cercare Azure Data Lake Storage Gen1 e selezionare il connettore Azure Data Lake Storage Gen1.

    Screenshot del connettore Azure Data Lake Storage Gen1.

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

    Screenshot della configurazione del servizio collegato per Azure Data Lake Storage Gen1.

Dettagli di configurazione del connettore

Le sezioni seguenti contengono informazioni sulle proprietà usate per definire entità specifiche per Azure Data Lake Storage Gen1.

Proprietà del servizio collegato

Per il servizio collegato ad Azure Data Lake Store sono supportate le proprietà seguenti:

Proprietà Descrizione Richiesto
type La proprietà type deve essere impostata su AzureDataLakeStore.
dataLakeStoreUri Informazioni sull'account Azure Data Lake Store. Queste informazioni accettano uno dei seguenti formati: https://[accountname].azuredatalakestore.net/webhdfs/v1 o adl://[accountname].azuredatalakestore.net/.
subscriptionId ID sottoscrizione di Azure a cui l'account Data Lake Store appartiene. Richiesto per il sink
resourceGroupName Nome del gruppo di risorse di Azure a cui l'account Data Lake Store appartiene. Richiesto per il sink
connectVia Runtime di integrazione da usare per la connessione all'archivio dati. È possibile usare Azure Integration Runtime o un runtime di integrazione self-hosted (se l'archivio dati si trova in una rete privata). Se questa proprietà non è specificata, come valore predefinito viene usato Azure Integration Runtime. No

Usare l'autenticazione basata su entità servizio

Per usare l'autenticazione basata sull'entità servizio, eseguire queste operazioni.

  1. Registrare un'entità applicazione in Microsoft Entra ID e concederle l'accesso a Data Lake Storage. Per la procedura dettaglia, vedere Autenticazione da servizio a servizio. Prendere nota dei valori seguenti che si usano per definire il servizio collegato:

    • ID applicazione
    • Chiave applicazione
    • ID tenant
  2. Concedere all'entità servizio l'autorizzazione appropriata. Per gli esempi di funzionamento dell'autorizzazione in Data Lake Storage Gen1, vedere Controllo di accesso in Azure Data Lake Storage Gen1.

    • Come origine: in Esplora dati>Accesso, concedere almeno l'autorizzazione Esecuzione per TUTTE le cartelle upstream, inclusa la cartella radice, oltre all'autorizzazione Lettura per i file da copiare. È possibile scegliere di aggiungere a Questa cartella e tutti gli elementi figlio come ricorsiva, e aggiungere come una voce di autorizzazione di accesso e una voce di autorizzazione predefinita. Non è presente alcun requisito per il controllo di accesso a livello di account (IAM).
    • Come sink: in Esplora dati>Accesso, concedere almeno l'autorizzazione Esecuzione per TUTTE le cartelle upstream, inclusa la cartella radice, oltre all'autorizzazione Scrittura per la cartella sink. È possibile scegliere di aggiungere a Questa cartella e tutti gli elementi figlio come ricorsiva, e aggiungere come una voce di autorizzazione di accesso e una voce di autorizzazione predefinita.

Sono supportate le proprietà seguenti:

Proprietà Descrizione Richiesto
servicePrincipalId Specificare l'ID client dell'applicazione.
servicePrincipalKey Specificare la chiave dell'applicazione. Contrassegnare questo campo come SecureString per archiviarlo in modo sicuro oppure fare riferimento a un segreto archiviato in Azure Key Vault.
tenant Specificare le informazioni sul tenant, ad esempio nome di dominio o ID tenant, in cui si trova l'applicazione. È possibile recuperarlo passando il cursore del mouse sull'angolo superiore destro del portale di Azure.
azureCloudType Per l'autenticazione dell'entità servizio, specificare il tipo di ambiente cloud di Azure in cui è registrata l'applicazione Microsoft Entra.
I valori consentiti sono AzurePublic, AzureChina, AzureUsGovernment e AzureGermany. Per impostazione predefinita, viene usato l'ambiente cloud del servizio.
No

Esempio:

{
    "name": "AzureDataLakeStoreLinkedService",
    "properties": {
        "type": "AzureDataLakeStore",
        "typeProperties": {
            "dataLakeStoreUri": "https://<accountname>.azuredatalakestore.net/webhdfs/v1",
            "servicePrincipalId": "<service principal id>",
            "servicePrincipalKey": {
                "type": "SecureString",
                "value": "<service principal key>"
            },
            "tenant": "<tenant info, e.g. microsoft.onmicrosoft.com>",
            "subscriptionId": "<subscription of ADLS>",
            "resourceGroupName": "<resource group of ADLS>"
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

Usare l'autenticazione dell'identità gestita assegnata dal sistema

Una data factory o un'area di lavoro di Synapse può essere associata a un'identità gestita assegnata dal sistema che rappresenta il servizio per l'autenticazione. È possibile usare direttamente questa identità gestita assegnata dal sistema per l'autenticazione con Data Lake Storage, analogamente a come si usa l'entità servizio. Consente alla risorsa designata di accedere e copiare i dati da e verso Data Lake Storage.

Per usare l'autenticazione dell'identità gestita assegnata dal sistema, seguire questa procedura.

  1. Recuperare l'identità gestita assegnata dal sistema copiando il valore "ID applicazione dell'identità del servizio" generato con la factory o l'area di lavoro Synapse.

  2. Concedere all'identità gestita assegnata dal sistema l'accesso a Data Lake Storage. Per gli esempi di funzionamento dell'autorizzazione in Data Lake Storage Gen1, vedere Controllo di accesso in Azure Data Lake Storage Gen1.

    • Come origine: in Esplora dati>Accesso, concedere almeno l'autorizzazione Esecuzione per TUTTE le cartelle upstream, inclusa la cartella radice, oltre all'autorizzazione Lettura per i file da copiare. È possibile scegliere di aggiungere a Questa cartella e tutti gli elementi figlio come ricorsiva, e aggiungere come una voce di autorizzazione di accesso e una voce di autorizzazione predefinita. Non è presente alcun requisito per il controllo di accesso a livello di account (IAM).
    • Come sink: in Esplora dati>Accesso, concedere almeno l'autorizzazione Esecuzione per TUTTE le cartelle upstream, inclusa la cartella radice, oltre all'autorizzazione Scrittura per la cartella sink. È possibile scegliere di aggiungere a Questa cartella e tutti gli elementi figlio come ricorsiva, e aggiungere come una voce di autorizzazione di accesso e una voce di autorizzazione predefinita.

Non è necessario specificare alcuna proprietà oltre alle informazioni generali di Data Lake Storage nel servizio collegato.

Esempio:

{
    "name": "AzureDataLakeStoreLinkedService",
    "properties": {
        "type": "AzureDataLakeStore",
        "typeProperties": {
            "dataLakeStoreUri": "https://<accountname>.azuredatalakestore.net/webhdfs/v1",
            "subscriptionId": "<subscription of ADLS>",
            "resourceGroupName": "<resource group of ADLS>"
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

Usare l'autenticazione dell'identità gestita assegnata dall'utente

Una data factory può essere assegnata con una o più identità gestite assegnate dall'utente. È possibile usare questa identità gestita assegnata dall'utente per l'autenticazione dell'archiviazione BLOB, che consente di accedere e copiare dati da o in Data Lake Storage. Per altre informazioni sulle identità gestite per le risorse di Azure, vedere Identità gestite per le risorse di Azure

Per usare l'autenticazione dell'identità gestita assegnata dall’utente, seguire questa procedura:

  1. Creare una o più identità gestite assegnate dall'utente e concedere l'accesso ad Azure Data Lake. Per gli esempi di funzionamento dell'autorizzazione in Data Lake Storage Gen1, vedere Controllo di accesso in Azure Data Lake Storage Gen1.

    • Come origine: in Esplora dati>Accesso, concedere almeno l'autorizzazione Esecuzione per TUTTE le cartelle upstream, inclusa la cartella radice, oltre all'autorizzazione Lettura per i file da copiare. È possibile scegliere di aggiungere a Questa cartella e tutti gli elementi figlio come ricorsiva, e aggiungere come una voce di autorizzazione di accesso e una voce di autorizzazione predefinita. Non è presente alcun requisito per il controllo di accesso a livello di account (IAM).
    • Come sink: in Esplora dati>Accesso, concedere almeno l'autorizzazione Esecuzione per TUTTE le cartelle upstream, inclusa la cartella radice, oltre all'autorizzazione Scrittura per la cartella sink. È possibile scegliere di aggiungere a Questa cartella e tutti gli elementi figlio come ricorsiva, e aggiungere come una voce di autorizzazione di accesso e una voce di autorizzazione predefinita.
  2. Assegnare una o più identità gestite assegnate dall'utente alla data factory e creare le credenziali per ogni identità gestita assegnata dall'utente.

La proprietà seguente è supportata:

Proprietà Descrizione Richiesto
credentials Specificare l'identità gestita assegnata dall'utente come oggetto credenziale.

Esempio:

{
    "name": "AzureDataLakeStoreLinkedService",
    "properties": {
        "type": "AzureDataLakeStore",
        "typeProperties": {
            "dataLakeStoreUri": "https://<accountname>.azuredatalakestore.net/webhdfs/v1",
            "subscriptionId": "<subscription of ADLS>",
            "resourceGroupName": "<resource group of ADLS>",
            "credential": {
                "referenceName": "credential1",
                "type": "CredentialReference"
            },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

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.

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 Azure Data Lake Storage Gen1 nelle impostazioni location nel set di dati basato sul formato:

Proprietà Descrizione Richiesto
type La proprietà type in location nel set di dati deve essere impostata su AzureDataLakeStoreLocation.
folderPath Il percorso di una cartella. Se si intende usare un carattere jolly per filtrare le cartelle, ignorare questa impostazione e specificarla nelle impostazioni dell'origine dell'attività. No
fileName Nome del file nel percorso cartella specificato. Se si intende usare un carattere jolly per filtrare i file, ignorare questa impostazione e specificarla nelle impostazioni dell'origine dell'attività. No

Esempio:

{
    "name": "DelimitedTextDataset",
    "properties": {
        "type": "DelimitedText",
        "linkedServiceName": {
            "referenceName": "<ADLS Gen1 linked service name>",
            "type": "LinkedServiceReference"
        },
        "schema": [ < physical schema, optional, auto retrieved during authoring > ],
        "typeProperties": {
            "location": {
                "type": "AzureDataLakeStoreLocation",
                "folderPath": "root/folder/subfolder"
            },
            "columnDelimiter": ",",
            "quoteChar": "\"",
            "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. Questa sezione presenta un elenco delle proprietà supportate dall'origine e dal sink di Azure Data Lake Store.

Azure Data Lake Store 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 Azure Data Lake Storage Gen1 nelle impostazioni storeSettings nell'origine della copia basata sul formato:

Proprietà Descrizione Richiesto
type La proprietà type in storeSettings deve essere impostata su AzureDataLakeStoreReadSettings.
Individuare i file da copiare:
OPZIONE 1: percorso statico
Copia 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: intervallo dei nomi
- listAfter
Recuperare le cartelle/i file il cui nome segue questo valore alfabeticamente (esclusivo). Usa il filtro lato servizio per ADLS Gen1, che offre prestazioni migliori rispetto a un filtro con caratteri jolly.
Il servizio applica questo filtro al percorso definito nel set di dati e è supportato un solo livello di entità. Vedere altri esempi in Esempi di filtro per l'intervallo dei nomi.
No
OPZIONE 2: intervallo dei nomi
- listBefore
Recuperare le cartelle/i file il cui nome precede questo valore alfabeticamente (inclusivo). Usa il filtro lato servizio per ADLS Gen1, che offre prestazioni migliori rispetto a un filtro con caratteri jolly.
Il servizio applica questo filtro al percorso definito nel set di dati e è supportato un solo livello di entità. Vedere altri esempi in Esempi di filtro per l'intervallo dei nomi.
No
OPZIONE 3: 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 caratteri o a un carattere singolo). Usare ^ come carattere di escape se il nome effettivo della cartella include caratteri jolly o questo carattere di escape.
Vedere altri esempi in Esempi di filtro file e cartelle.
No
OPZIONE 3: carattere jolly
- wildcardFileName
Nome file con caratteri jolly nel percorso folderPath/wildcardFolderPath specificato per filtrare i file di origine.
I caratteri jolly consentiti sono: * (corrispondenza di zero o più caratteri) e ? (corrispondenza di zero caratteri o di un carattere singolo). Usare ^ per il carattere escape se il nome effettivo del file include caratteri jolly o escape. Vedere altri esempi in Esempi di filtro file e cartelle.
OPZIONE 4: un elenco di file
- fileListPath
Indica di copiare un determinato set di file. Puntare a un file di testo che include un elenco di file da copiare, un file per riga, che rappresenta 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 avviene per file, quindi quando l'attività Copy non riesce, si vedranno alcuni file già copiati nella destinazione ed eliminati dall'origine, mentre altri rimangono ancora nell'archivio di origine.
Questa proprietà è valida solo nello scenario di copia dei file binari. Il valore predefinito è false.
No
modifiedDatetimeStart Filtro di file basato sull'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 con il fuso orario UTC e il formato "2018-12-01T05:00:00Z".
Le proprietà possono essere NULL, a indicare che al set di dati non viene applicato alcun filtro di attributo di file. Quando modifiedDatetimeStart ha un valore datetime ma modifiedDatetimeEnd è NULL, vengono selezionati i file con l'attributo Ultima modifica maggiore o uguale al valore datetime. Quando modifiedDatetimeEnd ha un valore datetime ma modifiedDatetimeStart è NULL vengono selezionati i file con l'attributo 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 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 genera 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 viene 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

Esempio:

"activities":[
    {
        "name": "CopyFromADLSGen1",
        "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": "AzureDataLakeStoreReadSettings",
                    "recursive": true,
                    "wildcardFolderPath": "myfolder*A",
                    "wildcardFileName": "*.csv"
                }
            },
            "sink": {
                "type": "<sink type>"
            }
        }
    }
]

Azure Data Lake Store 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 Azure Data Lake Storage Gen1 nelle impostazioni storeSettings nel sink di copia basato sul formato:

Proprietà Descrizione Richiesto
type La proprietà type in storeSettings deve essere impostata su AzureDataLakeStoreWriteSettings.
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
expiryDateTime Specifica il momento di scadenza dei file scritti. La scadenza viene applicata in orario UTC nel formato "2020-03-01T08:00:00Z". Per impostazione predefinita è NULL e ciò significa che i file scritti non scadono mai. 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": "CopyToADLSGen1",
        "type": "Copy",
        "inputs": [
            {
                "referenceName": "<input dataset name>",
                "type": "DatasetReference"
            }
        ],
        "outputs": [
            {
                "referenceName": "<Parquet output dataset name>",
                "type": "DatasetReference"
            }
        ],
        "typeProperties": {
            "source": {
                "type": "<source type>"
            },
            "sink": {
                "type": "ParquetSink",
                "storeSettings":{
                    "type": "AzureDataLakeStoreWriteSettings",
                    "copyBehavior": "PreserveHierarchy"
                }
            }
        }
    }
]

Esempi di filtro per l'intervallo dei nomi

In questa sezione viene descritto il comportamento risultante dei filtri per l'intervallo di nomi.

Esempio di struttura di origine Impostazione Risultato
root
    a
        file.csv
    ax
        file2.csv
    ax.csv
    b
        file3.csv
    bx.csv
    c
        file4.csv
    cx.csv
Nel set di dati:
- Percorso cartella: root

Nell'origine dell'attività Copy:
- Elenca dopo: a
- Elenca prima: b
Vengono quindi copiati i file seguenti:

root
    ax
        file2.csv
    ax.csv
    b
        file3.csv

Esempi di filtro file e cartelle

Questa sezione descrive il comportamento risultante del percorso cartella e del nome del file con i filtri con caratteri jolly.

folderPath fileName recursive Struttura delle cartelle di origine e risultato del filtro (i file in grassetto sono stati recuperati)
Folder* (vuoto, usare il valore predefinito) false CartellaA
    File1.csv
    File2.json
    Sottocartella1
        File3.csv
        File4.json
        File5.csv
AltraCartellaB
    File6.csv
Folder* (vuoto, usare il 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 sezione descrive il comportamento risultante dall'uso del percorso di elenco file nell'origine dell'attività di copia.

Si supponga di disporre della struttura di cartelle di origine seguente e di voler copiare i file in grassetto:

Esempio di struttura di origine Contenuto in FileListToCopy.txt Impostazione
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.

Esempi di comportamento dell'operazione di copia

Questa sezione descrive il comportamento risultante dell'operazione di copia per diverse combinazioni di valori recursive e copyBehavior.

recursive copyBehavior Struttura della cartella di origine Destinazione risultante
true preserveHierarchy Cartella1
    File1
    File2
    Sottocartella1
        File3
        File4
        File5
La Cartella1 di destinazione viene creata con la stessa struttura dell'origine:

Cartella1
    File1
    File2
    Sottocartella1
        File3
        File4
        File5.
true flattenHierarchy Cartella1
    File1
    File2
    Sottocartella1
        File3
        File4
        File5
La Cartella1 di destinazione viene creata con la struttura seguente:

Cartella1
    Nome generato automaticamente per File1
    Nome generato automaticamente per File2
    Nome generato automaticamente per File3
    Nome generato automaticamente per File4
    Nome generato automaticamente per File5
true mergeFiles Cartella1
    File1
    File2
    Sottocartella1
        File3
        File4
        File5
La Cartella1 di destinazione viene creata con la struttura seguente:

Cartella1
    Il contenuto di File1 + File2 + File3 + File4 + File 5 viene unito in un file con nome generato automaticamente.
false preserveHierarchy Cartella1
    File1
    File2
    Sottocartella1
        File3
        File4
        File5
La Cartella1 di destinazione viene creata con la struttura seguente:

Cartella1
    File1
    File2

La sottocartella1 con File3, File4 e File5 non viene considerata.
false flattenHierarchy Cartella1
    File1
    File2
    Sottocartella1
        File3
        File4
        File5
La Cartella1 di destinazione viene creata con la struttura seguente:

Cartella1
    Nome generato automaticamente per File1
    Nome generato automaticamente per File2

La sottocartella1 con File3, File4 e File5 non viene considerata.
false mergeFiles Cartella1
    File1
    File2
    Sottocartella1
        File3
        File4
        File5
La Cartella1 di destinazione viene creata con la struttura seguente:

Cartella1
    Il contenuto di File1 + File2 viene unito in un file con nome generato automaticamente. Nome generato automaticamente per File1

La sottocartella1 con File3, File4 e File5 non viene considerata.

Mantenere elenchi di controllo di accesso per Data Lake Storage Gen2

Suggerimento

Per copiare i dati da Azure Data Lake Storage Gen1 in Gen2 in generale, vedere la procedura dettagliata e le procedure consigliate in Copiare dati da Azure Data Lake Storage Gen1 a Gen2.

Se si desidera replicare gli elenchi di controllo di accesso (ACL) insieme ai file di dati quando si esegue l'aggiornamento da Data Lake Storage Gen1 a Data Lake Storage Gen2, vedere Mantenere gli elenchi di controllo di accesso da Data Lake Storage Gen1.

Proprietà del flusso di dati per mapping

Quando si trasformano i dati nei flussi di dati per mapping, è possibile leggere e scrivere file da Azure Data Lake Storage Gen1 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 di mapping e Trasformazione sink nel flusso di dati di mapping.

Trasformazione origine

Nella trasformazione origine è possibile leggere da un contenitore, una cartella o un singolo file in Azure Data Lake Storage Gen1. La scheda Source options (Opzioni origine) consente di gestire la modalità di lettura dei file.

Screenshot della scheda opzioni di origine nella trasformazione origine del flusso di dati per mapping.

Percorso con caratteri jolly: l'uso di una sequenza con caratteri jolly indica al servizio di scorrere ogni cartella e file corrispondente in una singola trasformazione origine. Si tratta di un modo efficace per elaborare più file all'interno di un singolo flusso. Aggiungere più sequenze di corrispondenza con caratteri jolly con il segno + visualizzato quando si passa il mouse sulla sequenza con caratteri jolly esistente.

Nel contenitore di origine scegliere una serie di file che corrispondono a un criterio. Nel set di dati è possibile specificare solo il contenitore. Il percorso con caratteri jolly deve quindi includere anche il percorso della cartella a partire dalla cartella radice.

Esempi di caratteri jolly:

  • * Rappresenta qualsiasi set di caratteri

  • ** Rappresenta l'annidamento delle directory ricorsive

  • ? Sostituisce un carattere

  • [] Trova la corrispondenza di uno o più caratteri nelle parentesi quadre

  • /data/sales/**/*.csv Ottiene tutti i dati CSV in /data/sales

  • /data/sales/20??/**/ Recupera tutti i file in modo ricorsivo all'interno di tutte le cartelle 20xx corrispondenti

  • /data/sales/*/*/*.csv Ottiene i file CSV due livelli sotto /data/sales

  • /data/sales/2004/12/[XY]1?.csv Recupera tutti i file CSV da dicembre 2004 che iniziano con X o Y, seguiti da 1 e da qualsiasi carattere singolo

Percorso radice della partizione: se nell'origine file sono presenti cartelle partizionate con un formato key=value (ad esempio, anno=2019), è possibile assegnare il livello principale dell'albero delle cartelle di tale partizione a un nome di colonna nel flusso di dati.

Impostare innanzitutto un carattere jolly per includere tutti i percorsi che rappresentano le cartelle partizionate, nonché i file foglia da leggere.

Screenshot delle impostazioni del file di origine della partizione nella trasformazione origine del flusso di dati per mapping.

Usare l'impostazione Partition Root Path (Percorso radice partizione) per definire il livello superiore della struttura di cartelle. Quando si visualizza il contenuto dei dati tramite un'anteprima, si noti che il servizio aggiunge le partizioni risolte presenti in ogni livello di cartelle.

Partition Root Path (Percorso radice partizione)

Elenco di file: questo è un 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.

Colonna per archiviare il nome file: archiviare il nome del file di origine in una colonna nei dati. Immettere un nuovo nome di colonna per archiviare la stringa del nome file.

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.

Per spostare i file di origine in un altro percorso dopo l'elaborazione, selezionare "Sposta" come operazione sul file. Impostare quindi la directory "da". Se non si usano caratteri jolly per il percorso, l'impostazione "da" è la stessa cartella della cartella di origine.

Nel caso di un percorso di origine con carattere jolly, la sintassi sarà simile alla seguente:

/data/sales/20??/**/*.csv

È possibile specificare "da" come

/data/sales

E "a" come

/backup/priorSales

In questo caso, tutti i file originati in/data/sales vengono spostati in /backup/priorSales.

Nota

Le operazioni sui file vengono eseguite solo quando si avvia il flusso di dati da un'esecuzione di pipeline (esecuzione del debug o esecuzione della pipeline) che usa l'attività di esecuzione del flusso di dati in una pipeline. Le operazioni sui file non vengono eseguite in modalità di debug del flusso di dati.

Filtra per data ultima modifica: è possibile filtrare i file da elaborare specificando un intervallo di date per l'ultima modifica. Tutte le ore e le date sono in formato UTC.

Abilita Change Data Capture: se true, si otterranno solo i file nuovi o modificati dall'ultima esecuzione. Nella prima esecuzione verrà sempre eseguito il caricamento iniziale dei dati snapshot completi, seguito dall'acquisizione di file nuovi o modificati solo nelle esecuzioni successive. Per altri dettagli, vedere Change Data Capture.

Screenshot che mostra l'opzione Abilita Change Data Capture.

Proprietà sink

Nella trasformazione sink è possibile scrivere in un contenitore oppure in una cartella in Azure Data Lake Storage Gen1. La scheda Settings (Impostazioni) consente di gestire la modalità di scrittura dei file.

Opzioni sink

Cancellare la cartella: determina se la cartella di destinazione viene cancellata o meno prima della scrittura dei dati.

Opzione nome file: determina la modalità di denominazione dei file finali nella cartella di destinazione. Le opzioni di nomi di file sono indicate di seguito:

  • Impostazione predefinita: consente a Spark di denominare i file in base alle impostazioni predefinite di PART.
  • Modello: consente di immettere un modello che enumera i file di output per partizione. prestiti[n].csv, ad esempio, crea prestiti1.csv, prestiti2.csv e così via.
  • Per partizione: consente di immettere un nome di file per partizione.
  • Come dati nella colonna: consente di impostare il file di output sul valore di una colonna. Il percorso è relativo al contenitore del set di dati e non alla cartella di destinazione. Se nel set di dati è presente un percorso di cartella, quest'ultimo viene ignorato.
  • Output in un singolo file: consente di combinare i file di output partizionati in un singolo file denominato. Il percorso è relativo alla cartella del set di dati. Tenere presente che l'operazione di merge può avere esito negativo a seconda della dimensione del nodo. Questa opzione non è consigliata per i set di dati di grandi dimensioni.

Racchiudi tutto tra virgolette: determina se racchiudere tutti i valori tra virgolette

Proprietà dell'attività Lookup

Per altre informazioni sulle proprietà, vedere Attività Lookup.

Proprietà dell'attività GetMetadata

Per altre informazioni sulle proprietà, vedere Attività GetMetadata

Proprietà dell'attività Delete

Per altre informazioni sulle proprietà, vedere Attività Delete

Modalità legacy

Nota

I modelli seguenti sono ancora supportati così come sono per la compatibilità con le versioni precedenti. In futuro, è consigliabile usare il nuovo modello citato nelle sezioni precedenti, tenendo presente che 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 AzureDataLakeStoreFile.
folderPath Percorso della cartella in Data Lake Store. Se il valore non è specificato, punta alla radice.

Il filtro con caratteri jolly è supportato. I caratteri jolly consentiti sono * (corrispondenza di zero o più caratteri) e ? (corrispondenza di zero caratteri o di un carattere singolo). Usare ^ per applicare una sequenza di escape se il nome effettivo della cartella include caratteri jolly o tale carattere di escape.

Esempio: cartellaradice/sottocartella/. Vedere altri esempi in Esempi di filtro file e cartelle.
No
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 un filtro, i caratteri jolly consentiti sono * (corrispondenza di zero o più caratteri) e ? (corrispondenza di zero caratteri o di un carattere singolo).
- Esempio 1: "fileName": "*.csv"
- Esempio 2: "fileName": "???20180427.txt"
Usare ^ per applicare una sequenza di escape se il nome effettivo del file include caratteri jolly o tale carattere di escape.

Se non si specifica fileName per un set di dati di output e non si specifica preserveHierarchy nel sink dell'attività, l'attività Copy genera automaticamente il nome del file in base al modello seguente: "Data.[GUID ID esecuzione attività].[GUID se FlattenHierarchy].[formato se configurato].[compressione se configurata]", ad esempio, "Data.0a405f8a-93ff-4c6f-b3be-f69616f1df7a.txt.gz". Se si esegue la copia da un'origine in formato tabulare usando un nome di tabella anziché una query, il modello di nome è "[nome tabella].[formato].[compressione se configurata]", ad esempio "MiaTabella.csv".
No
modifiedDatetimeStart Filtro di file basato sull'ultima modifica dell'attributo. I file vengono selezionati se l'ora dell'ultima modifica è maggiore o uguale a modifiedDatetimeStart e minore di modifiedDatetimeEnd. L'ora viene applicata in base al fuso orario UTC nel formato "2018-12-01T05:00:00Z".

Le prestazioni complessive dello spostamento dei dati sono interessate dall'abilitazione di questa impostazione quando si intende applicare un filtro a grandi quantità di file.

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

Le prestazioni complessive dello spostamento dei dati sono interessate dall'abilitazione di questa impostazione quando si intende applicare un filtro a grandi quantità di file.

Le proprietà possono essere NULL, a indicare che al set di dati non viene applicato alcun filtro di attributo di file. Quando modifiedDatetimeStart ha un valore datetime ma modifiedDatetimeEnd è NULL, vengono selezionati i file il cui ultimo attributo modificato è maggiore o uguale al valore datetime. Quando modifiedDatetimeEnd ha un valore datetime ma modifiedDatetimeStart è NULL 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.

Se si vuole analizzare o generare file con un formato specifico, sono supportati i tipi di formato seguenti: TextFormat, JsonFormat, AvroFormat, OrcFormat e ParquetFormat. Impostare la proprietà type in format su uno di questi valori. Per altre informazioni, vedere le sezioni Formato testo, Formato JSON, Formato AVRO, Formato OCR 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 determinato nome, specificare folderPath con un percorso di cartella e fileName con un nome file.
Per copiare un subset di file in una cartella, specificare folderPath con un percorso di cartella e fileName con un filtro con caratteri jolly.

Esempio:

{
    "name": "ADLSDataset",
    "properties": {
        "type": "AzureDataLakeStoreFile",
        "linkedServiceName":{
            "referenceName": "<ADLS linked service name>",
            "type": "LinkedServiceReference"
        },
        "typeProperties": {
            "folderPath": "datalake/myfolder/",
            "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à di copia legacy

Proprietà Descrizione Richiesto
type La proprietà type dell'origine dell'attività di copia deve essere impostato su AzureDataLakeStoreSource.
recursive Indica se i dati vengono letti in modo ricorsivo dalle cartelle secondarie o solo dalla cartella specificata. Quando recursive è impostata su true e il sink è un archivio basato su file, una cartella o una sottocartella vuota non viene copiata né creata nel sink. I valori consentiti sono true (predefinito) 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": "CopyFromADLSGen1",
        "type": "Copy",
        "inputs": [
            {
                "referenceName": "<ADLS Gen1 input dataset name>",
                "type": "DatasetReference"
            }
        ],
        "outputs": [
            {
                "referenceName": "<output dataset name>",
                "type": "DatasetReference"
            }
        ],
        "typeProperties": {
            "source": {
                "type": "AzureDataLakeStoreSource",
                "recursive": true
            },
            "sink": {
                "type": "<sink type>"
            }
        }
    }
]

Modello di sink dell'attività di copia legacy

Proprietà Descrizione Richiesto
type La proprietà type del sink dell'attività di copia deve essere impostata su AzureDataLakeStoreSink.
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, il nome del file viene 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

Esempio:

"activities":[
    {
        "name": "CopyToADLSGen1",
        "type": "Copy",
        "inputs": [
            {
                "referenceName": "<input dataset name>",
                "type": "DatasetReference"
            }
        ],
        "outputs": [
            {
                "referenceName": "<ADLS Gen1 output dataset name>",
                "type": "DatasetReference"
            }
        ],
        "typeProperties": {
            "source": {
                "type": "<source type>"
            },
            "sink": {
                "type": "AzureDataLakeStoreSink",
                "copyBehavior": "PreserveHierarchy"
            }
        }
    }
]

Change Data Capture (anteprima)

Azure Data Factory può ottenere file nuovi o modificati solo da Azure Data Lake Storage Gen1 abilitando Abilita Change Data Capture (anteprima) nella trasformazione dell'origine del flusso di dati per mapping. Con questa opzione del connettore è possibile leggere solo file nuovi o aggiornati e applicare trasformazioni prima di caricare i dati trasformati nei set di dati di destinazione desiderati.

Assicurarsi di mantenere invariato il nome della pipeline e dell'attività, in modo che il checkpoint possa essere sempre registrato dall'ultima esecuzione per ottenere le modifiche. Se si modifica il nome della pipeline o il nome dell'attività, il checkpoint verrà reimpostato e si comincerà dall'inizio nell'esecuzione successiva.

Abilita Change Data Capture (anteprima)funziona anche quando si esegue il debug della pipeline. Il checkpoint viene reimpostato quando si aggiorna il browser durante l'esecuzione del debug. Quando il risultato dall'esecuzione del debug è soddisfacente, è possibile pubblicare e attivare la pipeline. Comincerà sempre dall'inizio indipendentemente dal checkpoint precedente registrato dall'esecuzione di debug.

Nella sezione di monitoraggio, è sempre possibile eseguire nuovamente una pipeline. Quando si esegue questa operazione, le modifiche vengono sempre ottenute dal record del checkpoint nell'esecuzione della pipeline selezionata.

Per un elenco degli archivi dati supportati come origini e sink dall'attività Copy, vedere Archivi dati supportati.