Macros y funciones de macro

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

Cuando veas las propiedades de un complemento, puedes agregar una macro a cualquier campo de propiedad que tenga una M junto a él. Para agregar la macro, haz clic en la M.

Para obtener más información, consulta Administra macros, preferencias y argumentos del entorno 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 proporcionan parámetros, muestra la hora de inicio en milisegundos. Todas 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
Desfase de tiempo antes de la hora de inicio lógica.
timezone
Zona horaria que se usará 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 la compensación 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. Todo el evalúa como 20.5 horas antes de la medianoche del 1 de enero de 2020.

Usa logicalStartTime() en complementos basados en archivos

La forma más común de usar esta función es en el campo Path de la aplicación basada en archivos o complementos.

Cómo incluir la hora de inicio de la canalización en milisegundos en un nombre de archivo

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

Ejemplo

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

sales_012345671011.csv

En las propiedades del receptor de Amazon S3, ingresa el siguiente valor en la 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 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 la 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 con 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, aparecerá en la lista Transform como Add. Campo.
  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 cadena asociado de la clave en Secure Store. Para realizar la sustitución, la clave proporcionada como argumento ya debe que existen en Secure Store. 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, configuras el campo de la propiedad de 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. Macros los argumentos se evalúan desde el 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. Tú proveer los siguientes argumentos de tiempo de ejecución, el último es una macro que hace referencia con otras macros:

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

En la configuración de una canalización, se usa la siguiente expresión:

server-address: ${server-address}

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

examplepetstore.com:9991

¿Qué sigue?