Tengo un conjunto de datos de entrada cuyos registros se agregarán a una base de datos existente. Antes de agregarse, los datos pasarán por un procesamiento pesado que requiere mucho tiempo. Quiero filtrar los registros del conjunto de datos de entrada que ya existen en la base de datos para reducir el tiempo de procesamiento.
La diferencia entre la entrada y la base de datos se ilustra aquí:
Esta es una descripción general del tipo de proceso que estoy viendo. Los datos de entrada eventualmente alimentarán la base de datos.
Mi solución actual implica usar un transformador Matcher en la base de datos y la entrada combinadas, luego filtrar el resultado NotMatched usando un FeatureTypeFilter para retener solo los registros de entrada.
¿Existe una forma más eficiente de obtener las características de diferencia?
fuente
SQLexecutor
. Si el atributo _matched_records es 0 en el iniciador, entonces es un complementoRespuestas:
Si tiene las características de la base de datos indicadas en el diagrama. Entrada pequeña, superposición pequeña, objetivo grande. Entonces, el siguiente tipo de espacio de trabajo puede funcionar de manera bastante eficiente, a pesar de que realizará múltiples consultas en la base de datos.
Entonces, para cada característica leída de la consulta de entrada para la característica coincidente en la base de datos. Asegúrese de que haya índices adecuados en su lugar. Pruebe el atributo _matched_records para 0, realice el procesamiento y luego insértelo en la base de datos.
fuente
No utilicé FME, pero tenía una tarea de procesamiento similar que requería usar la salida de un trabajo de procesamiento de 5 horas para identificar tres posibles casos de procesamiento para una base de datos paralela a través de un enlace de red de bajo ancho de banda:
Como tenía una garantía de que todas las características retendrían valores de ID únicos entre pases, pude:
En la base de datos externa, solo tenía que insertar las nuevas características, actualizar los deltas, llenar una tabla temporal de uIDs eliminados y eliminar las características en la tabla de eliminación.
Pude automatizar este proceso para propagar cientos de cambios diarios a una tabla de 10 millones de filas con un mínimo impacto en la tabla de producción, utilizando menos de 20 minutos de tiempo de ejecución diario. Funcionó con un costo administrativo mínimo durante varios años sin perder la sincronización.
Si bien es ciertamente posible hacer N comparaciones entre M filas, el uso de un resumen / suma de verificación es una forma muy atractiva de realizar una prueba de "existencia" con un costo mucho menor.
fuente
Utilice featureMerger, uniendo y agrupando por los campos comunes de BASE DE DATOS Y DATOS DE ENTRADA.
fuente