Condividi tramite


Creare pipeline di copia dati su larga scala con un approccio basato sui metadati nello strumento di copia dati

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!

Quando si desidera copiare grandi quantità di oggetti (ad esempio migliaia di tabelle) o caricare dati da un'ampia gamma di origini, l'approccio appropriato consiste nell'immettere l'elenco dei nomi degli oggetti con comportamenti di copia necessari in una tabella di controllo e quindi usare pipeline con parametri per leggere la stessa dalla tabella di controllo e applicarle di conseguenza ai processi. In questo modo, è possibile mantenere (ad esempio, aggiungere/rimuovere) l'elenco di oggetti da copiare facilmente aggiornando i nomi degli oggetti nella tabella di controllo anziché ridistribuendo le pipeline. Inoltre, sarà disponibile un solo punto per verificare facilmente quali oggetti sono stati copiati da quali pipeline o trigger, con comportamenti di copia definiti.

Lo strumento Copia dati in Azure Data Factory semplifica il percorso di compilazione di pipeline di copia dei dati basate su metadati. Dopo aver eseguito un flusso intuitivo da un'esperienza basata su procedura guidata, lo strumento può generare pipeline con parametri e script SQL per creare di conseguenza tabelle di controllo esterne. Dopo aver eseguito gli script generati per creare la tabella di controllo nel database SQL, le pipeline leggeranno i metadati dalla tabella di controllo e li applicheranno automaticamente ai processi di copia.

Creare processi di copia guidati dai metadati utilizzando lo strumento di copia dati

  1. Selezionare l'attività di copia guidata dai metadati nello strumento copia dati.

    È necessario immettere la connessione e il nome della tabella di controllo, in modo che la pipeline generata legga i metadati da tale tabella.

    Seleziona tipo di attività

  2. Immettere la connessione del database di origine. È anche possibile usare un servizio collegato con parametri.

    Selezionare un servizio collegato con parametri

  3. Selezionare il nome della tabella da copiare.

    Seleziona tabella

    Nota

    Se si seleziona l'archivio dati tabulare, sarà possibile selezionare ulteriormente il caricamento completo o il caricamento differenziale nella pagina successiva. Se si seleziona l'archivio di archiviazione, è possibile selezionare il caricamento completo solo nella pagina successiva. Il caricamento incrementale di nuovi file solo dall'archivio di archiviazione non è attualmente supportato.

  4. Scegliere il comportamento di caricamento.

    Suggerimento

    Per eseguire la copia completa in tutte le tabelle, selezionare Caricamento completo di tutte le tabelle. Se si vuole eseguire la copia incrementale, è possibile selezionare configurare per ogni tabella singolarmente e selezionare Carico differenziale, nonché il nome della colonna watermark e il valore da avviare per ogni tabella.

  5. Selezionare Archivio dati di destinazione.

  6. Nella pagina Impostazioni è possibile decidere il numero massimo di attività di copia da copiare i dati dall'archivio di origine contemporaneamente tramite Numero di attività di copia simultanee. Il valore predefinito è 20.

    Pagina delle impostazioni

  7. Dopo la distribuzione della pipeline, è possibile copiare o scaricare gli script SQL dall'interfaccia utente per creare una tabella di controllo e una procedura di archiviazione.

    Scaricare gli script

    Verranno visualizzati due script SQL.

    • Il primo script SQL viene usato per creare due tabelle di controllo. La tabella di controllo principale archivia l'elenco delle tabelle, il percorso del file o i comportamenti di copia. La tabella di controllo connessione archivia il valore di connessione dell'archivio dati se è stato usato un servizio collegato con parametri.
    • Il secondo script SQL viene usato per creare una stored procedure. Viene usato per aggiornare il valore limite nella tabella di controllo principale quando i processi di copia incrementale vengono completati ogni volta.
  8. Apri SSMS per connetterti al server delle tabelle di controllo ed esegui i due script SQL per creare le tabelle di controllo e la stored procedure.

    Creare uno script della tabella di controllo

  9. Eseguire una query sulla tabella di controllo principale e sulla tabella di controllo della connessione per esaminare i metadati in esso contenuti.

    Tabella di controllo principaleScript della tabella di controllo query1

    Tabella di controllo della connessioneScript della tabella di controllo della query2

  10. Tornare al portale di Azure Data Factory per visualizzare ed eseguire il debug delle pipeline. Verrà visualizzata una cartella creata con il nome "MetadataDrivenCopyTask_#########". Fare clic sulla pipeline denominata "MetadataDrivenCopyTask###_TopLevel" e fare clic su esegui debug.

    È necessario immettere i parametri seguenti:

    Nome dei parametri Descrizione
    NumeroMassimoDiAttivitàConcurrenti È sempre possibile modificare il numero massimo di attività di copia simultanee eseguite prima dell'esecuzione della pipeline. Il valore predefinito sarà quello immesso nello strumento copia dati.
    MainControlTableName È sempre possibile modificare il nome della tabella di controllo principale, in modo che la pipeline ottenga i metadati da tale tabella prima dell'esecuzione.
    ConnectionControlTableName È sempre possibile modificare il nome della tabella del controllo connessione (facoltativo), in modo che la pipeline ottenga i metadati correlati alla connessione all'archivio dati prima dell'esecuzione.
    NumeroMassimoDiOggettiRestituitiDaLookupAttività Per evitare di raggiungere il limite dell'attività di ricerca di output, è possibile definire il numero massimo di oggetti restituiti dall'attività di ricerca. Nella maggior parte dei casi, non è necessario modificare il valore predefinito.
    windowStart Quando si inserisce un valore dinamico (ad esempio, aaaa/mm/gg) come percorso della cartella, il parametro viene usato per passare il tempo di trigger corrente alla pipeline per riempire il percorso della cartella dinamica. Quando la pipeline viene attivata dal trigger di pianificazione o dal trigger di windows a cascata, gli utenti non devono immettere il valore di questo parametro. Valore di esempio: 2021-01-25T01:49:28Z
  11. Abilitare il trigger per rendere operative le pipeline.

    Abilitare il trigger

