Como comentamos anteriormente, cuando se realiza un procesamiento incremental de una dimensión donde el nuevo conjunto de datos se solapa con los datos existentes, la información no se va a duplicar. La información anterior se mantiene y se incorpora la información nueva.

Para nuestro ejemplo, vamos a utilizar una dimensión Hora en la que el atributo clave Hora va a ser visible en la exploración de la dimensión.

El atributo hora tiene como propiedad NameColumn el nombre del minuto y como clave el Id del minuto.

Procesamiento incremental de dimensiones II

La dimensión Hora está asociada a una consulta en el Data Source View que nos ayuda en el procesamiento incremental

SELECT Hora.Idhora,

         Hora.DescripcionHora,

         Hora.NombreHora24,

         Hora.Hora,

         Hora.NombreHora,

         Hora.Minuto,

         Hora.IdMinuto,

         Hora.NombreMinuto,

Hora.Hora24,

         Hora.AM

FROM Hora

        INNER JOIN RangoIncremental ON

                Hora.Idhora >= RangoIncremental.Idfrom

            AND Hora.Idhora <= RangoIncremental.Idto

Donde la tabla RangoIncremental determina el rango de claves a procesar cada vez.

Vamos a inicializar la tabla RangoIncremental con los valores IdFrom = 0 e IdTo = 10 y a continuación vamos a inicializar la dimensión con un procesamiento completo con el siguiente script:

<Batch xmlns=http://schemas.microsoft.com/analysisservices/2003/engine>

<Parallel>

<Process xmlns:xsd=http://www.w3.org/2001/XMLSchemaxmlns:xsi=http://www.w3.org/2001/XMLSchema-instancexmlns:ddl2=http://schemas.microsoft.com/analysisservices/2003/engine/2xmlns:ddl2_2=http://schemas.microsoft.com/analysisservices/2003/engine/2/2>

<Object>

<DatabaseID>ProcesoIncremental</DatabaseID>

<DimensionID>Hora</DimensionID>

</Object>

<Type>ProcessFull</Type>

<WriteBackTableCreation>UseExisting</WriteBackTableCreation>

</Process>

</Parallel>

</Batch>

En este momento, al navegar por los miembros de la dimensión Hora vemos que solo tenemos los 10 elementos que acabamos de incorporar

Procesamiento incremental de dimensiones II

A continuación vamos a modificar la descripción del minuto 00:09 AM en la tabla fuente Hora con la etiqueta ’00:09 AM Nueva’ y vamos a actualizar el contenido de la tabla Proceso Incremental para que el siguiente procesamiento maneje las horas con valores entre 8 y 20.

Ahora si vamos a ejecutar un procesamiento incremental con el siguiente script

<Batch xmlns=http://schemas.microsoft.com/analysisservices/2003/engine>

<Parallel>

<Process xmlns:xsd=http://www.w3.org/2001/XMLSchemaxmlns:xsi=http://www.w3.org/2001/XMLSchema-instancexmlns:ddl2=http://schemas.microsoft.com/analysisservices/2003/engine/2xmlns:ddl2_2=http://schemas.microsoft.com/analysisservices/2003/engine/2/2>

<Object>

<DatabaseID>ProcesoIncremental</DatabaseID>

<DimensionID>Hora</DimensionID>

</Object>

<Type>ProcessAdd</Type>

<WriteBackTableCreation>UseExisting</WriteBackTableCreation>

</Process>

</Parallel>

</Batch>

Cuando navegamos por los miembros de la dimensión, vemos como el minuto 8 sigue manteniendo la misma etiqueta que se había almacenado en el procesamiento inicial, pero ahora vemos los primeros 20 elementos de nuestra tabla Hora

Procesamiento incremental de dimensiones II

Si hubiéramos ejecutado un ProcessUpdate la etiqueta se hubiera actualizado pero hubiéramos perdido aquellos elementos que se encontraran fuera del rango definido en nuestra tabla RangoIncremental

 

0 Shares:
1 comment
Deja una respuesta

Tu dirección de correo electrónico no será publicada.

You May Also Like
Leer más

Expresiones, parámetros y funciones en Azure Data Factory

Hay ocasiones, cuando estamos construyendo pipelines con Azure Data Factory, que queremos repetir patrones para extraer y procesar la información cambiando de manera dinámica, en tiempo de ejecución, valores, orígenes/destinos de los datasets, incluso los mismos linked services. Esto es posible mediante el uso de parámetros, expresiones y funciones. Vamos a ver cómo implementarlo con un ejemplo práctico en el que se nos plantea el siguiente supuesto. Se nos ha pedido que extraigamos todos los días los datos del día anterior de distintas tablas del DW a ficheros en un blob storage que además se nombre como la tabla de origen. Si no pudiéramos utilizar contenido dinámico tendríamos que crear dos datasets (uno de origen y otro de destino) y añadir una actividad de copia por cada tabla a exportar.

Más ejemplos de validación de datos con T-SQL

¿Cómo validas que los datos están proporcionando la información correcta? La validación es un aspecto imprescindible en tus proyectos. ¡Toma nota! A veces podemos realizar conteos a tablas muy grandes que llevan mucho tiempo, o necesitamos comprobar si existe una tabla o un campo dentro de una tabla, o poder comparar los resultados de 2 consultas distintas. Hoy veremos ejemplos de estos casos empleando diferentes técnicas y ejemplos prácticos con T-SQL para detectar posibles errores y su validación.