Filtros y condiciones
Cuando necesite filtrar datos o conseguir un valor de forma condicional, utilice uno de estos componentes:
•Filtro: nodos/filas ( )
•WHERE/ORDER de SQL ( )
•Condición If-Else ( )
Estos componentes se pueden añadir en la asignación desde el menú Insertar o desde la barra de herramientas Insertar componente. A continuación vamos a explicar las diferencias entre estos componentes, su comportamiento y sus requisitos.
Filtrar nodos o filas
Cuando necesite filtrar datos, incluidos nodos XML o filas CSV, utilice un componente Filtro: nodos/filas. Este componente permite recuperar un subconjunto de nodos de un conjunto de datos de mayor tamaño, usando una condición true o false. Esta es su estructura en el área de asignación:
En la estructura de filtro anterior, la condición que está conectada a bool determina si la entrada node/row que está conectado se pasa a la salida on-true o a la salida on-false. Es decir, si la condición se cumple (es true), entonces node/row se redirige a la salida on-true. Por el contrario, si la condición no se cumple (es false), entonces node/row se redirige a la salida on-false.
Cuando necesite que la asignación solamente consuma elementos que cumplan la condición de filtrado, puede dejar sin conectar la salida on-false. Si necesita procesar los elementos que no cumplan la condición de filtrado, entonces conecte la salida on-false al nodo de destino donde se deben redirigir dichos elementos. Si quiere añadir una excepción para cuando la condición de filtrado no se cumpla, será obligatorio conectar la salida on-false (véase Añadir excepciones).
Para ver un ejemplo con instrucciones paso a paso consulte el apartado Ejemplo: filtrar nodos.
Filtrar datos de base de datos
Los componentes Filtro: nodos/filas pueden filtrar datos de cualquier otra estructura compatible con MapForce, incluidas las bases de datos. Sin embargo, si desea filtrar datos de una base de datos, lo más recomendado es usar un componente WHERE/ORDER de SQL. Este componente está optimizado para trabajar con bases de datos y ofrece un mayor rendimiento que el componente Filtro: nodos/filas.
Para más información consulte el apartado Componente WHERE/ORDER de SQL.
Devolver un valor de forma condicional
Si necesita obtener un solo valor (en lugar de un nodo o de una fila) de forma condicional, lo mejor es usar la condición If-Else. Recuerde que estas condiciones no son adecuadas para el filtrado de nodos o filas. A diferencia de los componentes Filtro: nodos/filas, las condiciones If-Else devuelven un valor de tipo simple (como una cadena o un entero). Por tanto, estas condiciones solamente deben utilizarse cuando sea necesario procesar un valor simple de forma condicional. Por ejemplo, imagine que tiene una lista de las temperaturas medias de cada mes en este formato:
<Temperatures> |
Una condición If-Else permite devolver por cada elemento de la lista el valor "alto" si la temperatura supera los 20 grados centígrados y el valor "bajo" si la temperatura es inferior a los 5 grados centígrados.
En la asignación la estructura de la condición If-Else sería:
Si la condición que está conectada a bool es true, entonces el valor que está conectado a value-true se devuelve como result. Si la condición es false, el valor que está conectado a value-false se devuelve como result. El tipo de datos de result se conoce previamente y depende del tipo de datos del valor que está conectado a value-true o value-false. Lo importante es que siempre sea de tipo simple (cadena, entero, etc.). Las condiciones If-Else no admiten el uso de valores de entrada de tipo complejo (como nodos o filas).
Además, las condiciones If-Else son extensibles. Esto significa que puede añadir varias condiciones al componente con solo hacer clic en el botón Agregar . Para eliminar una condición añadida previamente, haga clic en el botón Eliminar . Esta característica permite comprobar si se cumplen varias condiciones y devolver un valor distinto para cada condición.
Las condiciones If-Else extendidas, se evalúan de arriba a abajo (se comprueba en primer lugar las condiciones situadas más arriba). Si desea devolver un valor aunque no se cumpla ninguna condición (es decir, aunque ninguna condición sea true), conecte el valor a otherwise.
Para ver un ejemplo con instrucciones paso a paso consulte el apartado Ejemplo: devolver un valor de forma condicional.