Evaluando condiciones en la entrada de trabajo "Javascript"
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:
lineas_entrada > 100
ó
true
ó
parent_job.getVariable("DIRECTORIO_ENTRADA").equals("/tmp");
Variables
Así es como se evalúa el contenido de una cadena variable:
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:
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:
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".