Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 41 Next »

Parámetros

Los parámetros permiten generalizar una fórmula para poder introducir "grados de libertad" en su definición. Esto es, en lugar de utilizar una fórmula como Producción = Producción Anterior x 0,57, utilizar una del estilo Producción = Producción Anterior x IPC y posteriormente alterando el valor del coeficiente IPC explorar distintas alternativas. En esta fórmula el IPC representa el Indice de Precios al Consumo, indicador común utilizado para fórmulas de proyección.

Existen dos clases de parámetros: Globales y Locales, asociado al lugar en donde son definidos. Los parámetros globales pueden ser utilizados en cualquiera de los componentes tan solo referenciándolos (ver Componentes), los parametros locales valen solo en el contexto del componente en el cual son definidos y no necesitan ser referenciados.

Para definir un párametro global se accede con el botón derecho sobre Parámetros Globales a la opción del menú Agregar/Parámetro, para los parámetros locales es identico pero el click se hace sobre Parámetros dentro de la definición de un componente. La interfase asociada en ambos casos es la siguiente:
 
Figura 1: Definición de un parámetro.
 
Un parámetro esta identificado por su nombre y como se puede ver en la Figura 1 además posee una descripción. Un parámetro también cuenta con la posibilidad de asociar una función de agregación, una expresión de post-procesamiento y un valor por defecto. El valor por defecto será devuelto por el parámetro cuando no sea posible encontrar un valor.

Alcances

Considere la fórmula de producción (Producción = Producción Anterior x IPC). El valor del parámetro IPC en general varía para cada mes del año. Para modelar estos casos, es necesario introducir un concepto a la definición de parámetro que se le llama alcance. Dado que los parámetros en general varian en función del contexto en el cual son utilizados (mes corriente, producto, etc.), es necesario, por un lado, definir en función de que varíaa un parámetro y, por otro lado, en el caso que existiera más de una posibilidad, con que criterio se consideran las distintas posibilidades.

Un alcance es una definición de los elementos que es necesario considerar para obtener el valor del parámetro.
Ejemplos:

  • El Descuento puede depender del cliente.
  • La Comisión puede variar según el vendedor que haga la venta.
  • El IVA depende del producto.
  • La Ganancia Esperada puede depender del producto y de la fecha del año.

También es necesario considerar el hecho de que pueden existir varios alcances para un mismo párametro. Tomemos el ejemplo del parámetro Descuento. Los diferentes alcances pueden ser:

  1. El descuento en los zapatos para para la empresa Coca-Cola es de un 18%.
  2. Si no está en el caso anterior, el descuento de los zapatos es un 15%, el de las botas un 13% y el de las sandalias un 10%.
  3. Si no es ninguno de los casos anteriores el descuento es un 5%.

Lo anterior está definiendo al mismo tiempo cuales son los alcances y cual es el orden en que estos se consideran. De los alcances en cada caso interesa saber cual es la información del contexto que se debe  considerar. A esta información de contexto se le asocia el nombre de dimensión inspirandose en un espacio dimensional en el cual los valores del parámetro son puntos dentro de este. En el caso de Descuento las dimensiones para cada uno de sus alcances son:

  1. Producto y Empresa.
  2. Producto.
  3. Nada. 

Un alcance se define con la siguiente interfase. Se llega a ella desde el menú con el botón derecho estando situado en un parámetro:

 
Figura 2: Definición de un alcance
 
En la Figura 2 se aprecia que para definir un alcance se provee su nombre, una descripción (opcional) y cada una de las "dimensiones" que son necesarias para considerarlo. En un extremo, el conjunto de las "dimensiones" puede ser vacío y es equivalente a decir que el parámetro no varía en función de ningún aspecto. Considerando el ejemplo inicial del IPC, las "dimensiones" que se consideran son year (año) y month (mes) para modelar que varía para cada mes del año.
El siguiente aspecto relacionado con el tema de alcance es que cada uno se obtiene de una tabla en la base de datos, realizando precisamente una consulta en función de las columnas asociadas a las "dimensiones" en cuestión. La lengueta Fuente que se puede apreciar en la Figura 3 muestra la definición de la referencia a la tabla:
 

 
Figura 3: Fuente asociada al parámetro.
 
En la Figura 3 se aprecia como el alcance denominado IPC (definido en la Figura 2) se obtiene de la tabla IPC del esquema DW definido en la Metadata. El campo de la tabla que contiene el valor del parámetro es IPC_VALUE y los valores de las columnas IPC_YEAR e IPC_MONTH se obtienen del contexto como year y month respectivamente. La sentencia SQL asociada a la obtención del valor del parámetro IPC es la siguiente:
 

select IPC_VALUE from IPC where IPC_YEAR = year and IPC_MONTH = month

donde year y month tomarán sus valores del año y mes donde el parámetro se esté utilizando. Recordar que el esquema DW hace referencia al definido mediante la Metadata. Notar que el alcance y los campos que es necesario identificar en la tabla coinciden.

Supongamos que también se desea agregar un alcance que de el valor promedio para el año, de forma de utilizarlo cuando no se tiene el dato del mes. En esta situación el alcance se ubica posteriormente al de la Figura 3 (para que sea considerado solo cuando no hay valor para el mes, ver más abajo) y en la definición de este seguramente aparecera mencionada otra tabla, que solo tendra las columnas IPC_YEAR e IPC_VALUE

