Uso de Parámetros en Construcción de Cubos

La utilización de parámetros en el diseño de los modelos multidimensional nos ayudan a liberar el uso de los mismos, y por lo tanto a construir cubos.

A continuación se presentan varios casos más usados y requeridos.

Conexión a Fuentes de Datos

Cuando se define en un modelo multidimensional la conexión a una Base de Datos, se indican valores a propiedades de conexión que pueden cambiar en el futuro, por cambio de servidor, de Base de Datos, entre otros.

Para no tener que modificar todas las conexiones definidas en los modelos multidimensionales, se pueden utilizar parámetros para ser usados en la definición

Cómo se hace?

En la pestaña General de las Propiedades del Cubo, se definen los parámetros necesarios, en nuestro caso driver, protocolo y parametros; indicando los valores respectivos.


A continuación en la definición de la Conexión a la Base de Datos (Nueva Conexión a Consultas SQL), se ingresan en las distintas ventanas los valores correspondientes y cuando sea el turno de los Campos de los parámetros definidos los indicaremos con su nombre entre símbolos de $. De esta forma en el momento de la utilización de ellos serán reemplazados los valores definidos.

Cambio de Conexión a Base de Datos sin modificar el modelo multidimensional

Continuando con el ejemplo anterior nos puede ocurrir que deseamos modificar los parámetros de conexióna una base de datos sin tener que modificar el modelo multidimensional.

Para ello utilizaremos el archivo de parámetros .cfg.

Cómo se hace?

En nuestro caso vamos a cambiar de ubicación de la Base de Datos, de localhost a otra ip (192.168.0.10).

Se genera un archivo plano (ASCII), llamado vinos.cfg y que contiene el nombre del parámetro y el nuevo valor. El archivo puede contener varios parámetros y el único requerimiento es que estén definidos en el modelo multidimensional.

parametro=//192.168.0.10:1527/Vinos

Finalmente cuando se realice la construcción del cubo con el comando builder, se debe incluir en la línea de comandos el uso de este archivo con la opcion -cfg=path/vinos.cfg.

De esta forma se reemplazará el valor de //localhost:1527/Vinos por el de //192.168.0.10:1527/Vinos.

Construcción con intervalo de fechas a requerimiento

En ocasiones nos puede pasar que necesitemos construir un cubo con períodos de fechas distintas, para analizar algún comportamiento en particular; y sin editar el modelo multidimensional.

Cómo se hace?

Se parte de la base de que tenemos una consulta sql de extracción de datos ya diseñada y con condiciones de limitar por una fecha de inicio y fecha final.

select * from vinos_ventas where fecha >= '2015-01-01' and fecha < '2015-02-01'

Además que la forma de indicar la fecha al motor de base de datos sea la presentada ('AAAA-MM-DD')

Definir dos parámetros fechainico y fechafin

Modificar la consulta sql por los parámetros definidos

select * from vinos_ventas where fecha >= '$fechainicio$' and fecha < '$fechafin$'

Se genera un archivo plano (ASCII), llamado vinos.cfg y que contiene el nombre de los parámetros con sus nuevos valores.

fechainicio=2015-02-01
fechafin=2015-02-15

Finalmente cuando se realice la construcción del cubo con el comando builder, se debe incluir en la línea de comandos el uso de este archivo con la opcion -cfg=path/vinos.cfg.

De esta forma se genera un nuevo cubo con información entre el 01 y el 15 de febrero de 2015.


Construcción Full e Incremental

En muchas ocasiones vamos a necesitar definir un modelo multidimensional con construcciones full e incremental, donde diariamente incrementamos/agregamos al cubo datos del día anterior.

Este procedimiento es muy comunmente utilizado en los modelos de Ventas.

Cómo se hace?

Queremos desarrollar un modelo multidimensional de análisis de Ventas, donde diariamente incrementaremos el cubo con las ventas del día anterior.

Para el desarrollo de lograr un modelo con construcción full e incremental se deberán realizar tres pasos fundamentales:

  1. Definición de parámetros - Debemos definir un parámetro para controlar la fecha de ingreso de datos
  2. Definición de Input Sets. Uno para construcción Full y otro Incremental.
  3. Definición de fuentes de datos involucradas en los dos tipos de construcción; y controladas por el parámetro fecha.

Definición de parámetros

En la imagen a continuación se observa como configurar un parámetro para obtener la fecha y con el formato que necesitamos para el motor de base de datos en cuestión. En nuestro caso lo aplicaremos al modelo multidimensional de Bodegas Ventas que viene con la instalación de O3BI (<O3BI>/files/Bodegas/BodegasVentas.mdl)

Agregando los parámetros desde la pestaña General de las propiedades del Cubo.


Definimos un parámetro para condicionar las consultas de extracción de datos por fecha, que sea el valor fecha del momento de construcción del cubo, usando la función Hoy().

Además debemos tener en cuenta la forma de pasar una fecha al motor de base de datos, en nuesto caso se pasa un string 'AAAA-MM-DD'



Definición de Input Sets

En el mismo panel de las propiedadades se define un nuevo Input Set que llamaremos Inc y del Tipo Incremental

Definición de Fuentes de Datos

En lo que refiere a las Tablas de Hechos, definimos una consulta para la construcción full, donde extraermos todos los datos; y otra para la construcción incremental donde extraemos los datos del día anterior.

En el código sql de extracción de datos para la ventas incrementales introducimos el uso del parámetro FechaIncremento.

Para que en la ejecución de la consulta sql extraiga los datos del día anterior vamos a utilizar el valor de la FechaIncremento última, es decir del momento de construcción del cubo, agregando al final del nombre del parámetro el postfijo .OLD. De esta manera tomaremos el valor que quedó guardado en el cubo como FechaIncremento.OLD

La utilización del postfijo .OLD, es de gran utilidad para las construcciones incrementales, ya que podemos utilizar respaldos de nuestros cubos de días anteriores y construir incrementalmente desde esas fechas.

De la misma manera debemos agregar y generar el código sql pertinente, a todas aquellas tablas que sean de Hechos. En nuestro caso de ejemplo la consulta de Costos.

Finalmente debemos relacionar las consultas a los distintos Input Sets.

Tablas de Hechos relacionadas a la construcción full, debemos indicar en la pestaña de Input Sets al correspondiente del tipo de construcción Full (Full)

Tablas de Hechos relacionadas a la construcción incremental, debemos indicar en la pestaña de Input Sets al correspondiente del tipo de construcción Incremental (Inc)

Las Tablas de Dimensión deben estar relacionadas a todos los Input Sets para que puedan construir las dimensiones en todos los casos.

Cómo usar builder para estas construcciones full e incrementales

Para construir los cubos de forma full o incremental debemos indicarle al comando builder que input set utilizará.Un completo detalle del uso del comando builder lo encuentra en el manual correspondiente.

Construcción Full del cubo Bodega Ventas
builder -debug -logfile=C:\IdeaSoft\o3bi\files\Bodega\BodegaVentas.log -logtype=clear C:\IdeaSoft\o3bi\files\Bodega\BodegaVenta.srv
Construcción Incremental del cubo Bodega Ventas
builder -debug -logfile=C:\IdeaSoft\o3bi\files\Bodega\BodegaVentasInc.log -logtype=clear C:\IdeaSoft\o3bi\files\Bodega\BodegaVentaInc.srv -is=Inc

Para la construcción de tipo Full no hay porque indicar la opción -is, el comando builder toma como valor predeterminado el tipo Full.

Es importante tener en cuenta que en el archivo de configuración de actualización de cubos (BodegasVentas.srv), el tipo de publicación upload (Copiar el cubo al servidor una vez construido), no es soportado por el tipo de construcción incremental. Se debe usar como tipo de publicación ninguno.

En caso que querer tener el tipo de publicación upload para la construcción de tipo Full, entonces se debe tener dos archivos como presentamos en los ejemplos de uso de builder, con upload para el full y none para incremental.