Construyendo Datamarts
O3 Builder es el componente responsable de la construcción de los datamarts, a partir de los modelos definidos con O3 Designer.
La construcción del datamart puede ser en forma total (o completa), o incremental.
La construcción completa puede realizarse desde el mismo O3 Designer, con la opción Generar Cubo del menú Archivo, o con el componente O3 Builder.
La construcción incremental se realiza únicamente con el componente O3 Builder.
La construcción o actualización de los datamarts puede ser monitoreada a través de mensajes definidos en O3 Designer asociados a los posibles estados de finalización de dicho proceso.
El O3 Builder puede enviar correos a los destinatarios definidos en el propio modelo, informando sobre el éxito o fracaso de la construcción. Ver Acciones de Construcción.
Construcción Completa (FULL)
Cuando se ejecuta la construcción desde el O3 Designer, el datamart generado corresponde al modelo activo actualmente en el O3 Designer.
Construcción Incremental
La construcción incremental es utilizada para actualizar la información del datamart, evitando la reconstrucción completa a los efectos de ahorrar tiempo y recursos del sistema.
Para la construcción incremental, debe prestarse especial atención en la configuración de los Input Sets y eventualmente de los parámetros de construcción que se utilicen.
Las fuentes de datos que forman el Input Set Incremental deben proporcionar únicamente los nuevos datos del datamart. Si estas fuentes de datos incluyen datos que ya forman parte del datamart, el mismo contendrá datos duplicados.
Para las consultas SQL es posible incluir parámetros de construcción en la cláusula WHERE que limite los registros obtenidos de acuerdo con el valor que toman en cada construcción. Por ejemplo, se pueden definir condiciones dependientes de las fechas de registro o rangos de valores tales como números de facturas, etc.
Durante las construcciones incrementales se toma la definición del datamart (modelo multidimensional,) que se encuentra en el propio archivo .cube, como así también los valores de los parámetros definidos.
Esto significa que en el caso de realizar algún cambio al archivo .mdl es necesario primero realizar una construcción completa para tomar los cambios y luego realizar las incrementales.
Los posibles casos a utilizar son muy variados y dependerá del tipo de información que tengamos.
Ejemplo
Consideremos la construcción incremental de un datamart de estadísticas de ventas en el que se agregan diariamente las ventas del día anterior. Trabajando sobre el modelo multidimensional de Vinos que se entrega con el instalador.
Este datamart esta definido para construirse en las primeras horas de la mañana de cada días.
Lo primero que tenemos que hacer es definir un Input Set que sea del Tipo Incremental (Inc), con el botón Agregar.
Este input set servirá para indicar a las fuentes de datos en qué construcción deben ejecutarse, en la solapa de Input Set.
De esta manera vamos a poder tener consultas que se ejecutarán en las construcciones Full y otras para las construcciones Incrementales, o ambas.
Por ejemplo para las consultas que son Tablas de Hechos tendremos una consulta Full y otra Incremental, mientras que para las consultas que son Tablas de Dimensión indicaremos ambos Input Set.
Tabla de Hechos Full | Tabla de Hechos Incremental | Tablas de Dimensión |
---|---|---|
Ahora debemos definir las consultas de fuentes de las Tablas de Hechos, donde en la Full indicaremos extraer todos los datos y en la incremental con un filtro que indique los datos del día anterior.
Nombre Consulta | Consulta | Input Set |
---|---|---|
Ventas Full | SELECT * FROM VINOS_VENTAS | Full |
Ventas Incremental | SELECT * FROM VINOS_VENTAS where FECHA >= $Fecha_Construccion.OLD$ | Inc |
Se observa que se ha utilizado el parámetro Fecha_Construccion, que deberemos definir en Parámetros del Cubo (para más detalles referirse a la página Definiendo Parámetros)
La definición de un parámetro para filtrar por fechas en una consulta sql, es particular de cada Base de Datos y se debe prestar mucha atención en su definición. Por lo general es un campo de tipo texto.
Para nuestro caso fue definido ---> =(Concatenar(Texto(Año(Hoy())),"-",Derecha(Concatenar("00",(Texto(Mes(Hoy())))),2),"-",Derecha(Concatenar("00",(Texto(Dia(Hoy())))),2)))
para formar un string del tipo AAAA-MM-DD
Cuando se construye el cubo el valor de éste y los demás parámetros quedan en el cubo construído. Por lo tanto es posible referirse al valor anterior del parámetro usando:
$ParameterName.old$ |
Esto significa que se puede incluir el valor real del parámetro y el valor previo en las condiciones de la expresión WHERE como forma de cargar los datos generados desde la última construcción. Por ejemplo:
SELECT * |
Para nuestro caso en particular utilizaremos $Fecha_Construccion.OLD$. Al indicar que este valor sea Controlador (casilla activada), el O3Builder no permitirá que se construya incrementalmente el cubo con el mismo valor que está en el cubo.
Teniendo entonces el modelo multidimensional definido debemos hacer primero una construcción Full y luego las Incrementales, utilizando el O3Builder