¿Cómo utilizar el componente Lookup?

Descripción

La etapa del procesador Onesait de Dataflow administra los registros recibidos y une los datos de otras ontologías.

Cómo usarlo

Importando el pipeline

Para agregarlo al pipeline, busque Onesait en la paleta de etapas como tal.

Arrástrelo y suéltelo en el panel o simplemente haga clic en él.

Una vez importado, se puede configurar para lograr diferentes comportamientos según el caso.

Pestañas de configuración disponibles

General

Esta pestaña muestra información general y una opción para mostrar el punto generador de eventos en el escenario.

Marcando la opción "Producir Eventos" el escenario muestra otro punto para hacer uso de los eventos.

Los eventos desencadenados son:

  • Documento encontrado

    • Que envía los registros encontrados en una lista (registros encontrados) para cada lote

  • Documento no encontrado

    • Que envía los registros no encontrados en una lista (registros no encontrados) para cada lote

  • Por ejemplo, registros encontrados:

Origen

Esta pestaña muestra un formulario para completar con la información del Broker Digital de la plataforma Onesait.



Adicionalmente, se puede configurar el máximo de caracteres para realizar consultas SQL ya que utiliza el método http GET.

  • Max GET characters: por defecto usa 10000 caracteres para dividir las consultas en trozos, pero si el servidor admite menos o más, debe establecerse aplicando la configuración del servidor. También puede ser útil si el servidor devuelve tiempos de espera al realizar consultas complejas dividiéndolas en otras más simples.

Configuración

Esta pestaña muestra la configuración principal del escenario.

  • Bulk: Número de registros por volumen a procesar.

  • ThreadPool: Número de hilos para crear.

  • Column selector: Los datos a recuperar de la ontología, como sintaxis SQL. P.ej. user.first nombre AS firstName

  • Matching fields: Campos que se utilizarán para hacer coincidir el documento en la ontología.

    • Record field: El campo del registro del que se obtiene el valor.

    • Column name: La ruta de la propiedad en la fuente de datos.

    • Optional path: Si el documento devuelto por la ontología carece de rutas raíz (esto podría deberse al uso del selector de columnas), la ruta para buscar el valor puede ser diferente del campo del nombre de la columna y no se realizará la coincidencia. Esta ruta se puede establecer en este campo separada por puntos (.); De lo contrario, déjela en blanco.

  • Multiple value behaviour. Si se encuentran varios documentos en los campos coincidentes.

    • Use the first record: Solo usa el primer documento obtenido de la fuente de datos.

    • Create a list in the record: Crea una lista en el registro con todos los documentos obtenidos de la ontología.

    • Generate multiple records:Genera nuevos registros según el número de documentos encontrados en la fuente de datos.

  • Set data on path: Establece los datos en la ruta especificada en formato streamsets. P.ej. /userData

  • No value policy:Si no se encuentran datos con la transmisión de datos coincidentes, se activa una acción.

    • Send to error: El nodo genera un error de registro.

    • Left the record unchanged: El registro se deja intacto y se transmite. Esto desencadena el evento de registros no encontrados, pero no produce ningún error.

  • Retry on missing values: Si esta opción no está marcada, la próxima vez que se transmitan los mismos datos, no los obtendrá de la ontología, lo que evitará consultas innecesarias y realizará la acción seleccionada en la opción "Política sin valor".

Consejo de rendimiento para obtener datos de la ontología

Use solo un índice único (campo coincidente en la configuración del nodo) si es posible en ontologías (por ejemplo, identificación única). De esta manera, la búsqueda agrupará mejor las consultas (usando WHERE IN) a la ontología y usará menos recursos; de lo contrario, también agrupará las consultas, pero con menos rendimiento (usando AND y OR).

Cache

Esta pestaña especifica la configuración de la caché. Habilitado por defecto para limitar las consultas a la ontología y así acelerar el proceso y reducir la carga en el servidor.

  • Use local cache:Habilita o deshabilita la caché local para almacenar los datos recuperados de la fuente de datos para limitar las consultas. Habilitado por defecto.

  • Limit cache entries: Desalojo de caché por número de entradas. Desactivado por defecto.

  • Max.  entries: Limita el número de entradas en la memoria caché si la opción está configurada.

  • Cache expiration: Desalojo de caché por tiempo. Desactivado por defecto.

  • Expiration time: Valor del tiempo

  • Time unit: Unidad de tiempo de nanosegundos a días.

  • Expiration policy: Cómo caducan las entradas en el tiempo.

    • Después del último acceso a la entrada.

    • Después de la última escritura de la entrada.

Ejemplos

Ejemplo 1

Digamos que estamos recibiendo registros con una identificación única que se refiere a algunos datos almacenados en una ontología en la plataforma Onesait. En este ejemplo, obtenemos un objeto (usuario) con una identificación de propiedad.

Primero tenemos que configurar la pestaña fuente usando la configuración de nuestro servidor. Luego configuraríamos el nodo con las opciones que se muestran a continuación.

Esta configuración

  • Agrupe los registros en lotes de 20 y genere 5 hilos.

  • Obtener toda la información posible de la ontolgy, ya que no hemos configurado ningún selector de columnas, y así enviando un * en la consulta de selección.

  • Haga coincidir la información del registro obteniendo el valor de la ruta / usuario / id y buscándolo en la ontología en la ruta user.id

  • Utilice la primera coincidencia si se encuentran más, debido a la opción de comportamiento de valores múltiples seleccionada.

  • Establecer los datos en la ruta / userData

  • Si no se encuentra ningún documento, envíe a error

  • Siga volviendo a intentar la consulta a la ontología si no se encuentra ningún documento
    y producir la siguiente salida.

Ejemplo 2

Si solo necesitamos algo de información, podríamos seleccionarlos usando el selector de columnas.

Pero en este caso, los datos devueltos por la consulta no contendrán el "usuario" del nodo raíz porque hemos seleccionado solo dos propiedades del documento,

Returned document
{ "name" : "Bogart", "surname" : "Moyer", "id" : 801 }

Y será necesario establecer la ruta opcional en id. De lo contrario, los datos no coincidirán y los datos devueltos serán

Los datos devueltos por esta configuración si se establece la ruta opcional

Ejemplo 3 - airportsdata

Usando los datos de aeropuertos de ontología podemos crear un buen ejemplo sobre cómo usar la búsqueda.

El objetivo final es obtener la latitud y la longitud de un aeropuerto usando su nombre. Así que entremos en ello.

Etapas involucradas

  • Origen de Onesait - Para obtener los datos de los aeropuertos

  • Evaluador de expresiones: para mover la propiedad del nombre a la raíz del registro

  • Eliminador de campo: para eliminar el resto de los datos

  • Búsqueda: para recuperar los datos seleccionados de la ontología utilizando la propiedad de nombre

  • Papelera - Resultado final

Origen

El sql para enviar la solicitud

select * from airportsdata as c offset ${offset} limit ${batch}

Nota: Podríamos haber seleccionado la propiedad name, pero esto es para recrear un posible escenario.

Evaluador de expresiones

Mueva la propiedad a la raíz del registro.

Campo de expresión: ${record:value('/airportsdata/name')}

Removedor de campo

Mantenga la propiedad del nombre en la raíz del registro.



Buscar

Connection details.





Detalles de consulta

La consulta generada será 

SELECT airportsdata.name,airportsdata.longitude,airportsdata.latitude /*  SELECT  Column name */
FROM airportsdata AS c
WHERE airportsdata.name /*  WHERE  Column name */ IN ('A 511 Airport','A Coru_a Airport','Aachen-Merzbr_ck Airport','Aalborg Airport','Aalen-Heidenheim/Elchingen Airport','Aarhus Airport','Aasiaat Airport','Aba Tenna Dejazmach Yilma International Airport','Abaco I Walker C Airport','Abadan Airport')

Que volverá

[{"name":"A 511 Airport","longitude":"127.03099822998047","latitude":"36.96220016479492"},{"name":"A Coru_a Airport","longitude":"-8.377260208129883","latitude":"43.302101135253906"},{"name":"Aachen-Merzbr_ck Airport","longitude":"6.186388969421387","latitude":"50.823055267333984"},{"name":"Aalborg Airport","longitude":"9.84924316406","latitude":"57.0927589138"},{"name":"Aalen-Heidenheim/Elchingen Airport","longitude":"10.264721870422363","latitude":"48.77777862548828"},{"name":"Aarhus Airport","longitude":"10.619000434899998","latitude":"56.2999992371"},{"name":"Aasiaat Airport","longitude":"-52.7846984863","latitude":"68.7218017578"},{"name":"Aba Tenna Dejazmach Yilma International Airport","longitude":"41.85419845581055","latitude":"9.624699592590332"},{"name":"Abaco I Walker C Airport","longitude":"-78.39969635009766","latitude":"27.266700744628906"},{"name":"Abadan Airport","longitude":"48.2282981873","latitude":"30.371099472"}]



Observe por qué se usa la ruta opcional en este ejemplo. El nombre de la columna es airportsdata.name  pero los datos devueltos carecen del nodo raíz airportsdata por lo que para poder coincidir con el documento, la ruta opcional está configurada para buscar esa ruta json (nombre) en la raíz.

El resultado de la búsqueda añadiendo los datos al registro.

Puede obtener el ejemplo en el enlace siguiente, pero debe editar la información de los clientes.