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 onderliggende pijplijnparadigma voor aanroepen kunt u de activiteit Variabele instellen gebruiken om waarden van de onderliggende pijplijn te retourneren naar de aanroepende pijplijn. In het volgende scenario hebben we een onderliggende pijplijn via Pijplijnactiviteit 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 pijplijn, een woordenlijst met sleutel-waardeparen, waarmee communicatie tussen onderliggende pijplijnen en 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 instelling ExecutePipeline Activity om te wachten op voltooiing.

Retourwaarde voor pijplijn configureren in onderliggende pijplijn

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

  1. Zoek naar 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 de retourwaarde pijplijn voor het variabele type.
  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 van de gebruikersinterface voor de retourwaarde voor 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()}".
Matrix Er wordt een matrix met tekenreekswaarden verwacht. Druk op Enter om waarden in de matrix te scheiden
Booleaanse waarde True of False
Null Status van tijdelijke aanduiding van signaal; de waarde gelijk is aan null
Int Een numerieke waarde van het type geheel getal. Bijvoorbeeld: 42
Float Een numerieke waarde van het floattype. Bijvoorbeeld: 2.71828
Object Alleen complexe gebruiksvoorbeelden voor waarschuwingen. 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 ophalen in 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 use case is onbeperkt. U kunt bijvoorbeeld

  • Een int-waarde van de onderliggende pijplijn om de wachttijd voor een wachtactiviteit te definiëren.
  • Een tekenreekswaarde om de URL voor de webactiviteit te definiëren.
  • Een nettolading voor expressiewaarden voor een scriptactiviteit voor logboekregistratiedoeleinden.

Schermopname van de aanroepende pijplijn.

Er zijn twee merkbare bijschriften bij het verwijzen 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 de referentiële controle voor u niet bevestigen. De pijplijn mislukt als de sleutel waarnaar wordt verwezen ontbreekt in de nettolading

Speciale overwegingen

  • Hoewel u meerdere activiteiten van set-pijplijn retourwaarde in een pijplijn kunt opnemen, is het belangrijk om ervoor te zorgen dat slechts één van deze activiteiten wordt uitgevoerd in de pijplijn.

    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: