Condicional que involucra fecha

Hola buena tarde,

Antes que nada gracias por la ayuda que puedan aportar, soy nuevo en Knime estoy migrando mis flujos de SPSS Modeler y esta es mi primer duda que no pude resolver acudiendo a tutoriales, estoy tratando de obtener un resultado basado en una condición que implica fechas, pero no he encontrado en nodo que me ayude con esto, mi codigo (en modeler) es el siguiente:

if (Fecha_Expiración < @TODAY and Estatus_Contrato = “Active”) then “Completed” elseif
(Fecha_Expiración < @TODAY and Estatus_Contrato /= “Active”) then Estatus_Contrato elseif
Fecha_Expiración >= @TODAY then Estatus_Contrato elseif
(@NULL(Fecha_Expiración) or Fecha_Expiración = “”) then Estatus_Contrato else
“validar”
endif

Les agradezco la ayuda que puedan aportar.

Hola @Yisus :wave:t2: ,

Antes que nada darte la bienvenida al foro de KNIME.
Tanto en este forum como en el KNIME HUB podrás encontrar ejemplos de workflows y otros recursos para que tu viaje con KNIME sea largo y productivo :sailboat:

En relación con tu pregunta yo usaría el nodo Column Expression, se trata de una extensión de KNIME que puedes instalar directamente en tu PC haciendo click en FIle > Install KNIME extensions…>KNIME Labs Extensions > KNIME Expressions. Luego sigue los pasos para instalarla y resetea KNIME.

En esta captura de pantalla puedes ver como sería la configuración del nodo :point_down:t2:

El bloque de código sería el siguiente:

if(and(column("Fecha de expiración") < today(),column("Estatus_Contrato")=="Active"){
    "Completed"
}
else if(and(column("Fecha de expiración")< today(), column("Estatus_Contrato")!="Active"){
    column("Estatus_Contrato")
}

Añadiendo las condiciones que faltan.

Claramente depende también como sea el formato de la columna que contiene la fecha, a lo mejor tienes que usar un nodo antes del Column Expression o modificar ligeramente la expresión.

Espero que pueda serte de ayuda :rainbow:

Para cualquier cosa no dudes en preguntar,

Un saludo.

3 Likes

Mil gracias Diego, esa fue la solución, respecto al Column Expression, creo es nodo muy versátil, tendrás algún material para saber qué se puede hacer con él? (por ejemplo el if no viene contenido en el apartado de function, de no ser por ti, no sabía que se podía utilizar ahí)

Te agradezco Diego!

Hola de nuevo @Yisus

Me alegro que fuera de ayuda, yo también creo que Column Expression es un nodo muy útil :knime: .

Generalmente para sacar el máximo partido a KNIME y conocer cómo funcionan los nodos te recomiendo un par de cosas que a mí me han ayudado muchas veces:

  1. KNIME Community Hub: como te comentaba en al anterior post si tu buscas el nodo Column Expression en la barra de búsqueda del Hub y luego haces click en “Related workflows and nodes” :point_down:t2:

Puedes encontrar ejemplos útiles que te puedes descargar y ejecutar en tu KNIME Analtyics Platform directamente.

  1. Otra buena fuente para conocer los nodos de KNIME es la sección de ayuda:

    En el panel de configuración de cada nodo puedes encontrar el icono :question: . Haciendo click se abrirá otra ventana con información exhaustiva sobre las funcionalidades del nodo.

Por ejemplo, para el Column Expression node puedes encontrar el :link: link para consultar la grámatica y sintaxis de las expresiones usadas en el nodo:

Javascript language

En concreto la sección que habla del If function la puedes encontrar :link: aquí.

  1. El nodo ofrece una serie de ejemplos para cada funcion. Por ejemplo, para las funciones “string” > “join” puedes ver como sería una expresión:

Es verdad que no está el IF en este caso, seguramente porque hay otros nodos que pueden hacer el mismo trabajo, ej. el Rule Engine node sin tener que “escribir” código adicional.

Espero que haya sido de ayuda.

3 Likes