Programación de una ETL en función de la fecha de ejecución

02.04.2014 20:27

A  menudo es necesario en la construcción de un datawarehouse guardar una "foto" en un conjunto de ficheros históricos de los datos que estamos trabajando. Esto puede implicar mas de un job del agente sql que lanza la ETL que construye nuestro almacén de datos.

Supongamos por ejemplo, que estamos trabajando un determinado datawarehouse que actualiza los datos de un servidor de producción diariamente y que cada dia 1 del mes hace un guardado de datos en una tabla histórica.

Resumidamente, nuestro proceso consta de dos Data Flow, ambos se encuentran en un mismo

paquete que se ejecuta diariamente para actualizar los datos y deseamos que el segundo se ejecute una vez al mes.

Para ello haremos doble clic en el conector que une ambos data flow

 

En la ventana que aparece podemos evaluar la acción del data flow precedente mediante la constraint de Succes-Failure

y también un desplegable que nos permite evaluar la operacion mediante una constraint, una expresión o la combinación de ambas



Utilizaremos la combinación de expresión y constraint y escribiremos en la casilla de expresión lo siguente

Day(Getdate())==1

la cual nos evalua el dia actual y si es el primero del mes, ejecutará el dataflow siguiente:

Nuestro flujo de trabajo representará gráficamente que la siguiente acción se evalua mediante una expresión, pudiendo variarse

dicha función en la medida de cualquier necesidad del proyecto.