Las macros son marcadores de posición en las configuraciones de propiedades de los complementos de Cloud Data Fusion. Se representan mediante variables entre ${ }
, como
${input_file_path}
. Para habilitar la configuración dinámica de elementos, como las rutas de archivos y los nombres de tablas, los marcadores de posición se sustituyen por valores reales en el tiempo de ejecución.
Cuando veas las propiedades de un complemento, puedes añadir una macro a cualquier campo de propiedad que tenga una M junto a él. Para añadir la macro, haz clic en M.
Para obtener más información, consulta Gestionar macros, preferencias y argumentos de tiempo de ejecución.
Funciones de macro
Además de las macros, puedes usar las siguientes funciones de macro predefinidas:
logicalStartTime()
secure()
Función Hora de inicio lógica
La función de macro logicalStartTime()
devuelve 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, devuelve la hora de inicio en milisegundos. Todos los parámetros son opcionales. La función toma un formato de hora, un desfase 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 de logicalStartTime()
:
Parámetro | Descripción |
---|---|
timeFormat |
El patrón de formato de hora, con 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 una canalización es 2020-01-01T00:00:00
y usted proporciona 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 desfase es 1d-4h+30m
antes de la hora de inicio lógica. En el tiempo de ejecución, el valor de la macro se sustituye por 2019-12-31T03:30:00
porque el desfase equivale a 20,5 horas. La macro completa se evalúa como 20, 5 horas antes de la medianoche del 1 de enero del 2020.
Usar logicalStartTime()
en complementos basados en archivos
La forma más habitual de usar esta función es en el campo Ruta de los complementos basados en archivos.
Incluir la hora de inicio de la canalización en milisegundos en un nombre de archivo
Para registrar la hora de inicio real en milisegundos en un nombre de archivo, omite los parámetros de la función de 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, introduce el siguiente valor en el campo Ruta:
s3a://sales-data/sales_${logicalStartTime()}.csv
Incluir la fecha actual en el nombre de un archivo
Puedes usar la función de macro logicalStartTime()
en un nombre de archivo para registrar la fecha actual.
Ejemplo
En este ejemplo, se registra la fecha actual en el siguiente nombre de archivo de S3:
s3a://sales-data/sales_20210204.csv
En las propiedades del receptor de Amazon S3, introduce el siguiente valor en el campo Ruta:
s3a://sales-data/sales_${logicalStartTime(yyyyMMdd)}.csv
Usar logicalStartTime
para añadir un campo de marca de tiempo a registros estructurados
Puedes añadir una marca de tiempo a un registro estructurado mediante la transformación Añadir campo
y logicalStartTime()
.
- Obtén el complemento Transformación de adición de campos del centro de Cloud Data Fusion. Una vez que hayas implementado el complemento, aparecerá en la lista Transform como Add Field.
- Cuando configures las propiedades del complemento, añade la marca de tiempo a un registro estructurado. Por ejemplo, en el nombre del campo, introduce el nombre del nuevo campo y, en el valor del campo, introduce 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 a la clave en el almacén seguro.
Para realizar la sustitución, la clave proporcionada como argumento ya debe existir en el almacén seguro. Esto resulta ú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, se configura el campo de la propiedad de contraseña con el siguiente valor:
${secure(password)}
Esta macro extrae la contraseña del almacén seguro en 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 las macros se evalúan de dentro hacia fuera.
Ejemplo
En este ejemplo, tienes un servidor que hace referencia a un nombre de host y a un puerto. Proporciona 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
- port:
9991
- server-address:
${hostname}:${port}
En una configuración de canalización, se usa la siguiente expresión:
server-address: ${server-address}
En tiempo de ejecución, se sustituye por el siguiente valor:
examplepetstore.com:9991
Siguientes pasos
Más información sobre las macros, las preferencias y los argumentos de tiempo de ejecución
Consulta cómo usar las plantillas de complementos.