Campaign Classic - Consulta incremental recoge todos los registros en lugar de solo los nuevos

Descripción description

El cliente tiene varias consultas incrementales que no funcionan según lo esperado. En lugar de recoger solamente registros nuevos desde su última ejecución, están recogiendo todos los registros cada vez - como una Consulta actividad.

Resolución resolution

El culpable es el Limpieza flujo de trabajo.

La variable Consulta incremental flujo de trabajo funciona de esta manera:

  1. Mantener una tabla de historial con resultados de iteraciones anteriores.
  2. Recupere TODAS las filas de la consulta de destino.
  3. Filtrar todas las filas presentes en la tabla de historial
  4. Añada los resultados restantes a la tabla de historial para el siguiente filtro de iteración.

Por lo tanto, este nombre de tabla de trabajo del historial es de la siguiente notación:

wkfhistoworkflowid activityName_

Ahora, para los ID de flujo de trabajo 0 (para clientes donde la variable xtknewid permite secuencias negativas), vemos que en realidad es:

wkfhisto(uint)workflow activityName_

Aunque esto está bien para la ejecución del flujo de trabajo.

Por ejemplo, la actividad incremental incremental1 de ID de flujo de trabajo=-1 creará una tabla wkfhisto4294967295_incremental1.

Lo que se pasa por alto es el Limpieza flujo de trabajo.

Aquí tiene un código que intenta eliminar tablas de trabajo de flujos de trabajo eliminados.

Aquí, un código dedicado enumera todas las tablas wkfhisto*, extrae workflowId de sus nombres (de la convención anterior) y los elimina de todos excepto de aquellos cuya worklowIDs se encuentra en la tabla xtkworkflow.

Sin embargo, se pierde el uint parte.

Por lo tanto, intenta buscar un flujo de trabajo con el ID 4294967295 en lugar de ponerlo de nuevo en int. Dado que no se encuentra este flujo de trabajo, se elimina esta tabla. La próxima vez que se ejecute este flujo de trabajo, la variable Consulta incremental activity no encuentra una tabla de historial existente y la crea pensando en esto como la primera ejecución de la historia.

Se ha corregido un problema que hacía que se mostrara:

La solución para este problema está disponible en la versión 20.1.1 de Adobe Campaign Classic (versión 9122 y posteriores).

Soluciones que los clientes pueden utilizar:

Solución 1: Detenga el flujo de trabajo de limpieza y ejecútelo de forma intermitente para limpiar la base de datos y el disco duro hasta que la corrección esté disponible. No recomendado si no tiene una actualización planificada.

Solución 2: Supongamos que la variable Consulta incremental la actividad se ve afectada y se puede solucionar haciendo lo mismo que la Consulta incremental lo hace creando un esquema persistente para guardar el contenido de la tabla del historial. Utilice una combinación de Consulta y Actualización de datos para imitar el comportamiento. Esto debe hacerse para todos los flujos de trabajo que requieren la consulta incremental.

Solución 3:  Supongamos que la variable Consulta incremental la actividad se ve afectada y evite la operación añadiendo un campo de auditoría (tsCreated/tsLastModified) al esquema en cuestión. La consulta incremental se convertirá a una actividad de consulta normal con una cláusula "where" como tscreated GetDate().

Solución 4:

  • Cree una nueva secuencia xtknewworkflowid e inicialícela en algo que esté lejos de los intervalos de workflowId actuales.
  • Cambie el esquema xtkworkflow para usar esto pkSequence
  • Pida al cliente que clone todos los flujos de trabajo afectados y que elimine los originales.
  • Una vez que el cliente esté listo para una actualización, elimine esta corrección volviendo a xtknewId para la creación del flujo de trabajo (para evitar sorpresas no deseadas).
recommendation-more-help
3d58f420-19b5-47a0-a122-5c9dab55ec7f