Variables de bucle (DataStage®)

Puede especificar que la etapa Transformador genere varias filas de salida para cada fila de entrada definiendo una condición de bucle.

Acerca de variables de bucle

Puede especificar que la etapa Transformador repita un bucle varias veces para cada fila de entrada que lee. La etapa puede generar varias filas de salida correspondientes a una sola fila de entrada cuando una determinada condición es true.

Puede utilizar variables de etapa en la especificación de esta condición. Las variables de etapa se evalúan una vez que se lee cada fila de entrada y, por lo tanto, contienen el mismo valor mientras se ejecuta el bucle.

También puede especificar variables de bucle. Las variables de bucle se evalúan cada vez que la condición de bucle se evalúa como true. Las variables de bucle pueden cambiar para cada iteración del bucle y para cada fila de salida que se genera.

El nombre de una variable debe ser exclusivo en las variables de etapa y las variables de bucle.

Definición de una condición de bucle

Para especificar que la etapa Transformador entre en bucle al procesar cada fila de entrada, defina una condición de bucle. El bucle continúa iterando mientras la condición sea true.

Puede utilizar la variable del sistema @ITERATION en la expresión. @ITERATION contiene un recuento del número de veces que se ha ejecutado el bucle, empezando por 1. @ITERATION se restablece en uno cuando se lee una nueva fila de entrada.

Para definir una condición de bucle:
  1. En el campo Bucle while, pulse el icono del editor de expresiones.
    1. En el editor de expresiones, especifique la expresión que controla el bucle. La expresión debe devolver un resultado true o false.
    2. Pulse Guardar y volver.
  2. En el campo Umbral de aviso de iteración de bucle, defina un umbral de aviso.

Es posible definir una condición de bucle anómala que dé como resultado un bucle infinito y que, sin embargo, siga compilándose satisfactoriamente. Para capturar estos sucesos, puede especificar un umbral de aviso de iteración de bucle. Se graba un aviso en el registro de trabajo cuando un bucle se ha repetido el número de veces especificado y el aviso se repite cada vez que se alcanza un múltiplo de ese valor.

Por lo tanto, por ejemplo, si especifica un umbral de 100, se escriben avisos en el registro de trabajo cuando el bucle se repite 100 veces, 200 veces, 300 veces, etc. Si se establece el umbral en 0, se especifica que no se emiten avisos. El umbral predeterminado es 10000, que es un buen valor de partida. Puede establecer un límite para todos los trabajos del proyecto estableciendo la variable de entorno APT_TRANSFORM_LOOP_WARNING_THRESHOLD en un valor de umbral.

El umbral se aplica tanto a la iteración de bucle como al número de registros retenidos en la memoria caché de filas de entrada (la memoria caché de filas de entrada se utiliza cuando se agregan valores en columnas de entrada).

Definición de una variable de bucle

Puede declarar y utilizar variables de bucle dentro de una etapa Transformador. Puede utilizar las variables de bucle en expresiones dentro de la etapa.

Puede utilizar variables de bucle cuando se define una condición de bucle para la etapa Transformador. Cuando se define un bucle, la etapa Transformador puede generar varias filas para cada entrada de fila en la etapa. Las variables de bucle se evalúan cada vez que se repite el bucle, por lo que pueden cambiar su valor para cada fila de salida. Estas variables solo son accesibles desde la etapa Transformador en la que se declaran. No puede utilizar una variable de bucle en una derivación de variable de etapa.

Las variables de bucle se pueden utilizar de la siguiente manera:

  • Se les pueden asignar valores por expresiones.
  • Se pueden utilizar en expresiones que definen una derivación de columna de salida.
  • Las expresiones que evalúan una variable pueden incluir otras variables de bucle, variables de etapa o la variable que se está evaluando.

Las variables de bucle que declara se muestran en una tabla en el panel derecho del área de enlaces. La tabla se parece a la tabla de enlaces de salida y a la tabla de variables de etapa. Puede maximizar o minimizar la tabla pulsando la flecha en la barra de título de la tabla.

La tabla lista las variables de bucle junto con las expresiones que se utilizan para derivar sus valores. Las líneas de enlace unen las variables de bucle con las columnas de entrada utilizadas en las expresiones. Los enlaces del lado derecho de la tabla enlazan las variables con las columnas de salida que las utilizan o con las variables de etapa que utilizan ellas.

Para definir una variable de bucle:
  1. En el campo Variables de bucle, pulse Añadir variable de bucle +.
  2. Especifique el nombre de variable, el valor inicial, el tipo de SQL, la información ampliada (si la variable contiene datos Unicode), la precisión, la escala y una descripción opcional. Los nombres de variable deben empezar por un carácter alfabético (a-z, A-Z) y solo pueden contener caracteres alfanuméricos (a-z, A-Z, 0-9).
  3. Pulse Aplicar cambios.