Saltar al contenido

Funciones Diff

Utilice Funciones Diff para Sincronizar Datos

La función Jitterbit Diff/Synchronize se puede utilizar en transformaciones para sincronizar datos en una sola tabla con cualquier tipo de destino.

La fuente debe ser una base de datos o un archivo CSV. Si es una base de datos, la tabla de origen debe tener un conjunto de claves que identifique de forma única una fila de datos. No se admiten relaciones jerárquicas de tablas de origen.

La función de diferenciación se utiliza para dividir los datos de origen en tres categorías:

  • Filas agregadas
  • Filas actualizadas
  • Filas eliminadas

La primera vez que se ejecuta una operación de diferenciación, todas las filas de origen se clasifican como "agregadas". Con cada ejecución posterior, Jitterbit solo procesará las filas agregadas, modificadas o eliminadas. Esto puede ahorrar un tiempo de procesamiento significativo en los casos en que una tabla de origen tiene numerosos registros que cambian con poca frecuencia.

Como se ve en los pasos siguientes, una " operación de diferenciación" normalmente consta de varias operaciones encadenadas; cada operación sucesiva maneja adiciones, actualizaciones y eliminaciones respectivamente.

Para configurar una operación de diferenciación, siga estos pasos:

  1. Inicialice la sesión de diferencias y defina el tipo de algoritmo de diferencias que se utilizará. Actualmente, ya sea chunked o ordered son compatibles. El chunked algoritmo diff siempre funcionará, pero ordered puede ser más rápido si se garantiza el orden de las filas de datos de origen.
  2. Manejar filas agregadas, actualizadas y eliminadas. El orden en que se manejan es arbitrario y depende del orden de las operaciones que implementan la sincronización.
  3. Finalice la sesión de diferencias. Esto marca el proceso de diferenciación como completo; de lo contrario, una operación de diferenciación futura puede provocar que no se procesen registros.

Advertencia

Las funciones de Diff solo se pueden usar en un único agente privado, ya que las instantáneas de diferencias no se comparten. No lo utilice en un grupo de agentes con más de un agente. No son compatibles con agentes en la nube.

Paso 1: Inicializar la Sesión Diff

Inicialice la sesión diff llamando al InitializeDiff función con un "ID de diferencia" único seguido por el DiffKeyList función (para una chunked diff) o el OrderedDiffKeyList función (para una ordered diff) para definir la(s) clave(s) principal(es) de la tabla de origen:

Example
InitializeDiff("A-unique-diff-ID-for-each-diff-process");
DiffKeyList("pk1", "pk2");

Paso 2: Manejar Filas Agregadas, Actualizadas y Eliminadas

Antes de cada transformación, las funciones DiffAdd, DiffUpdate, y DiffDelete son llamados. A cualquier transformación que se ejecute después de esas llamadas a funciones se le pasarán las filas agregadas, actualizadas o eliminadas respectivamente. El origen de las transformaciones tiene que ser la misma tabla de base de datos o archivo CSV, pero el destino puede ser diferente en los tres casos.

Paso 3: Finalizar la Sesión Diff

El DiffComplete la función debe llamarse cuando los tres casos se hayan manejado con éxito. (En caso de errores, la ResetDiff en su lugar se debe utilizar la función). Esto marca el proceso de diferenciación como completo; de lo contrario, una operación de diferenciación futura puede provocar que no se procesen registros.

Funciones de Diferenciación Adicionales

  • DiffNode: Para fuentes jerárquicas, especifica el nodo que se utilizará como nodo repetitivo para realizar la comparación.
  • OrderedDiffKeyList: Especifica el orden de clasificación de la fuente cuando ordered se utiliza el algoritmo diff.
  • ResetDiff: Restablece o purga la sesión de diferencias. Se utiliza en el manejo de errores para restablecer la sesión de diferencias en caso de falla.
  • SetDiffChunkSize: Establece un parámetro para el chunked algoritmo diff. Un valor mayor es más rápido, pero utiliza más memoria.

Nota

Para ver un ejemplo adicional, consulte Capturar cambios de datos con cambios de tabla o archivo.

DiffAdd

Declaración

void DiffAdd()

Sintaxis

DiffAdd()

Descripción

Solicita los registros agregados como entrada para la siguiente transformación que se ejecute.

Advertencia

Las funciones de Diff solo se pueden usar en un único agente privado, ya que las instantáneas de diferencias no se comparten. No lo utilice en un grupo de agentes con más de un agente. No son compatibles con agentes en la nube.

Ejemplos

// Start by processing the added records in this operation:
DiffAdd();

Nota

Para ver un ejemplo completo que incluya otras funciones, consulte Capturar cambios de datos con cambios de tabla o archivo.

DiffComplete

Declaración

void DiffComplete()

Sintaxis

DiffComplete()

Descripción

Marca el proceso de diferenciación como completo. Este método debe llamarse cuando el proceso de diferenciación se complete exitosamente; de lo contrario, el proceso de diferenciación quedará en un estado inconsistente. En ese caso, la próxima vez que se ejecute la operación de diferenciación, no se procesará ningún registro.

Advertencia

Las funciones de Diff solo se pueden usar en un único agente privado, ya que las instantáneas de diferencias no se comparten. No lo utilice en un grupo de agentes con más de un agente. No son compatibles con agentes en la nube.

Ejemplos

// Flag the diff operation as complete
DiffComplete();

Nota

Para ver un ejemplo completo que incluya otras funciones, consulte Capturar cambios de datos con cambios de tabla o archivo.

DiffDelete

Declaración

void DiffDelete()

Sintaxis

DiffDelete()

Descripción

Solicita los registros eliminados como entrada para la siguiente transformación que se ejecute.

Advertencia

Las funciones de Diff solo se pueden usar en un único agente privado, ya que las instantáneas de diferencias no se comparten. No lo utilice en un grupo de agentes con más de un agente. No son compatibles con agentes en la nube.

Ejemplos

// Requesting deleted records for the transformation run
DiffDelete();

Nota

Para ver un ejemplo completo que incluya otras funciones, consulte Capturar cambios de datos con cambios de tabla o archivo.

DiffKeyList

Declaración

void DiffKeyList(string k1[, string k2,... string kN])

Sintaxis

DiffKeyList(<k1>[, <k2>,... <kN>])

Parámetros Necesarios

  • k1, k2,... kN: Claves de cadena que identifican las columnas en la fuente diff que se utilizarán para identificar de forma única cada registro

Descripción

Establece la lista de claves que se utilizarán para identificar de forma única un registro en la fuente de diferencias. Este método se suele llamar junto con el método InitializeDiff función.

Advertencia

Las funciones de Diff solo se pueden usar en un único agente privado, ya que las instantáneas de diferencias no se comparten. No lo utilice en un grupo de agentes con más de un agente. No son compatibles con agentes en la nube.

Ejemplos

// Using a chunked diff with the synchronizing primary keys
// of CustomerId and OrderId:
DiffKeyList("CustomerId", "OrderId");

Nota

Para ver un ejemplo completo que incluya otras funciones, consulte Capturar cambios de datos con cambios de tabla o archivo.

DiffNode

Declaración

void DiffNode(string nodeName)

Sintaxis

DiffNode(<nodeName>)

Parámetros Necesarios

  • nodeName: Una cadena que especifica el nodo repetido que se utilizará para la operación de diferenciación.

Descripción

Para las fuentes jerárquicas, esto especifica el nodo que se utilizará como nodo repetitivo en el que se realizará la comparación.

Advertencia

Las funciones de Diff solo se pueden usar en un único agente privado, ya que las instantáneas de diferencias no se comparten. No lo utilice en un grupo de agentes con más de un agente. No son compatibles con agentes en la nube.

Ejemplos

// Run the diff on the XML element node <Listing>
DiffNode("Listing");

DiffUpdate

Declaración

void DiffUpdate()

Sintaxis

DiffUpdate()

Descripción

Solicita los registros actualizados como entrada para la siguiente transformación que se ejecute.

Advertencia

Las funciones de Diff solo se pueden usar en un único agente privado, ya que las instantáneas de diferencias no se comparten. No lo utilice en un grupo de agentes con más de un agente. No son compatibles con agentes en la nube.

Ejemplos

// Requesting updated records for the transformation run
DiffUpdate();

Nota

Para ver un ejemplo completo que incluya otras funciones, consulte Capturar cambios de datos con cambios de tabla o archivo.

InitializeDiff

Declaración

void InitializeDiff(string diffId)

Sintaxis

InitializeDiff(<diffId>)

Parámetros Necesarios

  • diffId: Una cadena que identifica de forma única la operación de diferenciación de otras operaciones de diferenciación que se ejecutan en el sistema. La cadena debe ser la misma para cada ejecución de la operación para poder identificar la diferencia correctamente.

Descripción

Inicializa una nueva sesión de diferencias.

La cadena pasada como diffId debe ser diferente de todos los demás identificadores de diferencias utilizados en el sistema, pero debe ser el mismo** cada vez que se ejecuta la operación. Si ya se está ejecutando una sesión de diferencias, la llamada a este método fallará. Para borrar una sesión de diferencias anterior (como en el caso de una falla del sistema), llame a la función ResetDiff() una vez.

Este método normalmente se llama en el secuencia de comandos previo al código fuente de la primera operación que implementa una diferencia/sincronización.

Advertencia

Las funciones de Diff solo se pueden usar en un único agente privado, ya que las instantáneas de diferencias no se comparten. No lo utilice en un grupo de agentes con más de un agente. No son compatibles con agentes en la nube.

Ejemplos

// Synchronize the order database:
InitializeDiff("Order Database Synchronization");

// Using chunked diff with the synchronizing primary keys
// of CustomerId and OrderId:
DiffKeyList("CustomerId", "OrderId");

// With sufficient memory available, increase the chunk size:
SetDiffChunkSize(100000);

// Start by processing the added records in this operation:
DiffAdd();

Nota

Para ver un ejemplo completo que incluya otras funciones, consulte Capturar cambios de datos con cambios de tabla o archivo.

OrderedDiffKeyList

Declaración

void OrderedDiffKeyList(string k1, bool isAscending1[, string k2, bool isAscending2,... string kN, bool isAscendingN])

Sintaxis

OrderedDiffKeyList(<k1>, <isAscending1>[, <k2>, <isAscending2>,... <kN>, <isAscendingN>])

Parámetros Necesarios

  • k1, k2,... kN: Cadenas con los nombres de las claves de columna que se utilizarán para identificar de forma única un registro en una fuente
  • isAscending1, isAscending2,... isAscendingN: Valores booleanos para cada columna que indican si cada columna está ordenada de forma ascendente (verdadero) o descendente (false)

  • El número de argumentos suministrados debe ser dos o más y debe ser un número par.

Descripción

Establece la lista de claves utilizadas para identificar de forma única un registro en la fuente y especifica el orden de registro de la clave como ascendente (true) o descendente (false).

Utilice este método (en lugar del DiffKeyList función) en los casos en los que se garantiza que los registros fuente estarán en un orden específico.

El procesamiento de Diff es más eficiente si los campos de origen se ordenan de la misma manera cada vez. En esos casos, no se utilizará ningún tamaño de fragmento y el uso de memoria no será un problema. Este método normalmente se llama junto con el InitializeDiff función.

Advertencia

Las funciones de Diff solo se pueden usar en un único agente privado, ya que las instantáneas de diferencias no se comparten. No lo utilice en un grupo de agentes con más de un agente. No son compatibles con agentes en la nube.

ResetDiff

Declaración

void ResetDiff(string diffId, int action)

Sintaxis

ResetDiff(<diffId>, <action>)

Parámetros Necesarios

  • diffId: Una cadena que identifica de forma única la operación de diferenciación de otras operaciones de diferenciación que se ejecutan en el sistema.
  • action: Un número entero (0 o 1) que especifica cómo se restablecerá la sesión de diferencias

Descripción

Restablece una sesión de diferencias existente.

El action parámetro (0 o 1) especifica cómo se debe restablecer la sesión de diff:

  • 0 (Restablecer): Olvida por completo la última instantánea y comienza desde el principio. Esto obligará al sistema a tratar todas las entradas como "agregadas".
  • 1 (Purgar): Elimina todos los archivos que quedaron de una sesión de diff anterior. Esto no restablece la última instantánea; solo borra los archivos obsoletos que quedaron de sesiones de diff antiguas, fallidas o canceladas.

Este método generalmente se llama cuando se ha cambiado algo en un proceso de diff existente o si un proceso de diff ha fallado y ha quedado en un estado inconsistente. No se debe llamar durante el procesamiento de diff normal. Si no hay una sesión de diff presente para este diff_id, no se realiza ninguna acción.

Advertencia

Las funciones de Diff solo se pueden usar en un único agente privado, ya que las instantáneas de diferencias no se comparten. No lo utilice en un grupo de agentes con más de un agente. No son compatibles con agentes en la nube.

Ejemplos

// Purge any files left over from a previous diff session,
// but keep the latest snapshot
ResetDiff("Order Database Synchronization", 1);

Nota

Para ver un ejemplo completo que incluya otras funciones, consulte Capturar cambios de datos con cambios de tabla o archivo.

SetDiffChunkSize

Declaración

void SetDiffChunkSize(int chunkSize)

Sintaxis

SetDiffChunkSize(<chunkSize>)

Parámetros Necesarios

  • chunkSize: Tamaño en bytes de los fragmentos utilizados durante la comparación

Descripción

Establece el tamaño del fragmento (en bytes) utilizado durante la comparación.

Un tamaño de fragmento mayor hará que el sistema utilice más memoria, pero procesará la comparación más rápido. El valor predeterminado es 50000 bytes; si tiene suficiente memoria, puede aumentar este número.

Este método se suele llamar junto con el InitializeDiff función.

Advertencia

Las funciones de Diff solo se pueden usar en un único agente privado, ya que las instantáneas de diferencias no se comparten. No lo utilice en un grupo de agentes con más de un agente. No son compatibles con agentes en la nube.

Ejemplos

// With sufficient memory available, increase the chunk size:
SetDiffChunkSize(100000);