Macros et fonctions de macro

Les macros sont des espaces réservés dans les configurations de propriété du plug-in Cloud Data Fusion. Elles sont représentées par des variables placées entre ${ }, comme ${input_file_path}. Pour activer la configuration dynamique des éléments, tels que les chemins d'accès aux fichiers et les noms de tables, les espaces réservés sont remplacés par des valeurs réelles au moment de l'exécution.

Lorsque vous consultez les propriétés d'un plug-in, vous pouvez ajouter une macro à n'importe quel champ de propriété associé à un M. Pour ajouter la macro, cliquez sur M.

Pour en savoir plus, consultez la section Gérer les macros, les préférences et les arguments d'exécution.

Fonctions macro

En plus des macros, vous pouvez utiliser les fonctions de macro prédéfinies suivantes:

  • logicalStartTime()
  • secure()

Fonction Heure de début logique

La fonction de macro logicalStartTime() renvoie l'heure de début logique d'une exécution du pipeline en tant que valeur de chaîne.

Si aucun paramètre n'est fourni, la fonction renvoie l'heure de début en millisecondes. Tous les paramètres sont facultatifs. La fonction accepte un format d'heure, un décalage et un fuseau horaire comme arguments, et utilise l'heure de début logique d'un pipeline pour effectuer la substitution:

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

La liste suivante indique les paramètres facultatifs pour logicalStartTime():

Paramètre Description
timeFormat Modèle de format horaire, au format d'un SimpleDateFormat Java.
offset
Décalage temporel avant l'heure de début logique.
timezone
Fuseau horaire à utiliser pour l'heure de début logique.

Exemple

Dans cet exemple, l'heure de début logique d'une exécution de pipeline est 2020-01-01T00:00:00 et vous fournissez la macro suivante:

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

Le format est yyyy-MM-dd'T'HH-mm-ss et le décalage est 1d-4h+30m avant l'heure de début logique. Au moment de l'exécution, la valeur de la macro est remplacée par 2019-12-31T03:30:00, car le décalage correspond à 20,5 heures. La macro entière s'évalue à 20, 5 heures avant minuit le 1er janvier 2020.

Utiliser logicalStartTime() dans les plug-ins basés sur des fichiers

Le moyen le plus courant d'utiliser cette fonction est dans le champ Path (Chemin d'accès) des plug-ins basés sur des fichiers.

Inclure l'heure de début du pipeline en millisecondes dans un nom de fichier

Pour capturer l'heure de début réelle en millisecondes dans un nom de fichier, omettez les paramètres dans la fonction de macro.

Exemple

Dans cet exemple, vous incluez l'heure de début du pipeline, en millisecondes, dans un nom de fichier Amazon S3:

sales_012345671011.csv

Dans les propriétés du sink Amazon S3, saisissez la valeur suivante dans le champ Chemin:

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

Inclure la date du jour dans un nom de fichier

Vous pouvez utiliser la fonction de macro logicalStartTime() dans un nom de fichier pour capturer la date actuelle.

Exemple

Dans cet exemple, vous capturez la date d'aujourd'hui dans le nom de fichier S3 suivant:

s3a://sales-data/sales_20210204.csv

Dans les propriétés du sink Amazon S3, saisissez la valeur suivante dans le champ Chemin:

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

Utiliser logicalStartTime pour ajouter un champ "Timestamp" (Code temporel) aux enregistrements structurés

Vous pouvez ajouter un code temporel à un enregistrement structuré à l'aide de la transformation Ajouter un champ et de logicalStartTime().

  1. Téléchargez le plug-in Field Adder Transform (Transformation d'ajout de champ) depuis le hub Cloud Data Fusion. Une fois le plug-in déployé, il apparaît dans la liste Transformer sous le nom Ajouter un champ.
  2. Lorsque vous configurez les propriétés du plug-in, ajoutez le code temporel à un enregistrement structuré. Par exemple, pour le nom du champ, saisissez le nom du nouveau champ, et pour la valeur du champ, saisissez la fonction de macro logicalStartTime().

Fonction sécurisée

La fonction de macro secure() reçoit une seule clé en tant qu'argument et recherche la valeur de chaîne associée à la clé dans le Secure Store. Pour effectuer la substitution, la clé fournie en tant qu'argument doit déjà exister dans le Secure Store. Cette fonctionnalité est utile pour effectuer une substitution avec des données sensibles.

Exemple

Dans cet exemple, pour un plug-in qui se connecte à une base de données MySQL, vous configurez le champ de propriété du mot de passe avec la valeur suivante:

${secure(password)}

Cette macro extrait le mot de passe du Secure Store au moment de l'exécution.

Macros récursives

Les macros peuvent faire référence de manière récursive à d'autres macros jusqu'à dix niveaux. Les arguments de macro sont évalués de l'argument le plus interne à l'argument le plus externe.

Exemple

Dans cet exemple, vous disposez d'un serveur qui fait référence à un nom d'hôte et à un port. Vous fournissez les arguments d'exécution suivants, dont le dernier est une macro qui fait référence à d'autres macros:

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

Dans une configuration de pipeline, vous utilisez l'expression suivante:

server-address: ${server-address}

Au moment de l'exécution, il est remplacé par la valeur suivante:

examplepetstore.com:9991

Étape suivante