Makros und Makrofunktionen

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

Wenn Sie sich die Eigenschaften eines Plugins ansehen, können Sie jedem Property-Feld, das mit einem M gekennzeichnet ist, ein Makro hinzufügen. Klicken Sie auf das M, um das Makro hinzuzufügen.

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

Makrofunktionen

Neben Makros können Sie auch die folgenden vordefinierten Makrofunktionen verwenden:

  • logicalStartTime()
  • secure()

Funktion „Logische Startzeit“

Die Makrofunktion logicalStartTime() gibt die logische Startzeit eines Pipelinelaufs als Stringwert zurück.

Wenn keine Parameter angegeben werden, wird die Startzeit in Millisekunden zurückgegeben. Alle Parameter sind optional. Die Funktion nimmt ein Zeitformat, einen Zeitversatz und eine Zeitzone als Argumente an und verwendet die logische Startzeit einer Pipeline für die Umwandlung:

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

Die folgende Liste enthält die optionalen Parameter für logicalStartTime():

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

Beispiel

In diesem Beispiel ist die logische Startzeit eines Pipelinelaufs 2020-01-01T00:00:00 und Sie geben das folgende Makro an:

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

Das Format ist yyyy-MM-dd'T'HH-mm-ss und der Offset liegt 1d-4h+30m vor der logischen Startzeit. Während der Laufzeit wird der Makrowert durch 2019-12-31T03:30:00 ersetzt, da der Offset 20,5 Stunden entspricht. 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.

Startzeit der Pipeline in Millisekunden in einer Dateinamen einfügen

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

Beispiel

In diesem Beispiel geben Sie die Startzeit der Pipeline in Millisekunden in einem Amazon S3-Dateinamen an:

sales_012345671011.csv

Geben Sie in den Eigenschaften des Amazon S3-Sinks im Feld Pfad den folgenden Wert ein:

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

Das heutige Datum in einem Dateinamen angeben

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

Beispiel

In diesem Beispiel wird das heutige Datum im folgenden S3-Dateinamen erfasst:

s3a://sales-data/sales_20210204.csv

Geben Sie in den Eigenschaften des Amazon S3-Sinks im Feld Pfad den folgenden Wert ein:

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

Mit logicalStartTime ein Zeitstempelfeld zu strukturierten Einträgen hinzufügen

Sie können einem strukturierten Datensatz mithilfe der Transformation Feld hinzufügen und logicalStartTime() einen Zeitstempel hinzufügen.

  1. Laden Sie das Plug-in Field Adder Transform (Feldadditionstransformation) aus dem Cloud Data Fusion Hub herunter. Nachdem Sie das Plug-in bereitgestellt haben, wird es in der Liste Transformieren als Feld hinzufügen angezeigt.
  2. Fügen Sie den Zeitstempel beim Konfigurieren der Plug-in-Properties einem strukturierten Datensatz hinzu. Geben Sie beispielsweise als Feldnamen den Namen des neuen Felds und als Feldwert die Makrofunktion logicalStartTime() ein.

Sichere Funktion

Die Makrofunktion secure() nimmt einen einzelnen Schlüssel als Argument entgegen und sucht den zugehörigen Stringwert des Schlüssels im Secure Store. Damit die Ersetzung durchgeführt werden kann, muss der als Argument angegebene Schlüssel bereits im Secure Store vorhanden sein. Das ist nützlich, wenn Sie eine Substitution mit sensiblen Daten ausführen möchten.

Beispiel

In diesem Beispiel konfigurieren Sie für ein Plug-in, das eine Verbindung zu einer MySQL-Datenbank herstellt, das Feld „password“ mit dem folgenden Wert:

${secure(password)}

Dieses Makro ruft das Passwort zur Laufzeit aus dem Secure Store ab.

Rekursive Makros

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

Beispiel

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

  • hostname: examplepetstore.com
  • port: 9991
  • server-address: ${hostname}:${port}

In einer Pipelinekonfiguration verwenden Sie den folgenden Ausdruck:

server-address: ${server-address}

Bei der Laufzeit wird er durch den folgenden Wert ersetzt:

examplepetstore.com:9991

Nächste Schritte