Macros y funciones de macro

Las macros son marcadores de posición dentro de la configuración de propiedades del complemento de Cloud Data Fusion. Se representan con variables dentro de ${ }, como ${input_file_path}. Para habilitar la configuración dinámica de los elementos, como rutas de archivos y nombres de tablas, los marcadores de posición se reemplazan por valores reales en el entorno de ejecución.

Cuando visualizas las propiedades de un complemento, puedes agregar una macro a cualquier campo de propiedad que tenga una M al lado. Para agregar la macro, haz clic en la M.

Para obtener más información, consulta Cómo administrar macros, preferencias y argumentos del tiempo de ejecución.

Macrofunciones

Además de las macros, puedes usar las siguientes funciones de macro predefinidas:

  • logicalStartTime()
  • secure()

Función de hora de inicio lógica

La función de macro logicalStartTime() muestra la hora de inicio lógica de una ejecución de la canalización como un valor de cadena.

Si no se proporciona ningún parámetro, muestra el tiempo de inicio en milisegundos. Todos los parámetros son opcionales. La función toma un formato de hora, un desplazamiento y una zona horaria como argumentos y usa la hora de inicio lógica de una canalización para realizar la sustitución:

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

En la siguiente lista, se muestran los parámetros opcionales para logicalStartTime():

Parámetro Descripción
timeFormat El patrón de formato de hora, en el formato de una SimpleDateFormat de Java.
offset
La compensación horaria antes de la hora de inicio lógica.
timezone
Es la zona horaria que se utilizará para la hora de inicio lógica.

Ejemplo

En este ejemplo, la hora de inicio lógica de la ejecución de una canalización es 2020-01-01T00:00:00 y proporcionas la siguiente macro:

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

El formato es yyyy-MM-dd'T'HH-mm-ss y el desplazamiento es 1d-4h+30m antes de la hora de inicio lógica. En el tiempo de ejecución, el valor de la macro se reemplaza por 2019-12-31T03:30:00 porque el desplazamiento se traduce a 20.5 horas. La macro completa se evalúa como 20.5 horas antes de la medianoche del 1 de enero de 2020.

Cómo usar logicalStartTime() en complementos basados en archivos

La forma más común de usar esta función es en el campo Path de los complementos basados en archivos.

Incluir el tiempo de inicio de la canalización en milisegundos en un nombre de archivo

Para capturar el tiempo de inicio real en milisegundos en un nombre de archivo, omite los parámetros en la función macro.

Ejemplo

En este ejemplo, se incluye la hora de inicio de la canalización, en milisegundos, en un nombre de archivo de Amazon S3:

sales_012345671011.csv

En las propiedades del receptor de Amazon S3, ingresa el siguiente valor en el campo Ruta de acceso:

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

Incluir la fecha de hoy en un nombre de archivo

Puedes usar la función de macro logicalStartTime() en un nombre de archivo para capturar la fecha actual.

Ejemplo

En este ejemplo, se captura la fecha de hoy en el siguiente nombre de archivo S3:

s3a://sales-data/sales_20210204.csv

En las propiedades del receptor de Amazon S3, ingresa el siguiente valor en el campo Ruta de acceso:

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

Usa logicalStartTime para agregar un campo de marca de tiempo a los registros estructurados

Puedes agregar una marca de tiempo a un registro estructurado mediante la transformación Agregar campo y logicalStartTime().

  1. Obtén el complemento Field Adder Transform de Cloud Data Fusion Hub. Después de implementar el complemento, aparece en la lista Transform como Add Field.
  2. Cuando configures las propiedades del complemento, agrega la marca de tiempo a un registro estructurado, por ejemplo, para el nombre del campo, ingresa el nombre del campo nuevo y, para el valor del campo, ingresa la función de macro logicalStartTime().

Función segura

La función de macro secure() toma una sola clave como argumento y busca el valor de string asociado de la clave en Secure Store. Para realizar la sustitución, la clave proporcionada como argumento ya debe existir en el almacén seguro. Esto es útil para realizar una sustitución con datos sensibles.

Ejemplo

En este ejemplo, para un complemento que se conecta a una base de datos MySQL, debes configurar el campo de propiedad de la contraseña con el siguiente valor:

${secure(password)}

Esta macro extrae la contraseña del almacén seguro durante el tiempo de ejecución.

Macros recursivas

De manera recursiva, las macros pueden referirse a otras macros de hasta diez niveles. Los macroargumentos se evalúan desde el argumento más interno hasta el más externo.

Ejemplo

En este ejemplo, tienes un servidor que hace referencia a un nombre de host y un puerto. Proporcionas los siguientes argumentos de tiempo de ejecución, el último de los cuales es una macro que hace referencia a otras macros:

  • nombre de host: examplepetstore.com
  • puerto: 9991
  • server-address: ${hostname}:${port}

En la configuración de una canalización, debes usar la siguiente expresión:

server-address: ${server-address}

En el tiempo de ejecución, se reemplaza por el siguiente valor:

examplepetstore.com:9991

¿Qué sigue?