Delen via


Retourwaarde voor pijplijn instellen in Azure Data Factory en Azure Synapse Analytics

VAN TOEPASSING OP: Azure Data Factory Azure Synapse Analytics

Tip

Probeer Data Factory uit in Microsoft Fabric, een alles-in-één analyseoplossing voor ondernemingen. Microsoft Fabric omvat alles, van gegevensverplaatsing tot gegevenswetenschap, realtime analyses, business intelligence en rapportage. Meer informatie over het gratis starten van een nieuwe proefversie .

In het aanroepende pijplijn-kindpijplijn paradigma kunt u de activiteit Variabele instellen gebruiken om waarden van de kindpijplijn te retourneren naar de aanroepende pijplijn. In het volgende scenario hebben we een subpijplijn via Pipeline-activiteit uitvoeren. En we willen informatie ophalen uit de onderliggende pijplijn om vervolgens te worden gebruikt in de aanroepende pijplijn.

Schermopname met ExecutePipeline-activiteit.

Introduceer de retourwaarde van de pijplijn, een woordenboek met sleutel-waardeparen, waarmee communicatie tussen kindersystemen en de bovenliggende pijplijn mogelijk is.

Vereiste: een onderliggende pijplijn aanroepen

Als vereiste heeft uw ontwerp een Execute Pipeline-activiteit nodig die een onderliggende pijplijn aanroept, waarbij wachten op voltooiing is ingeschakeld voor de activiteit.

Schermopname van de configuratie van ExecutePipeline Activity voor het wachten op voltooiing.

Retourwaarde voor pijplijn configureren in onderliggende pijplijn

We hebben de Variabele instellen activiteit uitgebreid om de systeemvariable Pipeline Return Value te omvatten. U hoeft deze niet op pijplijnniveau te definiëren (in tegenstelling tot andere variabelen die u in de pijplijn gebruikt).

  1. Zoek naar de activiteit Variabele instellen in het deelvenster Pijplijnactiviteiten en sleep een activiteit "Variabele instellen" naar het pijplijncanvas.
  2. Selecteer de activiteit Variabele instellen op het canvas als deze nog niet is geselecteerd en vervolgens het tabblad Variabelen om de details ervan te bewerken.
  3. Kies Pipeline-retourwaarde voor variabeltype.
  4. Selecteer Nieuw om een nieuw sleutelwaardepaar toe te voegen.
  5. Het aantal sleutel-waardeparen dat kan worden toegevoegd, wordt alleen beperkt door de groottelimiet van de geretourneerde JSON (4 MB).

Schermopname toont de gebruikersinterface voor de retourwaarde van de pijplijn.

Er zijn enkele opties voor waardetypen, waaronder

Typenaam Beschrijving
String Een constante tekenreekswaarde. bijvoorbeeld: 'ADF is geweldig'
Expression Hiermee kunt u verwijzen naar uitvoer van eerdere activiteiten. U kunt hier tekenreeksinterpolatie gebruiken om inline-expressiewaarden zoals "The value is @{guid()}".
Array Er wordt een matrix met tekenreekswaarden verwacht. Druk op Enter om waarden in de matrix te scheiden
Booleaans Waar of Onwaar
Null Plaatsaanduiding status van signaal; de waarde is constant null
Int Een numerieke waarde van het type geheel getal. Bijvoorbeeld: 42
Float Een numerieke waarde van het type float. Bijvoorbeeld: 2.71828
Object Waarschuwing: alleen complexe gebruiksscenario's. Hiermee kunt u een lijst met sleutel-waardeparen insluiten voor de waarde

De waarde van het objecttype wordt als volgt gedefinieerd:

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

Waarde opvragen in de aanroepende pijplijn

De retourwaarde voor de pijplijn van de onderliggende pijplijn wordt de activiteitsuitvoer van de Execute Pipeline Activity. U kunt de informatie ophalen met @activity('Execute Pipeline1').output.pipelineReturnValue.keyName. De gebruikssituatie is grenzeloos. Bijvoorbeeld, u kunt

  • Een int-waarde afkomstig van de onderliggende pipeline om de wachttijd voor een wachtactiviteit te definiëren.
  • Een tekenreekswaarde om de URL voor de webactiviteit te definiëren.
  • Een expressiewaarde-payload voor een scriptactiviteit voor logboekdoeleinden.

Schermopname van de aanroepende pijplijn.

Er zijn twee merkbare aanduidingen bij verwijzing naar de retourwaarden van de pijplijn.

  1. Met objecttype kunt u verder uitbreiden naar het geneste json-object, zoals @activity('Execute Pipeline1').output.pipelineReturnValue.keyName.nextLevelKey
  2. Met matrixtype kunt u de index in de lijst opgeven met @activity('Execute Pipeline1').output.pipelineReturnValue.keyName[0]. Het getal is nul geïndexeerd, wat betekent dat het begint met 0.

Notitie

Zorg ervoor dat de keyName waarnaar u verwijst aanwezig is in uw onderliggende pijplijn. De opbouwfunctie voor ADF-expressies kan niet de referentiële controle voor u bevestigen. De Pipeline zal falen als de verwezen sleutel ontbreekt in de laadgegevens

Speciale overwegingen

  • Hoewel u meerdere Set Pipeline Return Value activiteiten in een pipeline kunt opnemen, is het belangrijk om ervoor te zorgen dat slechts één van deze wordt uitgevoerd.

    Schermopname van de retourwaarde van pijplijn en vertakking.

    Om het eerder beschreven probleem met ontbrekende sleutels te voorkomen bij het aanroepen van de pijplijn, raden we u aan dezelfde lijst met sleutels te hebben voor alle vertakkingen in de onderliggende pijplijn. Overweeg null-typen te gebruiken voor sleutels die geen waarden hebben, in een specifieke vertakking.

  • De expressietaal van Azure Data Factory biedt geen rechtstreekse ondersteuning voor inline JSON-objecten. In plaats daarvan is het nodig om tekenreeksen en expressies correct samen te voegen.

    Bijvoorbeeld voor de volgende JSON-expressie:

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

    Een equivalente Azure Data Factory-expressie is:

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

Meer informatie over een andere gerelateerde controlestroomactiviteit: