Macros et fonctions de macro

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

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

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

Macros

Outre les macros, vous pouvez utiliser les fonctions 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 sous la forme d'une valeur de chaîne.

Si aucun paramètre n'est fourni, l'heure de début est renvoyée en millisecondes. Tous les paramètres sont facultatifs. La fonction prend 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 présente les paramètres facultatifs pour logicalStartTime():

Paramètres Description
timeFormat Modèle de format d'heure au format Java SimpleDateFormat.
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 est de 20,5 heures. La macro entière est évaluée 20, 5 heures avant minuit le 1er janvier 2020.

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

La manière la plus courante d'utiliser cette fonction consiste à renseigner le champ Path (Chemin) 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 récepteur Amazon S3, saisissez la valeur suivante dans le champ Chemin d'accès:

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 du jour dans le nom de fichier S3 suivant:

s3a://sales-data/sales_20210204.csv

Dans les propriétés du récepteur Amazon S3, saisissez la valeur suivante dans le champ Chemin d'accès:

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

Utiliser logicalStartTime pour ajouter un champ d'horodatage aux enregistrements structurés

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

  1. Obtenez le plug-in Field Adder Transform (Transformation Field Adder) depuis Cloud Data Fusion Hub. Une fois le plug-in déployé, il apparaît dans la liste Transform en tant que Add Field (Ajouter un champ).
  2. Lorsque vous configurez les propriétés du plug-in, ajoutez l'horodatage à un enregistrement structuré. Par exemple, pour le nom du champ, saisissez le nom du nouveau champ et la fonction de macro logicalStartTime() pour la valeur du champ.

Fonction sécurisée

La fonction de macro secure() accepte une seule clé comme argument et recherche la valeur de chaîne associée à la clé dans le stockage sécurisé. Pour effectuer la substitution, la clé fournie en tant qu'argument doit déjà exister dans le magasin sécurisé. Cette méthode 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, configurez le champ de la propriété de mot de passe avec la valeur suivante:

${secure(password)}

Cette macro extrait le mot de passe du magasin sécurisé au moment de l'exécution.

Macros récursives

Les macros peuvent se référer à d'autres macros de manière récursive jusqu'à 10 niveaux. Les arguments de macro sont évalués du plus interne au plus externe.

Exemple

Dans cet exemple, le serveur 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:

  • nom d'hôte: 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, elle est remplacée par la valeur suivante:

examplepetstore.com:9991

Étapes suivantes