Compartir a través de


Usar una For each tarea para realizar otra tarea de forma repetitiva

En este artículo se analiza el uso de la tarea For each con tus Lakeflow Jobs, incluyendo detalles sobre cómo agregar y configurar la tarea en la interfaz de usuario de Jobs. Use la For each tarea para ejecutar una tarea anidada en un bucle, pasando un conjunto diferente de parámetros a cada iteración de la tarea.

Agregar la tarea For each a un trabajo requiere definir dos tareas: la tarea For each y una tarea anidada. La tarea anidada es la tarea que se ejecuta para cada iteración de la tarea For each y es uno de los tipos estándar de tareas de Lakeflow Jobs. No puede agregar otra tarea For each como tarea anidada.

Por ejemplo, podría usar la tarea For each para realizar un conjunto común de transformaciones en varias tablas, pasando un nombre de tabla de una lista de nombres de tabla a cada iteración de la tarea.

Las tareas anidadas que no tienen dependencias entre sí se pueden ejecutar simultáneamente.

Agregar la tarea For each a un trabajo

Agregue una tarea For each al crear un trabajo o editar una tarea de un trabajo existente. Para configurar una tarea For each:

  1. En el menú desplegable Tipo, seleccione Para cada uno.

  2. Escriba un nombre para la tarea en el campo Nombre de la tarea.

  3. En el cuadro de texto Entradas, defina los valores sobre los que la For each tarea va a iterar como una matriz con formato JSON de valores. Para obtener más información sobre cómo pasar parámetros a la tarea anidada, consulte ¿Qué tipos de parámetros se pueden usar con la tarea For each?.

  4. Para establecer opcionalmente el número de iteraciones que se pueden ejecutar en paralelo, escriba un valor de simultaneidad para la tarea. El valor predeterminado es 1.

  5. Si desea recibir notificaciones del inicio, el éxito o el error de la tarea, haga clic en + Agregar. Consulta Incorporación de notificaciones en un trabajo.

  6. Para completar la configuración de la tarea For each y agregar una tarea anidada para que se ejecute con cada iteración, haga clic en Agregar una tarea para ejecutarla en bucle.

  7. Seleccione un tipo de tarea y opciones de configuración para la tarea anidada. Las tareas anidadas son tipos de tareas estándar y tienen las mismas opciones de configuración. Consulte Configuración y edición de tareas en trabajos de Lakeflow.

  8. Para hacer referencia a los parámetros pasados desde la tarea For each, haga clic en Parámetros. Utilice la referencia {{input}} para establecer el valor en el valor de la matriz de cada iteración o {{input.<key>}} para hacer referencia a campos de objeto individuales al iterar sobre una lista de objetos.

    Agregar una tarea anidada a una tarea “Para cada uno”

  9. Haga clic en Create task (Crear tarea).

Cambiar entre la tarea For each y la tarea anidada

La tarea For each aparece en la interfaz de usuario de trabajos como un nodo con el nodo de tarea anidada dentro del nodo For each. Para cambiar entre la tarea For each y la tarea anidada, haga clic en los nodos respectivos.

Cambio de vista DAG de la interfaz de usuario de trabajos a Para cada tarea

Cambio de vista DAG de la interfaz de usuario de trabajos a tarea anidada

¿Qué tipos de parámetros puedo usar con la For each tarea?

La For each tarea pasa parámetros a cada iteración de la tarea anidada. La entrada es una matriz de objetos y cada objeto se pasa a una iteración de la tarea anidada. Hay varias maneras de crear las entradas que usa la tarea: matrices con formato JSON, valores de tarea o parámetros de trabajo.

Nota:

Los parámetros están limitados a 5000 caracteres en la interfaz de usuario directamente o 48 KB si usa referencias de valor de tarea (donde el valor puede ser mucho mayor que el tamaño de la cadena que lo describe) o 10 000 caracteres para el valor de los parámetros de trabajo. Si los parámetros requieren más de 48 KB, puede pasar una búsqueda a un archivo de configuración mayor. Consulte Uso de una tabla de búsqueda para matrices de parámetros grandes.

Matriz con formato JSON de valores

Al crear o editar una tarea, puede definir directamente un array de valores para la tarea anidada, utilizando el cuadro de texto Entradas. Puede ser una matriz de los siguientes tipos de datos:

  • Pares de clave-valor
  • Cadenas, números o tipos booleanos
  • Objetos JSON arbitrariamente complejos

El cuadro de texto Entradas y, por tanto, JSON pasado directamente en este cuadro, está limitado a 5000 caracteres.

Referencias al valor de la tarea

Puede transferir valores de una tarea anterior. Para establecer el valor en el cuadro de texto {{tasks.<task_name>.values.<task_value_name>}}, utilice la sintaxis para hacer referencia a los valores de tarea pasados. Por ejemplo, si una tarea denominada generate_countries_list que precede a la tarea For each establece el siguiente valor de tarea:

dbutils.jobs.taskValues.set(key = "countries", value = countries_array)

Entonces, la tarea For each hace referencia al valor de la tarea en el cuadro de texto Entradas mediante la siguiente sintaxis:

{{tasks.generate_countries_list.values.countries}}.

Puede colocar hasta 5000 caracteres en el cuadro de texto Entradas , pero los valores que representan las referencias pueden tener hasta 48 KB. Para obtener más información sobre los valores de tarea, consulte Use task values to pass information between tasks (Uso de valores de tarea para pasar información entre tareas).

Parámetros de trabajo

También puede usar parámetros de trabajo como entrada. Para hacer referencia a un parámetro de trabajo, use la siguiente sintaxis en el cuadro de texto Entradas: {{job.parameters.<name>}}. Por ejemplo, {{job.parameters.countries}}.

Puede colocar hasta 5000 caracteres en el cuadro de texto Entradas para hacer referencia a los parámetros del trabajo. Los valores del parámetro de trabajo están limitados a 10 KB. Para obtener más información sobre los parámetros de trabajo, consulte Configure job parameters (Configuración de parámetros del trabajo).

Hacer referencia a una tarea For each en tareas de bajada

La tarea For each es la tarea de nivel superior y las tareas de nivel inferior pueden especificarla como una dependencia. Las tareas de bajada no pueden depender de la tarea anidada ni hacer referencia a ella.

Ejecución y supervisión de un trabajo con una tarea For each

Ejecutar un trabajo con una tarea For each es idéntico a ejecutar cualquier otro trabajo.

La visualización y administración de ejecuciones de trabajos también es idéntica a cualquier otro trabajo, excepto el historial de ejecución de tareas de una tarea For each, que se presenta como una tabla de iteraciones de tareas. Consulte Visualización del historial de ejecución de tareas para una For each tarea.