Hitachi Vantara Pentaho Community Wiki
Child pages
  • Evaluando condiciones en la entrada de trabajo "Javascript"

Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migration of unmigrated content due to installation of a new plugin

Introducción

Ocasionalmente surge la pregunta sobre cómo evaluar ciertas condiciones en la entrada de trabajo "Javascript" de la versión 3.x de Pentaho Data Integration.

Evaluación

El resultado de una entrada de trabajo "Javascript" es ó bien verdadero ó bien falso. En otras palabras, debe finalizar con una expresión booleana.

Aquí se listan algunas de las evaluaciones posibles para finalizar un script:

Code Block
lineas_entrada > 100

ó

Code Block
true

ó

Code Block
parent_job.getVariable("DIRECTORIO_ENTRADA").equals("/tmp");

Variables 

Así es como se evalúa el contenido de una cadena variable:

Code Block
parent_job.getVariable("NR_DE_FILAS") == 1000000;

Siendo que tenemos acceso al objeto "parent_job", también podemos establecer variables en el trabajo padre de esta manera:

Code Block
parent_job.setVariable("NR_DE_FILAS", "1000000");

(La llamada a "setVariable" puede evaluar a "falso". Coloque un "true" a continuación para evitar que el paso evalúea a "falso" y arroje un error)

Resultado previo

Cuando una entrada de trabajo finaliza, el resultado de la ejecución será un objeto "Result" expuesto como "previous_result" al motor Javascript

Expresión

Alternativa

Tipo de Dato

Significado

previous_result.getResult()


boolean

"true" si la entrada previa se ejecutó correctamente, "false" si hubo algún error

previous_result.getExitStatus()

exit_status

int

Estado de salida de la entrada de trabajo "Script de línea de comandos" previa

previous_result.getEntryNr()

nr

int

El número de entrada se aumenta cada vez que una entrada de trabajo es ejecutada

previous_result.getNrErrors()

errors

long

El número de errores

previous_result.getNrLinesInput()

lines_input

long

El número de filas leídas de un archivo ó base de datos

previous_result.getNrLinesOutput()

lines_output

long

El número de filas escritas a un archivo ó base de datos

previous_result.getNrLinesRead()

lines_read

long

El número de filas leídas de pasos previos

previous_result.getNrLinesUpdated()

lines_updated

long

El número de filas actualizadas en un archivo ó base de datos

previous_result.getNrLinesWritten()

lines_written

long

El número de filas escritas al siguiente paso

previous_result.getNrLinesDeleted()

lines_deleted

long

El número de filas eliminadas

previous_result.getNrLinesRejected()

lines_rejected

long

El número de filas rechazadas y pasadas otro paso vía manejo de errores

previous_result.getRows()


List<RowMetaAndData>

Las filas resultantes, ver también abajo

previous_result.isStopped()

 

boolean

Bandera que señaliza si la entrada de trabajo anterior se detuvo ó no

previous_result.getResultFilesList()

 

List<ResultFile>

La lista de todos los archivos utilizados en la ó las entradas de trabajo previas

previous_result.getNrFilesRetrieved()

files_retrieved

int

El número de archivos recibidos por FTP, SFTP, etc.

Plataforma

Existe una variable "is_windows" que permite realizar decisiones específicas para cada plataforma.

Filas

La variables "rows" que se expone a Javascript permite evaluar las filas resultado que fueron pasados al trabajo mediante el paso "Copiar filas a resultado".
Aquí hay un script que ejemplifica cómo utilizar el arreglo:

Code Block
var primeraFila = rows[0];

firstRow.getString("nombre", "").equals("Foo")

 Este script seguirá el salto de trabajo verde si la expresión evalúa a verdadero. Esto sucede si el campo "nombre" contiene a la cadena "Foo".