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 è disponibile una pipeline figlio tramite l’attività Execute Pipeline. Si vogliono inoltre recuperare le informazioni dalla pipeline figlio, per poi usarle nella pipeline chiamante.

Screenshot raffigurante l'attività ExecutePipeline.

Introdurre il valore restituito della pipeline, un dizionario di coppie chiave-valore, che consente le comunicazioni tra le pipeline figlio e la pipeline padre.

Prerequisito: chiamata a una pipeline figlio

Come prerequisito, la progettazione richiede un'attività Execute Pipeline che chiami una pipeline figlio, con l’opzione In attesa di completamento abilitata per l'attività.

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

Configurare il valore restituito della pipeline nella pipeline figlio

È stata espansa l'attività Imposta variabile per includere le variabili di sistema del Valore restituito della pipeline. 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 l'interfaccia utente 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 segnaposto segnale; il valore è la costante null
Int Un valore numerico di tipo intero. Ad esempio: 42.
Float Un valore numerico di tipo float. Ad esempio: 2.71828.
Object Avviso solo per i casi d'uso complessi. Consente di incorporare un elenco di coppie chiave-valore per il 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 del valore nella pipeline di chiamata

Il valore restituito della pipeline figlio diventa l'output dell'attività Execute 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 figlio per definire il periodo di attesa per un'attività di attesa.
  • Valore stringa per definire l'URL per l'attività Web.
  • Un payload del valore dell'espressione per un'attività di script a scopo di registrazione.

Screenshot che mostra la pipeline chiamante.

Sono presenti due callout evidenti nel riferimento ai valori restituiti 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 Matrice, è possibile specificare l'indice nell'elenco, con @activity('Execute Pipeline1').output.pipelineReturnValue.keyName[0]. Il numero è indicizzato a zero, ovvero inizia con 0.

Nota

Assicurarsi che il valore keyName a cui si fa riferimento esista nella pipeline figlio. 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à Imposta valore restituito pipeline in una pipeline, è importante assicurarsi che solo una di esse venga eseguita nella pipeline.

    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: