Limitar Alcances de una Medida
Introducción
En ocasiones necesitamos trabajar con medidas en las cuales no queremos aplicar métodos de agregación, particularmente porque no corresponde algún método de agregación; y sí presentar resultados en los distintos niveles de las dimensiones.
O3BI nos posibilita realizar este tipo de representaciones de resultados en el Desarrollo del Modelo Multidimensional con la herramienta O3 Designer.
Presentamos dos casos sobre el mismo modelo de datos, para explicar su uso.
Los archivos fuentes de datos, modelos multidimensionales y modelos de análisis se encuentran adjuntos a esta documentación.
PRIMER CASO - Definir una Medida con Sin Agregación para la Dimensión Productos
Tenemos fuentes de datos de Ventas de Exportación de Bicicletas y se intenta disponer de una medida la cual no maneja los mecanismos comunes de acumulación sobre una medida (estilo entrada/salida de stock sobre ubicaciones jerárquicas).
Se tiene la posibilidad de generar una fuente de datos con los valores para cada nivel de la dimensión en forma independiente, pero se quiere que el usuario final lo vea como una sola medida integrada.
En la siguiente imagen se pueden observar los resultados.
Implementacion
En las medidas de valores calculados después y del tipo Otra Expresión, se permite el agregado de una expresion que modifique el alcance de la medida para cambiar la implementacion automática de intersección de las medidas base.
La expresión a desarrollar se ejecuta para cada dimensión-nivel, permitiendo modificar el alcance precalculado.
Para ello en primera instancia debemos definir Una Medida Básica por cada Nivel de la Dimensión.
En nuestro ejemplo
- ExpFamily
- ExpLine
- ExpProduct
Luego definir Export como una Medida Derivada del Tipo Otra Expresión
Definir la Expresión de la siguiente manera:
- Por cada nivel de la dimensión y en el orden jerárquico correspondiente, realizar
- nombre_campo_aux=Medida("NombreMedidaBásicaCorrespondienteAlNivel);
- nombre_campo_aux=EsNulo(nombre_campo_aux) ? 0.0 : nombre_campo_aux;
En nuestro caso de ejemplo y para el primer nivel será - family=Medida("ExpFamily");
- family=(EsNulo(family)?0.0:family);
- La última línea de la expresión debe tener los tres niveles separados por el símbolo de "+" y en el orden jerárquico correspondiente, a saber:
- family+line+product
- Finalizamos editando la Expresión del alcance e indicando en
- dimensionName el nombre de la Dimensión Involucrada
- en la expresión lógica levelNumber!= indicar el número de niveles de
SEGUNDO CASO - Utilizar Una Medida sin Agregación para la Dimensión Productos en otra Medida Derivada
Se pude utilizar una medida derivada sin agregación para una Dimensión como Medida en otra Medida Derivada
En nuestro caso vamos a definir una Medida CalcExport que es la multiplicación de la Medida Export (definida en el Primer Caso) por la Medida Cost.
Sencillamente podemos expresar en el editor la multiplicación entre ambas medidas: Cost * Export o también con la forma Medida("Cost") * Medida("Export")
Adjunto a esta documentación está el Modelo Multidimensional y el Modelo de Análisis Resultante
Para la expresión se agregan los siguientes identificadores:
dimensionName ==> Nombre de la dimension actual
dimensionNumber ==> Numero de la dimension actual
levelNumber ==> Numero de nivel actual, segun manejo de redundancia (0 es la hoja, incrementandose hacia la raiz)
Identificadores para el resultado:
aggrScope ==> La medida es entrada/agregacion en esta dimension nivel
undefScope ==> La medida esta indefinida en esta dimension/nivel
allocatedScope ==>
constantScope ==> Se propaga el valor del nivel superior en esta dimension/nivel
defaultScope ==> No se quiere modificar el comportamiento automatico de alcance para esta dimension/nivel