Makros und Makrofunktionen

Makros sind Platzhalter in den Attributkonfigurationen des Cloud Data Fusion-Plug-ins. Sie werden durch Variablen dargestellt, die in ${ } eingeschlossen sind, z. B. ${input_file_path}. Um die dynamische Konfiguration für Elemente wie Dateipfade und Tabellennamen zu ermöglichen, werden die Platzhalter zur Laufzeit durch tatsächliche Werte ersetzt.

Beim Aufrufen der Attribute eines Plug-ins können Sie jedem Attributfeld, neben dem ein M steht, ein Makro hinzufügen. Klicken Sie auf M, um das Makro hinzuzufügen.

Weitere Informationen finden Sie unter Makros, Einstellungen und Laufzeitargumente verwalten.

Makrofunktionen

Zusätzlich zu Makros können Sie die folgenden vordefinierten Makrofunktionen verwenden:

  • logicalStartTime()
  • secure()

Logische Startzeit

Die Makrofunktion logicalStartTime() gibt die logische Startzeit einer Ausführung der Pipeline als Stringwert zurück.

Wenn keine Parameter angegeben werden, wird die Startzeit in Millisekunden zurückgegeben. Alle Parameter sind optional. Die Funktion verwendet ein Zeitformat, einen Offset und eine Zeitzone als Argumente und verwendet die logische Startzeit einer Pipeline, um die Substitution auszuführen:

${logicalStartTime([timeFormat[,offset [,timezone])}

In der folgenden Liste sind die optionalen Parameter für logicalStartTime() aufgeführt:

Parameter Beschreibung
timeFormat Das Zeitformatmuster im Format eines Java- SimpleDateFormat.
offset
Zeitverschiebung vor der logischen Startzeit.
timezone
Zeitzone, die für die logische Startzeit verwendet werden soll.

Beispiel

In diesem Beispiel ist die logische Startzeit einer Pipelineausführung 2020-01-01T00:00:00 und Sie stellen das folgende Makro bereit:

${logicalStartTime(yyyy-MM-dd'T'HH-mm-ss,1d-4h+30m)}

Das Format ist yyyy-MM-dd'T'HH-mm-ss und der Offset ist 1d-4h+30m vor der logischen Startzeit. Zur Laufzeit wird der Makrowert durch 2019-12-31T03:30:00 ersetzt, weil der Offset 20,5 Stunden ergibt. Das gesamte Makro ergibt 20, 5 Stunden vor Mitternacht des 1.Januar 2020.

logicalStartTime() in dateibasierten Plug-ins verwenden

Am häufigsten wird diese Funktion im Feld Pfad in dateibasierten Plug-ins verwendet.

Pipeline-Startzeit in Millisekunden in einen Dateinamen aufnehmen

Wenn Sie die tatsächliche Startzeit in einem Dateinamen in Millisekunden erfassen möchten, lassen Sie die Parameter in der Makrofunktion weg.

Beispiel

In diesem Beispiel fügen Sie die Startzeit der Pipeline in Millisekunden in einen Amazon S3-Dateinamen ein:

sales_012345671011.csv

Geben Sie bei den Amazon S3-Senkeneigenschaften den folgenden Wert in das Feld Pfad ein:

s3a://sales-data/sales_${logicalStartTime()}.csv

Das heutige Datum in einen Dateinamen aufnehmen

Sie können die Makrofunktion logicalStartTime() in einem Dateinamen verwenden, um das aktuelle Datum zu erfassen.

Beispiel

In diesem Beispiel erfassen Sie das heutige Datum im folgenden S3-Dateinamen:

s3a://sales-data/sales_20210204.csv

Geben Sie bei den Amazon S3-Senkeneigenschaften den folgenden Wert in das Feld Pfad ein:

s3a://sales-data/sales_${logicalStartTime(yyyyMMdd)}.csv

logicalStartTime verwenden, um strukturierten Datensätzen ein Zeitstempelfeld hinzuzufügen

Sie können einem strukturierten Datensatz einen Zeitstempel hinzufügen, indem Sie die Transformation Feld hinzufügen und logicalStartTime() verwenden.

  1. Rufen Sie das Plug-in Field Adder Transform von Cloud Data Fusion Hub ab. Nachdem Sie das Plug-in bereitgestellt haben, wird es in der Transform-Liste als Add Field (Feld hinzufügen) angezeigt.
  2. Fügen Sie beim Konfigurieren der Plug-in-Attribute den Zeitstempel einem strukturierten Datensatz hinzu. Geben Sie beispielsweise für den Feldnamen den Namen des neuen Felds und für den Feldwert die Makrofunktion logicalStartTime() ein.

Funktion sichern

Die Makrofunktion secure() übernimmt einen einzelnen Schlüssel als Argument und ruft den zugehörigen Stringwert des Schlüssels aus Secure Store ab. Damit Sie die Substitution ausführen können, muss der als Argument angegebene Schlüssel bereits im Secure Store vorhanden sein. Dies ist nützlich, um eine Substitution mit sensiblen Daten durchzuführen.

Beispiel

In diesem Beispiel konfigurieren Sie für ein Plug-in, das eine Verbindung zu einer MySQL-Datenbank herstellt, das Attributfeld "Passwort" mit dem folgenden Wert:

${secure(password)}

Dieses Makro ruft das Passwort zur Laufzeit aus dem sicheren Speicher ab.

Rekursive Makros

Makros können rekursiv auf andere Makros mit bis zu zehn Ebenen verweisen. Makroargumente werden vom innersten bis zum äußersten Argument ausgewertet.

Beispiel

In diesem Beispiel haben Sie einen Server, der auf einen Hostnamen und einen Port verweist. Sie geben die folgenden Laufzeitargumente an. Das letzte ist ein Makro, das auf andere Makros verweist:

  • Hostname: examplepetstore.com
  • Port: 9991
  • Serveradresse: ${hostname}:${port}

In einer Pipelinekonfiguration verwenden Sie den folgenden Ausdruck:

server-address: ${server-address}

Zur Laufzeit wird er durch den folgenden Wert ersetzt:

examplepetstore.com:9991

Nächste Schritte