Todos los productos
Search
Centro de documentos

DataWorks:Configurar un nodo for-each

Última actualización: Sep 04, 2026

DataWorks ofrece el nodo for-each para iterar sobre un conjunto de resultados proveniente de un nodo de asignación. También es posible personalizar el flujo de trabajo dentro del nodo for-each. Este tema utiliza un ejemplo en el que un nodo for-each itera dos veces sobre la salida de un nodo de asignación e imprime el conteo actual del bucle en cada iteración. Esto demuestra su lógica y configuración.

Requisitos previos

Antes de configurar el nodo, asegúrese de comprender su lógica para evitar errores. Para obtener más información, consulte How for-each nodes work.

Procedimiento

El nodo for-each se utiliza generalmente junto con un nodo de asignación. El procedimiento general es el siguiente.

遍历节点

  1. Establecer dependencias de nodos

    Un nodo for-each debe depender de un nodo de asignación. Para obtener detalles sobre la configuración, consulte Create and configure a workflow.

  2. Pasar el conjunto de resultados

    El parámetro de salida outputs integrado de Parameters del nodo de asignación debe utilizarse como parámetro de entrada de Parameters del nodo for-each. Para obtener detalles sobre la configuración, consulte Configure an Assignment Node.

  3. Recuperar parámetros en nodos internos

    Personalice el flujo de trabajo interno del nodo for-each según sus requisitos empresariales. En los nodos internos, utilice variables integradas para recuperar los valores de los parámetros y ejecutar la tarea del bucle. Para obtener más información sobre las variables integradas, consulte Built-in variables. Para obtener detalles sobre la configuración, consulte Configure a for-each node.

Crear y configurar un flujo de trabajo

Cree un flujo de trabajo donde un nodo de asignación sea el nodo ascendente y un nodo for-each sea el nodo descendente.

  1. Inicie sesión en la consola de DataWorks. En la región objetivo, haga clic en Data Development and O&M > Data Development en el panel de navegación izquierdo. Seleccione un espacio de trabajo de la lista desplegable y haga clic en Go to Data Development.

  2. Create a scheduled workflow.

  3. Cree un nodo for-each.

    1. Pase el cursor sobre el icono 新建 y haga clic en Create Node > General > for-each.

      Alternativamente, busque el flujo de trabajo objetivo, haga clic con el botón derecho en General y seleccione Create Node > for-each.

    2. En el cuadro de diálogo Create Node, establezca el nombre y la ruta del nodo.

    3. Haga clic en OK.

  4. Cree un nodo de asignación.

    1. Haga doble clic en el flujo de trabajo para abrir su página de configuración. Haga clic en New Node y arrastre General > Assignment Node al lienzo de la derecha.

      Para obtener más información sobre los nodos de asignación, consulte Assignment node.

    2. En el cuadro de diálogo Create Node, establezca el nombre y la ruta del nodo. De forma predeterminada, el nodo se crea en el directorio del flujo de trabajo actual.

    3. Haga clic en OK.

  5. Arrastre una línea desde el nodo de asignación hasta el nodo for-each para establecer su dependencia.

Configurar un nodo de asignación

  1. Haga doble clic en el nodo de asignación para abrir su página de configuración.

  2. En la lista desplegable Language, seleccione Shell.

  3. En la página de configuración del nodo, introduzca la siguiente instrucción:

    echo 'this is name,ok';
  4. En el panel derecho, haga clic en Scheduling. En la sección Input and Output Parameters > Output Parameters.

  5. Haga clic en el icono de guardar 保存 en la barra de herramientas.

  6. Haga clic en el icono de confirmación 提交 en la barra de herramientas.

    En el cuadro de diálogo Submission, introduzca una Change Description y elija si desea solicitar una revisión de código.

    Importante
    • Debe configurar las propiedades Rerun attribute y Parent Nodes del nodo antes de poder confirmarlo.

    • La revisión de código ayuda a controlar la calidad del código y evita errores causados por el despliegue de código incorrecto en el entorno de producción sin supervisión. Si habilita la revisión de código, el nodo solo podrá desplegarse después de que los revisores lo aprueben. Para obtener más información, consulte Code review.

    Si su espacio de trabajo está en modo estándar, debe hacer clic en Deploy en la esquina superior derecha de la página de configuración del nodo para desplegar la tarea en el entorno de producción después de confirmarla. Para obtener más información, consulte Deploy tasks.

Configurar un nodo for-each

  1. Haga doble clic en el nodo for-each para abrir su página de configuración. De forma predeterminada, contiene un nodo de inicio, un nodo Shell y un nodo final.

    Puede reemplazar el nodo Shell con otro tipo de nodo:

    • Si desea utilizar un nodo Shell, puede configurarlo directamente.

    • Para usar otro tipo de nodo, primero elimine el nodo Shell predeterminado y luego cree el nodo que necesita.

    Este ejemplo utiliza un nodo Shell.

  2. Edite el nodo Shell.

    1. Haga doble clic en el nodo Shell para abrir su página de configuración.

    2. Introduzca el siguiente código:

      echo ${dag.loopTimes} # Print the current loop count.
      Nota
      • La lógica de los nodos de inicio y fin es fija y no se puede editar.

      • Después de modificar el código en el nodo Shell, debe guardar los cambios. DataWorks no le solicitará guardar los cambios cuando confirme el nodo. Si no guarda, los cambios no surtirán efecto.

      El nodo for-each admite las siguientes cuatro variables integradas:

      • ${dag.foreach.current}: La fila de datos actual sobre la que se itera.

      • ${dag.loopDataArray}: El conjunto de datos de entrada.

      • ${dag.offset}: El desplazamiento.

      • ${dag.loopTimes}: El conteo actual del bucle. El valor es ${dag.offset}+1.

      Para obtener más información, consulte Built-in variables y Examples of built-in variable values.

  3. Configure el nodo for-each.

    1. En la página de configuración del nodo for-each, haga clic en Scheduling en el panel derecho.

    2. En la sección Input and Output Parameters > Input Parameters, haga clic en Modify junto al nombre de parámetro predeterminado loopDataArray.

    3. En la lista desplegable Value Source, seleccione el parámetro outputs del nodo de asignación ascendente y haga clic en Save.

      Nota

      Después de agregar la dependencia del nodo de asignación ascendente en la pestaña Properties, debe especificar manualmente su origen de valor. De lo contrario, se producirá un error al confirmar el nodo.

  4. Haga clic en el icono de guardar 保存 en la barra de herramientas para guardar el nodo for-each.

  5. Haga clic en el icono de confirmación 提交 en la barra de herramientas.

    Importante

    Debe configurar las propiedades Rerun attribute y Parent Nodes del nodo antes de poder confirmarlo.

    En el cuadro de diálogo Submission, seleccione los nodos que desea confirmar y haga clic en Determine.

    Si su espacio de trabajo está en modo estándar, haga clic en Deploy en la esquina superior derecha después de confirmar correctamente el nodo. Para obtener más información, consulte Deploy tasks.

Probar el nodo y ver los resultados

  1. En la esquina superior derecha de la página, haga clic en O&M Personnel para ir a Operation Center.

  2. En el panel de navegación izquierdo, haga clic en Auto Triggered Task O&M > Periodic tasks.

  3. Busque el nodo. En el DAG de la derecha, haga clic con el botón derecho en el nodo de asignación y seleccione Retroactive Instance > Current and Descendant Nodes Retroactively.

  4. Actualice la página Data Backfill Instance. Una vez que la instancia de relleno de datos se ejecute correctamente, haga clic en View DAG junto a la instancia.

  5. Haga clic con el botón derecho en el nodo de asignación y seleccione View Runtime Log para comprobar el resultado.

    El registro de ejecución muestra que el nodo de asignación se ejecutó correctamente. La salida de Shell es this is name,ok, y el resultado se analiza como ["this is name", "ok"] (dos registros de datos). El nodo for-each iterará sobre estos dos registros.

  6. En la página Data Backfill Instance, haga clic con el botón derecho en el nodo for-each y seleccione View Inner Nodes.

  7. En la página de nodos internos, haga clic en Loop 1 a la izquierda. Luego, haga clic con el botón derecho en el nodo Shell y seleccione View Runtime Log.

    En la página de registro de ejecución, compruebe el registro del nodo Shell correspondiente a la primera iteración. La salida de Shell es 1, que representa el conteo actual del bucle (el valor de ${dag.loopTimes}).

  8. De igual manera, compruebe el registro del nodo Shell correspondiente a la segunda iteración.

    La salida de Shell es 2, que corresponde al conteo del bucle en la segunda iteración (el valor de ${dag.loopTimes} es 2). Esto verifica que el nodo for-each iteró correctamente sobre los dos registros de datos del conjunto de resultados de asignación.