Freigeben über


Festlegen des Pipelinerückgabewerts in Azure Data Factory und Azure Synapse Analytics

GILT FÜR: Azure Data Factory Azure Synapse Analytics

Tipp

Testen Sie Data Factory in Microsoft Fabric, eine All-in-One-Analyselösung für Unternehmen. Microsoft Fabric deckt alle Aufgaben ab, von der Datenverschiebung bis hin zu Data Science, Echtzeitanalysen, Business Intelligence und Berichterstellung. Erfahren Sie, wie Sie kostenlos eine neue Testversion starten!

Im Paradigma „aufrufende Pipeline/untergeordnete Pipeline“ können Sie die Aktivität „Variable festlegen“ verwenden, um Werte aus der untergeordneten Pipeline an die aufrufende Pipeline zurückzugeben. Im folgenden Szenario steht eine untergeordnete Pipeline über die Aktivität „Pipeline ausführen“ zur Verfügung. Der Plan ist, Informationen aus der untergeordneten Pipeline abzurufen und sie dann in der aufrufenden Pipeline zu verwenden.

Screenshot: ExecutePipeline-Aktivität

Führen Sie den Pipelinerückgabewert ein. Hierbei handelt es sich um ein Wörterbuch mit Schlüsselwertpaaren, das die Kommunikation zwischen untergeordneten Pipelines und der übergeordneten Pipeline ermöglicht.

Voraussetzung: Aufrufen einer untergeordneten Pipeline

Als Voraussetzung benötigt Ihr Entwurf eine Aktivität „Pipeline ausführen“, die eine untergeordnete Pipeline aufruft, wobei Auf Abschluss warten für die Aktivität aktiviert sein soll.

Screenshot: Festlegen der Option „Auf Abschluss warten“ für die ExecutePipeline-Aktivität

Konfigurieren des Pipelinerückgabewerts in der untergeordneten Pipeline

Wir haben die Aktivität „Variable festlegen“ erweitert, um den Pipelinerückgabewert von Systemvariablen einzuschließen. Sie müssen nicht auf Pipelineebene definiert werden (im Gegensatz zu anderen Variablen, die Sie in der Pipeline verwenden).

  1. Suchen Sie im Bereich mit den Pipelineaktivitäten nach Variable festlegen, und ziehen Sie eine Aktivität des Typs „Variable festlegen“ in den Pipelinebereich.
  2. Wählen Sie auf der Canvas die Aktivität „Variable festlegen“ aus, falls sie noch nicht ausgewählt ist, und wählen Sie anschließend die Registerkarte Variablen aus, um die Details zu bearbeiten.
  3. Wählen Sie als Variablentyp die Option Pipelinerückgabewert aus.
  4. Wählen Sie Neu aus, um ein neues Schlüssel-Wert-Paar hinzuzufügen.
  5. Die Anzahl der Schlüsselwertpaare, die hinzugefügt werden können, ist nur durch die Größenbeschränkung des zurückgegebenen JSON (4 MB) begrenzt.

Screenshot: Benutzeroberfläche für den Pipelinerückgabewert

Für Werttypen stehen mehrere Optionen zur Verfügung:

Typname BESCHREIBUNG
String Ein konstanter Zeichenfolgenwert. Beispiel: „ADF ist großartig“
Ausdruck Ermöglicht die Bezugnahme auf die Ausgabe früherer Aktivitäten. Sie können hier die Zeichenfolgeninterpolation verwenden, um Inlineausdruckswerte wie "The value is @{guid()}" einzuschließen.
Array Bei diesem Typ wird ein Array von Zeichenfolgenwerten erwartet. Drücken Sie die EINGABETASTE, um Werte im Array zu trennen.
Boolean „true“ oder „false“
NULL Signalplatzhalterstatus (immer NULL).
Int Ein numerischer ganzzahliger Wert. Beispiel: 42
Gleitkomma Ein numerischer Wert vom Float-Typ. Beispiel: 2.71828
Objekt Warnung: Nur für komplizierte Anwendungsfälle. Dieser Typ ermöglicht das Einbetten einer Liste vom Typ „Schlüssel-Wert-Paare“ für den Wert.

Der Wert des Objekttyps wird wie folgt definiert:

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

Abrufen eines Werts in der aufrufenden Pipeline

Der Pipelinerückgabewert der untergeordneten Pipeline wird zur Aktivitätsausgabe der Aktivität „Pipeline ausführen“. Die Informationen können mit @activity('Execute Pipeline1').output.pipelineReturnValue.keyName abgerufen werden. Hierbei handelt es sich um einen uneingeschränkten Anwendungsfall. Sie können z. B. Folgendes verwenden

  • Ein Integer-Wert aus der untergeordneten Pipeline, um den Wartezeitraums für eine Warteaktivität zu definieren
  • Ein Zeichenfolgenwert, der die URL für die Webaktivität definiert
  • Die Nutzdaten eines Ausdruckswerts für eine Skriptaktivität zu Protokollierungszwecken

Screenshot: Aufrufende Pipeline

Bei Verweisen auf die Pipeline-Rückgabewerte gibt es zwei auffällige Zusatzinformationen.

  1. Beim Typ Objekt können Sie das geschachtelte JSON-Objekt weiter erweitern. Beispiel: @activity('Execute Pipeline1').output.pipelineReturnValue.keyName.nextLevelKey
  2. Beim Typ Array können Sie den Index in der Liste mit @activity('Execute Pipeline1').output.pipelineReturnValue.keyName[0] angeben. Die Nummer ist nullindiziert, was bedeutet, dass sie mit „0“ beginnt.

Hinweis

Stellen Sie sicher, dass der Schlüsselname (keyName), auf den Sie verweisen, in Ihrer untergeordneten Pipeline vorhanden ist. Der ADF-Ausdrucks-Generator kann die Referenzprüfung nicht für Sie bestätigen. Die Pipeline funktioniert nur, wenn der Schlüssel, auf den verwiesen wird, in den Nutzdaten enthalten ist.

Besondere Überlegungen

  • Sie können zwar mehrere Aktivitäten vom Typ „Pipeline-Rückgabewert festlegen“ in eine Pipeline einfügen, müssen dann aber unbedingt sicherstellen, dass nur eine davon in der Pipeline ausgeführt wird.

    Screenshot: Pipelinerückgabewert und Verzweigung

    Um das zuvor beschriebene Problem aufgrund eines fehlenden Schlüssels bei der Anrufpipeline zu vermeiden, wird empfohlen, für alle Zweige der untergeordneten Pipeline dieselbe Liste von Schlüsseln zu verwenden. Erwägen Sie die Verwendung von NULL-Typen für Schlüssel, die in einer bestimmten Verzweigung über keine Werte verfügen.

  • Die Azure Data Factory-Ausdruckssprache unterstützt Inline-JSON-Objekte nicht direkt. Stattdessen müssen Zeichenfolgen und Ausdrücke ordnungsgemäß verkettet werden.

    Nehmen Sie als Beispiel folgenden JSON-Ausdruck:

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

    Ein gleichwertiger Azure Data Factory-Ausdruck wäre:

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

Erfahren Sie mehr über eine verwandte Ablaufsteuerungsaktivität: