Makro erstellen
Ein Makro ist ein wiederverwendbarer erweiterter (DAG-)Workflow mit einem deklarierten Eingabe-/Ausgabe-Vertrag. Sie rufen ein Makro aus einem anderen Workflow mit einem Schritt Macro Run oder Macro Concurrent auf – jeder Aufruf läuft in einem eigenen, isolierten Arbeitsschema, sodass dasselbe Makro gleichzeitig von mehreren übergeordneten Workflows oder für mehrere Treiberzeilen aufgerufen werden kann, ohne dass sich die Ausführungen in die Quere kommen.
Verwenden Sie ein Makro, wenn Sie eine wiederholbare, parametrisierte Datentransformation haben – zum Beispiel „die Verkaufsdaten eines Monats für eine Region verarbeiten“ –, die Sie aus einem Treiber-Workflow einmal pro Monat, pro Region oder für beides aufrufen möchten. Der Aufrufer bindet Tabellen und Variablen an die deklarierten Eingabe-Ports des Makros; wenn es fertig ist, werden die deklarierten Ausgabetabellen in Ziele auf der Aufruferseite zurückkopiert.
Schritte
Abschnitt betitelt „Schritte“- Öffnen Sie das Projekt, das den Workflow enthält, den Sie in ein Makro umwandeln möchten.
- Wechseln Sie zur Registerkarte Workflows und wählen Sie die Zeile des Workflows aus.
- Vergewissern Sie sich im Bereich Workflow-Details auf der rechten Seite, dass der Workflow-Typ Erweitert ist. Ist er Standard, verwenden Sie zuerst die Aktion In Erweitert konvertieren.
- Klicken Sie im Abschnitt Makro des Bereichs „Workflow-Details“ auf In Makro konvertieren… und bestätigen Sie im Dialog. Der Workflow wechselt in den Makro-Modus, und ein Port-Editor erscheint.
- Klicken Sie auf Port hinzufügen, um jede Eingabe oder Ausgabe zu deklarieren, die das Makro entgegennimmt oder erzeugt. Für jeden Port gilt:
- Name – ein kurzer Bezeichner, mit dem der Aufrufer an diesen Port bindet (zum Beispiel
month,region_sales). - Richtung – Eingabe (der Aufrufer liefert diesen Wert oder diese Tabelle) oder Ausgabe (das Makro erzeugt dies, und der Aufrufer übernimmt es).
- Art – Tabelle für eine Datentabelle, Skalar für einen einzelnen Wert (String / Int / Float / Bool / Datum) oder Dimension für einen Verweis auf eine hierarchische Dimension.
- Erforderlich – deaktivieren Sie die Option, wenn das Makro auch ohne gebundenen Port laufen kann.
- Notiz – eine kurze Anmerkung dazu, was dieser Port darstellt; sie wird den Autoren im Bindungsformular auf der Aufruferseite angezeigt.
- Name – ein kurzer Bezeichner, mit dem der Aufrufer an diesen Port bindet (zum Beispiel
- Klicken Sie auf Ports speichern.
Der Workflow ist jetzt ein Makro. Autoren, die in einem anderen Workflow einen Schritt Macro Run hinzufügen, sehen Ihre deklarierten Ports und binden sie über den Namen.
Ein Makro aufrufen
Abschnitt betitelt „Ein Makro aufrufen“Im aufrufenden Workflow:
- Fügen Sie einen Schritt Makro: Ausführen hinzu.
- Wählen Sie unter Auszuführendes Makro das Projekt und den Makro-Workflow aus.
- Eingabebindungen – fügen Sie für jeden Eingabe-Port, den das Makro deklariert, eine Bindung hinzu:
- Tabelle-Ports übernehmen eine Quelltabelle auf der Aufruferseite; wahlweise wählen Sie eine Teilmenge der Spalten aus und fügen einen Filter hinzu (eine
WHERE-Klausel, die auf die skalaren Eingabevariablen des Makros verweist), sodass nur der benötigte Ausschnitt in das Ausführungsschema des Makros materialisiert wird. - Skalar / Dimension-Ports übernehmen einen Wert (oft eine Workflow-Variable des Aufrufers) – er wird VOR dem Hineinkopieren der Tabelle gesetzt, damit der Filter der Tabelleneingabe darauf verweisen kann.
- Tabelle-Ports übernehmen eine Quelltabelle auf der Aufruferseite; wahlweise wählen Sie eine Teilmenge der Spalten aus und fügen einen Filter hinzu (eine
- Ausgabebindungen – verweisen Sie für jeden Ausgabe-Port, den das Makro erzeugt, auf eine Zieltabelle auf der Aufruferseite (sie wird bei Bedarf angelegt, falls sie noch nicht existiert).
- Speichern Sie den Schritt.
Wenn der übergeordnete Workflow ausgeführt wird und den Schritt Macro Run erreicht, geht die Laufzeit wie folgt vor:
- Sie erzeugt eine neue
run_idfür diesen Makro-Aufruf. - Sie legt im Katalog des Projekts ein Arbeitsschema pro Ausführung an (
macrorun_<run_id>). - Sie kopiert die gebundenen Eingabetabellen in das Arbeitsschema (Spaltenprojektion und Filter werden beim Hineinkopieren angewendet, sodass der Filter nach unten durchgereicht wird).
- Sie setzt die gebundenen skalaren und Dimensions-Eingabevariablen im ausführungsbezogenen Variablen-Overlay des Makros.
- Sie führt die Schritte des Makros im selben Prozess aus. Jeder SQL-Schritt im Makro liest und schreibt im Arbeitsschema statt im Projektschema.
- Sie kopiert die deklarierten Ausgabetabellen in die Ziele des Aufrufers zurück.
- Sie löscht das Arbeitsschema (immer – auch wenn ein Schritt im Makro fehlgeschlagen ist).
run_id und ein eigenes Arbeitsschema. Die Schritte lesen und schreiben ausschließlich in diesem Schema, und es wird gelöscht, wenn die Ausführung endet – bei Erfolg, Fehler oder Abbruch.Da jeder Aufruf sein eigenes Arbeitsschema hat, kollidieren zwei gleichzeitige Aufrufe desselben Makros (aus einer Schleife, einer Auffächerung oder unabhängigen Workflows) nie bei den Namen von Zwischentabellen.
Ein Makro pro Treiberzeile ausführen
Abschnitt betitelt „Ein Makro pro Treiberzeile ausführen“Verwenden Sie Makro: Gleichzeitige Ausführung, wenn eine Tabelle des Aufrufers viele unabhängige Makro-Aufrufe steuern soll.
- Fügen Sie einen Schritt Makro: Gleichzeitige Ausführung hinzu.
- Wählen Sie unter Treiber die Treibertabelle auf der Aufruferseite aus und legen Sie Gleichzeitige Ausführungen auf die maximale Anzahl untergeordneter Makro-Aufrufe fest, die gleichzeitig laufen sollen.
- Ordnen Sie unter Tabellendatenauswahl die Spalten der Treibertabelle zu, die jeder untergeordnete Aufruf benötigt.
- Schränken Sie unter Treiberfilter optional die zu verarbeitenden Treiberzeilen ein.
- Wählen Sie unter Makro den Makro-Workflow aus.
- Binden Sie unter Eingabebindungen Werte der Treiberspalten an skalare oder Dimensionsvariablen des Makros und binden Sie Tabellen auf der Aufruferseite an Tabellen-Ports des Makros.
- Ordnen Sie unter Ausgabebindungen die Ausgabe-Ports des Makros Zieltabellen auf der Aufruferseite zu.
Jede ausgewählte Treiberzeile erhält eine eigene run_id und ein eigenes Arbeitsschema. Wenn Sie den übergeordneten Schritt stoppen, werden alle aktiven untergeordneten Aufrufe gestoppt und ihre Ausführungsschemas gelöscht.
results_{region}.Ein Makro herabstufen
Abschnitt betitelt „Ein Makro herabstufen“Sie können das Makro-Kennzeichen jederzeit entfernen, indem Sie im Bereich „Workflow-Details“ auf Auf Erweitert herabstufen… klicken. Der Workflow wird wieder zu einem gewöhnlichen erweiterten Workflow, und alle Schritte Macro Run auf der Aufruferseite, die darauf verweisen, schlagen zur Laufzeit mit dem Fehler „not a macro“ fehl. Die deklarierten Ports bleiben im Datensatz erhalten, sodass eine spätere erneute Konvertierung sie wiederherstellt.
Einschränkungen (v1)
Abschnitt betitelt „Einschränkungen (v1)“- Makros dürfen Tabellentransformationen, Importe und Exporte enthalten, weil Lese- und Schreibzugriffe auf Tabellen auf das Arbeitsschema des Aufrufs isoliert sind. Dimensionsimporte und Schritte, die Dimensionen aktualisieren, sind nicht erlaubt, weil Dimensionen ein projektweiter Zustand sind. Andere Schritte mit Nebeneffekten außerhalb von Tabellen, etwa Dokumentoperationen und Agent-Aufrufe, sind in v1 nicht makrosicher.
- Makros müssen im selben Projekt liegen wie der Aufrufer. Projektübergreifende Makros werden noch nicht unterstützt.
- Ein Schritt Macro Run kann nicht aus einem Schritt Run Workflow, Workflow Loop oder einem bedingten Run Workflow aufgerufen werden – diese Schritte laufen nicht isoliert und würden den Vertrag des Arbeitsschemas pro Ausführung brechen. Verwenden Sie stattdessen im Aufrufer einen Schritt Macro Run.
Nächste Schritte
Abschnitt betitelt „Nächste Schritte“- Referenz zum Schritt Macro Run – die Referenz pro Feld für den aufrufenden Schritt.
- Referenz zum Schritt Macro Concurrent – einen Makro-Aufruf pro Zeile der Treibertabelle ausführen.
- Schritt Run Workflow – für Unter-Workflows, die keine Isolation pro Aufruf benötigen.