Todos los productos
Search
Centro de documentos

DataWorks:Assignment node

Última actualización: Oct 09, 2026

Utilice un nodo de asignación para pasar los resultados de una consulta o la salida de un nodo anterior a los nodos posteriores. Este nodo es compatible con ODPS SQL, Python 2 y Shell. Asigna automáticamente el último resultado de la consulta o la última salida al parámetro de salida integrado (outputs). Los nodos posteriores pueden hacer referencia a este parámetro para obtener la salida.

Notas de uso

  • Requisitos de versión: disponible únicamente en DataWorks Standard Edition y versiones posteriores.

  • Permisos: su cuenta de RAM debe estar agregada al workspace de destino y tener asignado el rol de developer o workspace administrator. Para más información, consulte Add members to a workspace.

Conceptos clave: paso y referencia de parámetros

La función principal de un nodo de asignación es el paso de parámetros, que transfiere los datos generados por un nodo anterior hacia los nodos posteriores.

  • Nodo de asignación anterior: genera los datos. Asigna automáticamente la última salida o el último resultado de la consulta a un parámetro de salida del nodo llamado outputs.

  • Nodo de negocio posterior: recibe y utiliza los datos. Agregue un parámetro de entrada del nodo (por ejemplo, param) en la configuración del nodo y asígnelo al parámetro outputs del nodo de asignación anterior. De esta manera podrá hacer referencia a los datos en su código.

Formato de salida según el lenguaje

El formato de salida del nodo de asignación varía según el lenguaje:

Lenguaje

Origen de la salida

Formato de salida

ODPS SQL

Salida de la última instrucción SELECT.

La salida se pasa como una matriz bidimensional a los nodos posteriores.

Python 2

Salida de la última instrucción print.

La salida se convierte en una cadena y se divide por coma (,) para formar una matriz unidimensional.

Por ejemplo, si la última línea del nodo de asignación genera 'Electronics,Clothing,Books', el valor que se pasa a los nodos posteriores es ['Electronics','Clothing','Books'].

Shell

Salida de la última instrucción echo.

Procedimiento

En el siguiente ejemplo se pasa la salida de un nodo de asignación ODPS SQL a un nodo Shell. En la práctica, cualquier nodo puede funcionar como nodo posterior.

  1. Configure el nodo de asignación anterior

    Cree y edite un nodo de asignación dentro de un flujo de trabajo. En la página del editor de código, seleccione ODPS SQL, Python o Shell según lo requiera. Después, escriba el código que genere el resultado que desea pasar a los nodos posteriores.

  2. Configure el nodo Shell posterior

    Cree un nodo Shell. En la página del editor del nodo Shell, haga referencia al resultado del nodo anterior:

    1. En la página del editor del nodo Shell, haga clic en Scheduling configuration a la derecha y seleccione la pestaña Node context.

    2. En la sección Input parameters, haga clic en Add.

    3. En el cuadro de diálogo que aparece, seleccione el parámetro outputs del nodo de asignación anterior y especifique un nombre de parámetro para el parámetro de entrada del nodo actual (por ejemplo, param).

      Una vez completada la configuración, el nodo posterior establece automáticamente una dependencia con el nodo de asignación anterior.
    4. Cuando termine de configurar el parámetro, haga referencia en el código del nodo Shell posterior al valor que proviene del nodo anterior mediante el formato ${param}.

  3. Ejecute y compruebe

    Haga doble clic en el nombre del flujo de trabajo. En la página del editor del flujo de trabajo, haga clic en el ícono Run de la barra de herramientas para ejecutarlo y comprobar si el resultado referenciado es correcto. También puede enviar el nodo al entorno de producción, ir a Operation Center y ejecutar una prueba de humo para validar la ejecución.

Límites

  • Alcance: los parámetros del nodo de asignación solo se pueden pasar a los nodos posteriores inmediatos. No se admite el paso entre niveles no consecutivos.

  • Límite de tamaño: el valor de salida no puede superar los 2 MB. Si la salida excede este límite, el nodo de asignación falla.

  • Restricciones de sintaxis:

    • No se admiten comentarios en el código del nodo de asignación. Agregar comentarios puede provocar resultados de ejecución anómalos.

    • La cláusula WITH no es compatible con el modo ODPS SQL.

Ejemplos por lenguaje

El formato de salida (outputs) y el método de referencia para los nodos posteriores varían según el lenguaje.

Ejemplo 1: pasar el resultado de una consulta ODPS SQL

Los resultados de las consultas SQL se pasan a los nodos posteriores como una matriz bidimensional.

  • Configuración del nodo anterior (nodo de asignación - SQL)

    Suponga que el código SQL es el siguiente y que la consulta devuelve dos filas y dos columnas:

    SELECT 'beijing', '1001'
    UNION ALL 
    SELECT 'hangzhou', '1002';
  • Configuración y salida del nodo posterior (nodo Shell)

    En el nodo Shell, agregue un parámetro de entrada llamado region y haga referencia al parámetro outputs del nodo SQL anterior.

    Escriba el siguiente código para leer los datos:

    echo "Entire result set: ${region}"
    echo "First row: ${region[0]}"
    echo "First row, second field: ${region[0][1]}"

    DataWorks analiza sintácticamente el parámetro de forma directa y aplica una sustitución estática. La salida es la siguiente:

    Entire result set: beijing,1001
        hangzhou,1002
        First row: beijing,1001
        First row, second field: 1001

Ejemplo 2: pasar los resultados de salida de Python 2

La salida de la instrucción print de Python 2 se divide por comas (,) y se pasa a los nodos posteriores como una matriz unidimensional.

  • Configuración del nodo anterior (nodo de asignación - Python 2)

    El código de Python 2 es el siguiente:

    print 'Electronics, Clothing, Books';
  • Configuración y salida del nodo posterior (nodo Shell)

    En el nodo Shell, agregue un parámetro de entrada llamado types y haga referencia al parámetro outputs del nodo de asignación anterior.

    Escriba el siguiente código para leer los datos:

    # Directly output the entire one-dimensional array
    echo "Entire result set: ${types}"
    
    # Output elements by index
    echo "Second element: ${types[1]}"

    DataWorks analiza sintácticamente el parámetro de forma directa y aplica una sustitución estática. La salida es la siguiente:

    Entire result set: Electronics,Clothing,Books
        Second element: Clothing
Nota

La lógica de procesamiento de los nodos Shell es similar a la de Python 2, por lo que no se repite aquí.

Preguntas frecuentes

  • P: ¿Por qué aparece el error "find no select sql in sql assignment!" en el modo ODPS SQL?

    R: Al script de ODPS SQL le falta una instrucción SELECT. Agregue una instrucción SELECT. La cláusula WITH no es compatible con el modo ODPS SQL, por lo que usarla también desencadena este error.

  • P: ¿Por qué la salida no coincide con lo esperado en el modo Shell o Python?

    R: Compruebe si los elementos de salida contienen comas. De ser así, escape las comas en el nodo de asignación y restáurelas en el nodo posterior.

  • P: ¿Un nodo posterior puede recibir salidas de varios nodos de asignación anteriores?

    R: Sí. Asigne distintos parámetros de entrada para recibir las salidas de diferentes nodos de asignación.

  • P: ¿El nodo de asignación admite lenguajes distintos de ODPS SQL, Python 2 y Shell?

    R: El nodo de asignación solo es compatible con ODPS SQL, Python 2 y Shell. Sin embargo, algunos tipos de nodos, como EMR Hive, Hologres SQL, EMR Spark SQL, AnalyticDB for PostgreSQL, ClickHouse SQL y MySQL, incluyen capacidades integradas de asignación de parámetros que logran el mismo resultado.

Documentación relacionada

Si el nodo posterior es de tipo for-each o do-while, consulte Configure a for-each node y Configure a do-while node para conocer las instrucciones sobre cómo usar estos nodos junto con los nodos de asignación.