Condividi tramite


Impostare il valore restituito della pipeline in Azure Data Factory e 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!

Nel paradigma pipeline chiamante-pipeline figlio, è possibile usare l'attività Imposta variabile per restituire valori dalla pipeline figlio alla pipeline chiamante. Nello scenario seguente, abbiamo una pipeline figlia tramite un'attività Execute Pipeline. E vogliamo recuperare le informazioni dalla pipeline figlia, per poi usarle nella pipeline chiamante.

Screenshot dell'attività ExecutePipeline.

Introdurre il valore di ritorno della pipeline, un dizionario di coppie chiave-valore, che consente la comunicazione tra le pipeline figlie e la pipeline padre.

Prerequisito: chiamare una pipeline secondaria

Come prerequisito, il progetto richiede un'attività di esecuzione della pipeline Execute Pipeline Activity che chiami una pipeline figlia, con l'opzione Attendere il completamento abilitata per l'attività.

Screenshot raffigurante l’impostazione dell'attività ExecutePipeline per attendere il completamento.

Configurare il valore restituito della pipeline nella pipeline figlia

Abbiamo esteso l'attività Imposta variabile per includere le variabili di sistema Pipeline Return Value. Non è tuttavia necessario definirle a livello di pipeline, a differenza di qualsiasi altra variabile usata nella pipeline.

  1. Cercare Imposta variabile nel riquadro Attività pipeline e trascinare un'attività Imposta variabile nell'area di disegno della pipeline.
  2. Selezionare l'attività Imposta variabile nell'area di lavoro se non è già selezionata e quindi la relativa scheda Variabili per modificarne i dettagli.
  3. Scegliere Valore restituito della pipeline per il tipo di variabile.
  4. Selezionare Nuovo per aggiungere una nuova coppia chiave-valore.
  5. Il numero di coppie chiave-valore che è possibile aggiungere è limitato solo dalla dimensione del codice JSON restituito (4 MB).

Screenshot che mostra la UI per il valore restituito della pipeline.

Sono disponibili alcune opzioni per i tipi valore, tra cui

Nome tipo Descrizione
Stringa Un valore di stringa costante. Ad esempio, ''ADF è impressionante''.
Espressione Consente di fare riferimento all'output delle attività precedenti. In questo caso, è possibile usare l’interpolazione di stringhe per includere i valori delle espressioni in linea, ad esempio "The value is @{guid()}".
Array Tale metodo prevede una matrice di valori stringa. Premere il tasto "INVIO" per separare i valori nella matrice
Booleano True o False
Null Stato del placeholder di segnale; il valore è costante null
Int Un valore numerico di tipo intero. Ad esempio: 42.
Float Un valore numerico di tipo float. Ad esempio: 2.71828.
Oggetto Avviso solo per i casi d'uso complessi. Consente di incorporare un elenco di coppie chiave-valore come tipo di valore

Il valore del tipo di oggetto è definito nel modo seguente:

[{"key": "myKey1", "value": {"type": "String", "content": "hello world"}}, 
 {"key": "myKey2", "value": {"type": "String", "content": "hi"}}
]

Recupero valore nel flusso di chiamata

Il valore restituito della pipeline secondaria diventa l'output dell'attività Esegui Pipeline. È possibile recuperare le informazioni con @activity('Execute Pipeline1').output.pipelineReturnValue.keyName. Il caso d'uso è illimitato. Ad esempio, è possibile usare

  • Valore int della pipeline secondaria per definire il periodo di attesa per un'attività di attesa.
  • Valore di tipo stringa per definire l'URL per l'attività Web.
  • Un valore di payload dell'espressione per un'attività di script per finalità di log.

La screenshot mostra la pipeline di chiamata.

Ci sono due richiami notevoli nel riferimento ai valori di ritorno della pipeline.

  1. Con il tipo Oggetto, è possibile espandere ulteriormente l'oggetto json annidato, ad esempio @activity('Execute Pipeline1').output.pipelineReturnValue.keyName.nextLevelKey
  2. Con il tipo di Array, è possibile specificare l'indice nell'elenco, con @activity('Execute Pipeline1').output.pipelineReturnValue.keyName[0]. Il numero è indicizzato a zero, ovvero inizia con 0.

Nota

Assicurati che la chiave keyName a cui si fa riferimento esista nella pipeline secondaria. Il generatore di espressioni di Azure Data Factory non può confermare la verifica referenziale. La pipeline avrà esito negativo se la chiave a cui si fa riferimento non è presente nel payload

Considerazioni speciali

  • Sebbene sia possibile includere più attività di impostazione del valore restituito nella pipeline, è importante assicurarsi che venga eseguita solo una di esse.

    Screenshot raffigurante il valore restituito della pipeline e la diramazione.

    Per evitare il problema delle chiavi mancanti descritto in precedenza quando si chiama la pipeline, è consigliabile disporre dello stesso elenco di chiavi per tutti i rami della pipeline figlio. Prendere in considerazione l'uso di tipi Null per le chiavi che non dispongono di valori in un ramo specifico.

  • Il linguaggio delle espressioni di Azure Data Factory non supporta direttamente oggetti JSON inline. È invece necessario concatenare correttamente stringhe ed espressioni.

    Ad esempio, per l'espressione JSON seguente:

    {
      "datetime": "@{utcnow()}",
      "date": "@{substring(utcnow(),0,10)}",
      "year": "@{substring(utcnow(),0,4)}",
      "month": "@{substring(utcnow(),5,2)}",
      "day": "@{substring(utcnow(),8,2)}"
    }
    

    Un'espressione equivalente di Azure Data Factory sarà:

    @{
      concat(
        '{',
        '"datetime": "', utcnow(), '", ',
        '"date": "', substring(utcnow(),0,10), '", ',
        '"year": "', substring(utcnow(),0,4), '", ',
        '"month": "', substring(utcnow(),5,2), '", ',
        '"day": "', substring(utcnow(),8,2), '"',
        '}'
      )
    }
    

Informazioni su un'altra attività del flusso di controllo correlata: