Condividi tramite


Copiare dati da Google Cloud Storage usando Azure Data Factory o 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 Google Cloud Storage (GCS). Per altre informazioni, vedere gli articoli introduttivi per Azure Data Factory e Synapse Analytics.

Funzionalità supportate

Il connettore Google Cloud Storage è supportato per le capacità seguenti:

Funzionalità supportate IR
Attività Copy (origine/-) 7.3
Flusso di dati per mapping (origine/-) 1
Attività Lookup 7.3
Attività GetMetadata 7.3
Attività Delete 7.3

① Azure Integration Runtime ② Runtime di integrazione self-hosted

In particolare, il connettore Google Cloud Storage supporta la copia dei file così come sono e l'analisi dei file con i formati di file supportati e i codec di compressione. Sfrutta l'interoperabilità S3 compatibile con GCS.

Prerequisiti

È necessario configurare l'account di Google Cloud Storage come segue:

  1. Abilitare l'interoperabilità per l'account di Google Cloud Storage
  2. Impostare il progetto predefinito, che contiene i dati da copiare dal contenitore GCS di destinazione.
  3. Creare un account del servizio e definire i livelli corretti di autorizzazioni usando la funzione Cloud IAM in GCP.
  4. Generare le chiavi di accesso per questo account del servizio.

Recuperare la chiave di accesso per Google Cloud Storage

Autorizzazioni necessarie

Per copiare dati da Google Cloud Storage, assicurarsi di avere ottenuto le autorizzazioni seguenti per le operazioni sugli oggetti: storage.objects.get e storage.objects.list.

Se si usa l'interfaccia utente per creare, è necessaria un'autorizzazione aggiuntiva storage.buckets.list per operazioni come il test della connessione al servizio collegato e l'esplorazione dalla radice. Se non si vuole concedere questa autorizzazione, è possibile scegliere le opzioni "Test connessione al percorso del file" o "Sfoglia dal percorso specificato" dall'interfaccia utente.

Per l'elenco completo dei ruoli di Google Cloud Storage e delle autorizzazioni associate, vedere Ruoli IAM per Cloud Storage nel sito Google Cloud.

Introduzione

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

Creare un servizio collegato a Google Cloud Storage usando l'interfaccia utente

Seguire questa procedura per creare un servizio collegato a Google Cloud Storage 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 fare clic su Nuovo:

  2. Cercare Google e selezionare il connettore Google Cloud Storage (API S3).

    Selezionare il connettore Google Cloud Storage (API S3).

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

    Configurare un servizio collegato in Google Cloud Storage.

Dettagli di configurazione del connettore

Le sezioni seguenti riportano informazioni dettagliate sulle proprietà che vengono usate per definire entità specifiche di Data Factory per il connettore Google Cloud Storage.

Proprietà del servizio collegato

Per i servizi collegati Google Cloud Storage sono supportate le proprietà seguenti:

Proprietà Descrizione Richiesto
type La proprietà type deve essere impostata su GoogleCloudStorage.
accessKeyId ID della chiave di accesso segreta. Per trovare la chiave di accesso e il segreto, vedere Prerequisiti.
secretAccessKey La stessa chiave di accesso segreta. Contrassegnare questo campo come SecureString per archiviarlo in modo sicuro, oppure fare riferimento a un segreto archiviato in Azure Key Vault.
serviceUrl Specificare l'endpoint GCS personalizzato come https://storage.googleapis.com.
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, il servizio usa il runtime di integrazione di Azure predefinito. No

Ecco un esempio:

{
    "name": "GoogleCloudStorageLinkedService",
    "properties": {
        "type": "GoogleCloudStorage",
        "typeProperties": {
            "accessKeyId": "<access key id>",
            "secretAccessKey": {
                "type": "SecureString",
                "value": "<secret access key>"
            },
            "serviceUrl": "https://storage.googleapis.com"
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

Proprietà del 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 Google Cloud Storage nelle impostazioni location nel set di dati basato su un formato:

Proprietà Descrizione Richiesto
type La proprietà type in location nel set di dati deve essere impostata su GoogleCloudStorageLocation.
bucketName Nome del bucket GCS.
folderPath Percorso della cartella nel bucket specificato. Se si intende usare un carattere jolly per filtrare la cartella, ignorare questa impostazione e specificarla nelle impostazioni di origine dell'attività. No
fileName Nome del file nel bucket e nel percorso della cartella specificati. Se si intende usare un carattere jolly per filtrare i file, ignorare questa impostazione e specificarla nelle impostazioni di origine dell'attività. No

Esempio:

{
    "name": "DelimitedTextDataset",
    "properties": {
        "type": "DelimitedText",
        "linkedServiceName": {
            "referenceName": "<Google Cloud Storage linked service name>",
            "type": "LinkedServiceReference"
        },
        "schema": [ < physical schema, optional, auto retrieved during authoring > ],
        "typeProperties": {
            "location": {
                "type": "GoogleCloudStorageLocation",
                "bucketName": "bucketname",
                "folderPath": "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 di Google Cloud Storage.

Google Cloud Storage come un tipo di 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 Google Cloud Storage nelle impostazioni storeSettings nell'origine copia basata su un formato:

Proprietà Descrizione Richiesto
type La proprietà type in storeSettings deve essere impostata su GoogleCloudStorageReadSettings.
Individuare i file da copiare:
OPZIONE 1: percorso statico
Copia dal percorso del bucket o della cartella/file specificato nel set di dati. Per copiare tutti i file da un bucket o una cartella, specificare anche wildcardFileName come *.
OPZIONE 2: prefisso GCS
- prefisso
Prefisso per il nome della chiave GCS nel bucket specificato configurato nel set di dati per filtrare i file GCS di origine. Le chiavi GCS i cui nomi iniziano con bucket_in_dataset/this_prefix sono selezionate. Usa il filtro lato servizio GCS, che offre prestazioni migliori rispetto a un filtro con caratteri jolly. No
OPZIONE 3: carattere jolly
- wildcardFolderPath
Percorso della cartella con caratteri jolly nel bucket specificato configurato in un set di dati per filtrare le cartelle 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 evitare che il nome della cartella contenga un carattere jolly o tale 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 del bucket e della cartella specificati, oppure nel percorso della cartella con carattere jolly, 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 evitare che il nome del file contenga un carattere jolly o tale carattere di escape. Vedere altri esempi in Esempi di filtro file e cartelle.
OPZIONE 3: 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. Si noti che quando la proprietà recursive è impostata su true e il sink consiste in 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 seguente: ultima modifica.
I file verranno selezionati se l'orario dell'ultima modifica è successivo o uguale alle modifiedDatetimeStart e precedente alle modifiedDatetimeEnd. L'ora viene applicata 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 verrà applicato alcun filtro attributo di file. Quando modifiedDatetimeStart presenta un valore datetime ma modifiedDatetimeEnd è NULL, verranno selezionati i file il cui ultimo attributo modificato sia maggiore o uguale al valore datetime. Quando modifiedDatetimeEnd ha un valore datetime ma modifiedDatetimeStart è NULL verranno selezionati i file il cui ultimo attributo modificato sia 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

Esempio:

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

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.

bucket key recursive Struttura delle cartelle di origine e risultato del filtro (i file in grassetto sono stati recuperati)
bucket Folder*/* false bucket
    CartellaA
        File1.csv
        File2.json
        Sottocartella1
            File3.csv
            File4.json
            File5.csv
    AltraCartellaB
        File6.csv
bucket Folder*/* true bucket
    CartellaA
        File1.csv
        File2.json
        Sottocartella1
            File3.csv
            File4.json
            File5.csv
    AltraCartellaB
        File6.csv
bucket Folder*/*.csv false bucket
    CartellaA
        File1.csv
        File2.json
        Sottocartella1
            File3.csv
            File4.json
            File5.csv
    AltraCartellaB
        File6.csv
bucket Folder*/*.csv true bucket
    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à Copy.

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
bucket
    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:
- Bucket: bucket
- Percorso cartella: FolderA

Nell'origine dell'attività Copy:
- Percorso elenco file: bucket/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 nel flusso di dati per mapping, è possibile leggere file in Google Cloud Storage nei seguenti formati:

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

Trasformazione origine

Nella trasformazione origine è possibile leggere da un contenitore, una cartella o un singolo file in Google Cloud Storage. Usare la scheda Opzioni origine per gestire la modalità di lettura dei file.

Screenshot delle opzioni di origine.

Percorsi con caratteri jolly: l'uso di una sequenza con caratteri jolly indica al servizio di scorrere ogni cartella e file corrispondente in un'unica 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 un 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 Recupera tutti i file CSV in /data/sales.

  • /data/sales/20??/**/ Recupera tutti i file del ventesimo secolo.

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

  • /data/sales/2004/*/12/[XY]1?.csv Recupera tutti i file CSV di dicembre 2004 che iniziano con la lettera X o Y preceduta da un numero a due cifre.

Percorso radice della partizione: se nell'origine file sono presenti cartelle partizionate con un formato key=value (ad esempio year=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.

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.

Screenshot del percorso radice della 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" sarà la stessa cartella della cartella di origine.

Se si dispone di un percorso di origine con carattere jolly, la sintassi avrà un aspetto simile al seguente:

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

È possibile specificare "da" come:

/data/sales

Ed è possibile specificare "a" come:

/backup/priorSales

In questo caso, tutti i file con origine 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.

Filtrare in base all'ultima modifica: è possibile filtrare i file elaborati specificando un intervallo di date relative all'ultima modifica. Tutti gli orari sono indicati nel formato dell'ora UTC.

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

Nel caso in cui, per copiare dati da Google Cloud Storage, si usi un connettore Amazon S3, questo è ancora supportato così com'è per garantire la compatibilità con le versioni precedenti. È consigliabile usare il nuovo modello menzionato in precedenza. L'interfaccia utente di creazione è passata alla generazione del nuovo modello.

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