Aggiornare la tabella di controllo tramite lo strumento copia dati

È sempre possibile aggiornare direttamente la tabella di controllo aggiungendo o rimuovendo l'oggetto da copiare o modificando il comportamento di copia per ogni tabella. Creiamo anche l'esperienza dell'interfaccia utente nello strumento copia dati per semplificare il percorso di modifica della tabella di controllo.

  1. Fare clic con il pulsante destro del mouse sulla pipeline di primo livello: MetadataDrivenCopyTask_xxx_TopLevel e quindi scegliere Modifica tabella di controllo.

    Modifica tabella di controllo1

  2. Selezionare le righe dalla tabella di controllo da modificare.

    Modifica tabella di controllo2

  3. Attraversa lo strumento di copia dati e verrà generato un nuovo script SQL per te. Eseguire di nuovo lo script SQL per aggiornare la tabella di controllo.

    Modifica tabella di controllo3

    Nota

    La pipeline non verrà ridistribuita. Il nuovo script SQL creato consente di aggiornare solo la tabella di controllo.

Tabelle di controllo

Tabella di controllo principale

Ogni riga della tabella di controllo contiene i metadati per un oggetto (ad esempio, una tabella) da copiare.

Nome colonna Descrizione
Identificativo ID univoco dell'oggetto da copiare.
SourceObjectSettings Metadati del set di dati di origine. Può essere il nome dello schema, il nome della tabella e così via. Ecco un esempio.
SourceConnectionSettingsName Nome dell'impostazione di connessione di origine nella tabella di controllo della connessione. Questo passaggio è facoltativo.
CopiaImpostazioniFonte Metadati della proprietà di origine nell'attività di copia. Può essere una query, partizioni, o così via. Ecco un esempio.
SinkObjectSettings Metadati del set di dati di destinazione. Può essere il nome file, il percorso della cartella, il nome della tabella e così via. Ecco un esempio. Se si specifica il percorso della cartella dinamica, il valore della variabile non verrà scritto qui nella tabella dei controlli.
SinkConnectionSettingsName Nome dell'impostazione di connessione di destinazione nella tabella di controllo connessione. Questo passaggio è facoltativo.
ImpostazioniDiCopiaSink Metadati della proprietà sink nell'attività di copia. Può essere preCopyScript, tableOption e così via. Ecco un esempio.
CopyActivitySettings Metadati della funzionalità translator nell'attività di copia. Viene usato per definire la mappatura delle colonne.
TopLevelPipelineName Nome della Top Pipeline, che può copiare questo oggetto.
TriggerName Nome del trigger, che può attivare la pipeline per copiare questo oggetto. Quando viene eseguito il debug, il nome è Sandbox. Se l'esecuzione è manuale, il nome è Manual. Se l'esecuzione è pianificata, il nome è quello del trigger associato. Possono essere inseriti più nomi.
DataLoadingBehaviorSettings Caricamento completo e caricamento differenziale.
TaskId Ordine degli oggetti da copiare dopo TaskId nella tabella di controllo (ORDER BY [TaskId] DESC). Se sono presenti enormi quantità di oggetti da copiare, ma solo un numero limitato di copie simultanee consentite, è possibile modificare l'Id attività per ogni oggetto per decidere quali oggetti possono essere copiati in precedenza. Il valore predefinito è 0.
Copia Abilitata Specificare se l'elemento è abilitato nel processo di inserimento dati. Valori consentiti: 1 (abilitato), 0 (disabilitato). Il valore predefinito è 1.