La Figura 3 también muestra que es posible asociar una etiqueta que se utilizara en los ABM's que se generaran para el parámetro. También sería posible mediante la opción Cargar en Memoria que todos los valores de la tabla se cargaran en memoria al comienzo de la simulación, para evitar tener que estar recurriendo a la base de datos cada vez que el parámetro sea utilizado. Cargar en memoria es solamente una optimización y no afecta el valor del parámetro.

Si se detectará que el parametro esta siendo versionado se marcaría automaticamente la casilla Versionable. El tema de manejo de versiones no será tratado en esta sección, pues para esto se dedico una sección especialmente (ver Manejo de Versiones).

En cuanto a la resolución de parámetros es necesario puntualizar que los distintos alcances se recorren en el orden en que fueron definidos y la primer alternativa que se satisfaga será el valor retornado. Para que un alcance sea satisfecho deben ocurrir dos aspectos:

  1. Todas las dimensiones deben tener un valor de forma de poder armar la consulta. Esto es, si month no esta definido en el ejemplo de la Figura 3 el alcance no es aplicable. La razón es bastante simple, no hay valor para poner en la sentencia SQL.
  2. La sentencia debe retornar algún valor y este no puede ser nulo.
     
    Para completar la idea presentada en la introducción, un parámetro alcanza a tomar el valor por defecto (si este fue especificado) cuando ninguno de los alcances definidos para el parámetro retorna un valor que satisfaga. Obviamente todo parámetro debe por lo menos tener un alcance para estar bien definido. En un futuro también se tomaran valores de otras formas (SQL, tablas cradas en el momento, cubos, etc.)

Función de Agregación

Existen situaciones en las cuales en lugar de contar directamente con el valor en la base de datos se cuenta con una desagregación de estos, es decir, para obtener el valor hay que sumar, promediar, etc. una serie de valores.

En el ejemplo de IPC supongamos que para cada día esta registrado el valor del IPC y por tanto la sentencia select IPC_VALUE from IPC where IPC_YEAR = year and IPC_MONTH = month traerá muchos valores. Supongamos por otra parte que lo que deseamos es el promedio del mes correspondiente para utilizar en la fórmula. O sea que estamos pensando en una sentencia SQL de la forma:

select avg(IPC_VALUE) as IPC from IPC where IPC_YEAR = year and IPC_MONTH = month

En este preciso caso es cuando se utiliza la función de agregación. Para el ejemplo planteado, las definiciones realizadas en las Figuras 2 y 3 son identicas y la unica diferencia radica en que en la Figura 1, en el cuadro función de agregación debemos colocar avg

Notar que si colocamos cualquier función de agregación, pero la consulta regresa un registro la operación no tiene efecto (avg, sum, max y min cumplen esta regla).

La función de agregación se ingresa como ya se presento en la interfase principal de definición del parámetro (Figura 1), si es necesario también se puede pedir una sugerencia de las funciones de agregación mas comunes en una base de datos (Figura 4). Lo que se aquí se presenta es solo en calidad de sugerencia, si se deseara utilizar otra función soportada por la base de datos basta solo tener presente la SQL que luego se formara con esta (select ..., FUNCION(...) from ...).
Figura 4: Ayuda para la función de agregación. 
 

Expresión de Post Procesamiento 

Otra situación común que esta contemplada por esta funcionalidad es el post-procesamiento de parámetros. Supongamos que la tabla IPC de la cual se obtienen los valores del parámetro tiene la siguiente información:

IPC_YEAR

IPC_MONTH

IPC_VALUE

 2005

Enero 

1

 2005

Febrero

2

 ...

... 

... 

La columna IPC_VALUE tiene la variación del indice registrada en el mes (1% en Enero, 2% en Febrero). En una fórmula del estilo la de la introducción (Producción = Producción Anterior x IPC) estos valores no conducen a un resultado correcto, sería necesario cambiar la fórmula por una expresión así:

Producción = Producción Anterior x (1 + (IPC / 100))

ahora la fórmula convierte el 1% a 1.01 que al ser multiplicado incrementa en un 1%. Se trata claramente de un problema númerico, dado que en lugar de tener el 1.01 en la tabla se tiene el porcentaje.

El cambio en la fórmula si bien soluciona el problema oscurece el entendimiento de esta ampliamente.

La expresión de post-procesamiento ofrece la posibilidad de precisamente post procesar el valor antes de entregarlo a la fórmula, es como realizar un cambio de variable enfocandolo desde un punto de vista matematico. En nuestro ejemplo imaginemos lo siguiente:

IPC = 1 + (IPC / 100)
Producción = Producción Anterior x IPC

Si inmediatamente luego de obtener el valor del IPC de la base de datos (1%), este es transformado para dejarlo de una forma que haga pasible usarlo (1 + (IPC / 100)=1.01) y recien ahi se evalua la fórmula, entonces el resultado obtenido es correcto. El impacto del cambio necesario solo implica a la definición del parámetro, solo es necesario indicar la expresión de post procesamiento para el parámetro y en definitiva la solución es mejor lograda que con un impacto directo en la fórmula.

La función de post procesamiento como ya se aprecio se define en la interfase principal de un parámetro. En el lugar determinado en la Figura 1 se puede escribir la fórmula o también se puede hacer utilizando el editor de expresiones (Figura 5). 
Figura 5: Función de post procesamiento. 
 
Para finalizar es necesario mencionar que la función de post procesamiento solo se aplica cuando se obtiene un valor no nulo de la base de datos. Esta función tampoco se aplica al valor por defecto, dado que es razonable que ya se de el valor en forma correcta.  
 

  • No labels