Las macros son marcadores de posición dentro de las configuraciones de la propiedad del complemento de Cloud Data Fusion. Se representan con variables encerradas en ${ }
, como ${input_file_path}
. Para habilitar la configuración dinámica de elementos, como las rutas de acceso a archivos y los nombres de tablas, los marcadores de posición se reemplazan por valores reales durante el 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.
Funciones de macro
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, se muestra la hora 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 un 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 una ejecución de 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. Durante el tiempo de ejecución, el valor de la macro se reemplaza por 2019-12-31T03:30:00
porque la compensación se traduce a 20.5 horas. Toda la macro se evalúa 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 Ruta en los complementos basados en archivos.
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, incluyes la hora de inicio de la canalización, en milisegundos, en un nombre de archivo de Amazon S3:
sales_012345671011.csv
En las propiedades de destino de Amazon S3, ingresa el siguiente valor en el campo Ruta:
s3a://sales-data/sales_${logicalStartTime()}.csv
Cómo 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, capturas la fecha de hoy en el siguiente nombre de archivo de S3:
s3a://sales-data/sales_20210204.csv
En las propiedades de destino de Amazon S3, ingresa el siguiente valor en el campo Ruta:
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()
.
- Obtén el complemento Field Adder Transform desde el centro de Cloud Data Fusion. Después de implementar el complemento, este aparecerá en la lista Transform como Add Field.
- 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 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, configuras el campo de la propiedad de contraseña con el siguiente valor:
${secure(password)}
Esta macro extrae la contraseña del Secure Store durante el tiempo de ejecución.
Macros recursivas
Las macros pueden hacer referencia de forma recursiva a otras macros hasta en diez niveles. Los argumentos de macro se evalúan del argumento más interno al más externo.
Ejemplo
En este ejemplo, tienes un servidor que hace referencia a un nombre de host y un puerto. Debes proporcionar los siguientes argumentos del entorno de ejecución, el último de los cuales es una macro que hace referencia a otras macros:
- hostname:
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?
Obtén más información sobre las macros, las preferencias y los argumentos del entorno de ejecución.
Obtén información para usar las plantillas de complementos.