Si bien es cierto que la mayoría de las dimensiones suelen cambiar poco y no contienen grandes volúmenes de datos, en casi todos los sistemas suele aparecer alguna dimensión monstruo que contiene tanta o más información que la tabla de hechos (clientes, catálogos, visitantes de una página web). ¿Cómo manejar el procesamiento de esa información?

El particionamiento no se puede aplicar sobre las dimensiones y a través de la ventana de procesamiento nuestras únicas opciones parecen ser realizar un procesamiento completo o una actualización. Sin embargo hay una tercera opción; A través de un script XMLA podemos ejecutar el comando ProcessAdd. Este comando va a permitir realizar un procesamiento incremental de la dimensión, añadiendo solo aquellos registros nuevos que identifiquemos sin necesidad de tocar la información almacenada actualmente en la dimensión.

Este tipo de procesamiento no se podrá aplicar sobre dimensión de tipo 1, es decir, aquellas que requieren actualización de los datos históricos.

El proceso incremental de una dimensión tiene varias diferencias con respecto al proceso incremental de un cubo:

  1. No duplica información. Cuando se ejecuta un proceso incremental de una dimensión, si en el conjunto de datos hay información que ya fue previamente cargada, esa información no se carga, es más, ni siquiera llega a actualizarse con los posibles cambios que hubiera sobre los datos anteriores.
  2. Se ejecuta únicamente a través de XMLA. Hay que crear un script específico para que la dimensión pueda actualizarse incrementalmente, dicho script se puede ejecutar tanto desde el SQL Server Management Studio como a través de un paquete de Integration Services.
  3. La fuente es siempre un esquema. Si el esquema del Data Source View no nos aporta el conjunto de datos incrementales entonces habría que indicar el esquema que va a utilizar la dimensión para obtener los datos incrementales.

En los próximos post iremos viendo estos tres puntos en detalle con ejemplos prácticos.