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 dentro de ${ }, 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 visualizas las propiedades de un complemento, puedes agregar una macro a cualquier campo de propiedad. que tiene 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. Todas parámetros son opcionales. La función toma un formato de tiempo, un desplazamiento y una la 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 una 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.

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 la aplicación basada en archivos o complementos.

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 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 usando el campo Agregar campo. transformación 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 directorio por ejemplo, para el nombre del campo, ingresa el nombre del nuevo y, para el valor del campo, ingresa la macro logicalStartTime() .

Función segura

La función de macro secure() toma una sola clave como argumento y busca el valor de la cadena asociada con la clave del 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, 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. 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
  • 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?