Tabella di controllo della connessione

Ogni riga nella tabella di controllo contiene un'impostazione di connessione per l'archivio dati.

Nome colonna Descrizione
Name Nome della connessione con parametri nella tabella di controllo principale.
Impostazioni di Connessione Impostazioni di connessione. Può essere nome del database, nome del server e così via.

Pipeline

Verranno visualizzati tre livelli di pipeline generati dallo strumento di copia dei dati.

MetadataDrivenCopyTask_xxx_TopLevel

Questa pipeline calcolerà il numero totale di oggetti (tabelle e così via) da copiare in questa esecuzione, verrà visualizzato il numero di batch sequenziali in base al numero massimo consentito di attività di copia simultanea consentita e quindi eseguirà un'altra pipeline per copiare batch diversi in sequenza.

Parametri

Nome dei parametri Descrizione
MaxNumberOfConcurrentTasks È sempre possibile modificare il numero massimo di attività di copia simultanee eseguite prima dell'esecuzione della pipeline. Il valore predefinito sarà quello immesso nello strumento copia dati.
MainControlTableName Nome della tabella di controllo principale. La pipeline otterrà i metadati da questa tabella prima dell'esecuzione
ConnectionControlTableName Nome della tabella della tabella di controllo connessione (facoltativo). La pipeline otterrà i metadati correlati alla connessione all'archivio dati prima dell'esecuzione
NumeroMassimoDiOggettiRestituitiDallAttivitàDiRicerca Per evitare di raggiungere il limite dell'attività di ricerca di output, è possibile definire il numero massimo di oggetti restituiti dall'attività di ricerca. Nella maggior parte dei casi, non è necessario modificare il valore predefinito.
windowStart Quando si inserisce un valore dinamico (ad esempio, aaaa/mm/gg) come percorso della cartella, il parametro viene usato per passare il tempo di trigger corrente alla pipeline per riempire il percorso della cartella dinamica. Quando la pipeline viene attivata da un trigger pianificato o da un trigger a finestra scorrevole, gli utenti non devono inserire il valore del parametro. Valore di esempio: 2021-01-25T01:49:28Z

Attività

Nome dell'attività Tipo di impegno Descrizione
OttieniLaSommaDegliOggettiDaCopiare Ricerca Calcolare il numero totale di oggetti (tabelle e così via) da copiare in questa esecuzione.
CopiaLottiDiOggettiInSequenza ForEach Ottenere il numero di batch sequenziali in base al numero massimo consentito di attività di copia simultanee e quindi eseguire un'altra pipeline per copiare batch diversi in sequenza.
CopyObjectsInOneBatch Esegui la pipeline Eseguire un'altra pipeline per copiare un batch di oggetti. Gli oggetti appartenenti a questo batch verranno copiati in parallelo.

MetadataDrivenCopyTask_xxx_ MiddleLevel

