# (Crono ETL) Nueva sentencia MERGE (breaking change)

7 de abril de 2022
Ver en GitHub

La versión 22.14 de Crono ETL incorpora una novedad muy importante que lamentablemente introduce algunas incompatibilidades con el código anterior.

ES NECESARIO MIGRAR TODOS LOS PROCEDIMIENTOS DE CARGA QUE UTILICEN LA INSTRUCCION "LOAD"

Algunas consideraciones sobre esta migración:

  • La migración es necesaria, pero es rápida y sencilla.
  • Solo afecta a la instrucción LOAD
  • La carga de vuestros DWH seguirá funcionando sin interrupciones, ya que los procedimientos implementados no se ven afectados.
  • El "problema" se mostrará al intentar modificar un procedimiento existente. En ese momento, será necesario migrar ese procedimiento, pues la instrucción LOAD no funcionará o no lo hará exactamente igual que antes.
  • La recomendación es migrar todos los procedimientos cuanto antes.

En resumen:

Anteriormente se utilizaban unas "estrategias" personalizables para definir las estrategias de carga de cada proyecto. En esas estrategías se definían los campos de auditoría (fecha de inserción, fecha de actualización, etc.) y el tipo de carga (SCD1, SNAPSHOT, Incremental, etc.).

Sin embargo, la experiencia nos mostró que todos los proyectos utilizaban las mismas estrategias, por lo que era redundante y confuso tener que definirlas en cada proyecto. Por este motivo, hemos decidido eliminar las estrategias, la instrucción LOAD y ofrecer una alternativa más sencilla que cubra todos los casos de uso (o al menos los más habituales).

Para ello:

  • Se han añadido nuevas propiedades de proyecto para definir los campos de auditoría
  • Se han añadido funcionalidades a la instrucción MERGE de Crono.

image

Ahora cualquier LOAD se puede sustituir por alguna de estas instrucciones:

  • MERGE CLONE (el antiguo "SNAPSHOT" o "carga completa")
  • MERGE SOFT DELETE (el antiguo "SDC1")
  • MERGE HISTORY (el antiguo "SCD2")
  • MERGE UPSERT (el antiguo "UPDATE OR INSERT")

Por supuesto, se pueden seguir utilizando

  • UPDATE
  • DELETE
  • DELETE AND INSERT
  • etc.

Así es el aspecto de las nuevas cargas:

image

Entendemos que como cualquier cambio o "breaking change" resulta molesto, pero hemos decidido asumir el inconveniente pensando en el futuro y valorando la simplicidad del nuevo código (ya no son necesarias las "estrategias").

Nos pondremos en contacto con todos vosotros para planificar la migración. Como siempre, podéis contactar con nosotros ante cualquier duda y problema.

Gracias por la comprensión.

Ver en GitHub