Questa pipeline copierà una serie di oggetti. Gli oggetti appartenenti a questo batch verranno copiati in parallelo.

Parametri

Nome dei parametri Descrizione
NumeroMassimoDiOggettiRestituitiDallAttivitàDiLookup Per evitare di raggiungere il limite dell'attività di ricerca di output, è possibile definire il numero massimo di oggetti restituiti dall'attività di ricerca. Nella maggior parte dei casi, non è necessario modificare il valore predefinito.
TopLevelPipelineName Nome della pipeline di livello superiore.
TriggerName Nome del trigger.
NumeroSequenzialeCorrenteDelLotto ID del batch sequenziale.
SumOfObjectsToCopy Numero totale di oggetti da copiare.
SommaDiOggettiDaCopiarePerBatchCorrente Numero di oggetti da copiare nel batch corrente.
MainControlTableName Nome della tabella di controllo principale.
ConnectionControlTableName Nome della tabella di controllo connessione.

Attività

Nome dell'attività Tipo di impegno Descrizione
DividereUnLottoInPiùGruppi ForEach Dividere gli oggetti da un singolo batch in più gruppi paralleli per evitare di raggiungere il limite di output dell'attività di ricerca.
OttieniOggettiPerGruppoDaCopiare Ricerca Ottenere oggetti (tabelle e così via) dalla tabella di controllo da copiare in questo gruppo. Ordine degli oggetti da copiare dopo TaskId nella tabella di controllo (ORDER BY [TaskId] DESC).
CopiaOggettiInUnGruppo Esegui la pipeline Eseguire un'altra pipeline per copiare oggetti da un gruppo. Gli oggetti appartenenti a questo gruppo verranno copiati in parallelo.

MetadataDrivenCopyTask_xxx_ BottomLevel

Questa pipeline copierà gli oggetti da un gruppo all'altro. Gli oggetti appartenenti a questo gruppo verranno copiati in parallelo.

Parametri

Nome dei parametri Descrizione
OggettiPerGruppoDaCopiare Numero di oggetti da copiare nel gruppo corrente.
ConnectionControlTableName Nome della tabella di controllo connessione.
windowStart Usato per passare l'ora di attivazione corrente alla pipeline per compilare il percorso della cartella dinamica, se configurato dall'utente.

Attività

Nome dell'attività Tipo di impegno Descrizione
ListObjectsFromOneGroup ForEach Elencare gli oggetti di un gruppo ed eseguire l'iterazione di ciascuno di essi nelle attività downstream.
Instrada Compiti Basati su Comportamento di Caricamento Interruttore Controllare il comportamento di caricamento per ogni oggetto. Se si tratta di un caso predefinito o di FullLoad, eseguire il caricamento completo. Se si tratta di un caso DeltaLoad, eseguire il caricamento incrementale tramite la colonna filigrana per identificare le modifiche
CaricaCompletamenteUnOggetto Copia Creare uno snapshot completo su questo oggetto e copiarlo nella destinazione.
DeltaLoadOneObject Copia Copia solo i dati cambiati dall'ultima volta confrontando il valore nella colonna filigrana per identificare le modifiche.
GetMaxWatermarkValue Ricerca Eseguire una query sull'oggetto di origine per ottenere il valore massimo dalla colonna di watermark.
UpdateWatermarkColumnValue Procedura Memorizzata Scrivere nuovamente il nuovo valore di watermark nella tabella di controllo da utilizzare la prossima volta.

Limitazioni note

  • Il nome dell'IR, il tipo di database e il tipo di formato file non possono essere parametrizzati in Azure Data Factory. Ad esempio, se si desidera inserire dati sia da Oracle Server che da SQL Server, saranno necessarie due pipeline con parametri diverse. Tuttavia, la singola tabella di controllo può essere condivisa da due set di pipeline.
  • OPENJSON viene usato negli script SQL generati dallo strumento copia dati. Se si usa SQL Server per ospitare la tabella di controllo, deve essere SQL Server 2016 (13.x) e versioni successive per supportare la funzione OPENJSON.

Provare a eseguire queste esercitazioni in cui viene usato lo strumento Copia dati: