jueves, 2 de julio de 2020

Los determinantes han muerto, vivan las dependencias de las columnas

Hola amigos,

Con este título tan raro voy a tratar un punto muy interesante, un tema que siempre trae de cabeza a las personas que trabajamos con herramientas de BI y es como relacionar tablas que tienen diferentes niveles de detalle y lo voy a realizar en un módulo de datos, no en un paquete de Framework Manager

En Framework Manager se puede relacionar tablas con diferentes niveles de detalle a través de los determinantes, hace ya 9 años ya escribi sobre aquello en esta entrada de mi blog
http://cognosutil.blogspot.com/2011/09/determinantes-la-respuesta-un-misterio.html.

Desde la version 11.1.X este tipo de relación se puede realizar no solo en Framework Manager sino tambien cuando trabajamos directamente con Módulos de Datos. Personalmente creo que es un punto muy bueno. Si quieres conocer como relacionar tablas con diferentes niveles detalle con Data Modules, solo tienes que seguir leyendo, vereis que facil y útil es



Introducción

Cuando se lanzó Cognos 11.1, introdujeron características nuevas en los Módulos de datos que podrían dar pie para considerar pasar de los paquetes de Framework Manager a Módulos de datos para el modelado de metadatos. 

Una de las piezas esenciales que faltaban en las versiones anteriores era la capacidad de relacionar  tablas a diferentes niveles (como lo abordaron los determinantes en Framework Manager).

Sin determinantes, podemos terminar con doble conteo o agregación incorrecta en nuestros informes y paneles. Hasta que se agregara algún tipo de característica para trabajar con escenarios de datos de múltiples granos, era imposible pasar completamente a los Módulos de Datos cuando se trabaja en un almacén de datos.

En los módulos de datos, no tenemos determinantes, lo cual no es algo malo, ya que siempre fueron un poco difíciles de comprender según lo implementado en Framework Manager. En cambio, tenemos algo llamado "dependencias de columna". 

Niveles distintos

Como ejemplo, el objetivo de ventas y Ventas se unen a dimensiones en diferentes campos: el objetivo de ventas se une en el campo del mes en la tabla de tiempo, el objetivo de ventas se une a la tabla Productos en Tipo de producto y el objetivo de ventas se une a la tabla Minoristas en la tabla Minorista mientras que el hecho de ventas se une en el sitio de Fecha, Producto y Minorista (todo con un nivel de detalle más bajo).

En esta tabla creo que queda mas claro y si no lo entiendes envieme un comentario o correo y te lo explico mas profundamente.



Vista en detalle

Veamos primero el modelo antes de agregar dependencias de columna. Tenemos las siguientes relaciones definidas:



"Products" se une a "Sales Fact" por el campo "Product Key". Este es el grano de detalle más bajo en la base de datos (el "grano atómico" como diría Kimball, el padre de este invento de los Datawarehouse).  

En este pantallazo puedes ver en detalle como esta configurada la relación


Cuando observamos la relación entre el objetivo de ventas y los productos, podemos ver que se une a un detalle más alto (clave de tipo de producto).



Este no es el grano más bajo en la tabla Productos, por lo que veremos valores repetidos si incluimos información de ambas tablas de hechos en nuestro informe.

Aquí hay un ejemplo de los datos en un informe:


En este ejemplo, nuestro objetivo de ventas es mucho más alto que nuestro total de ventas. Si agregamos más información al informe, podemos ver errores en las agregaciones:


Como no tenemos un objetivo de ventas para cada producto, sino por tipo de producto, estamos viendo la repetición del objetivo de ventas para cada producto. Cognos Analytics sumará estos valores de manera predeterminada, vemos datos incorrectos en la agregación de Objetivo de Ventas para Tipo de Producto 

Como solucionarlo

¿Como podemos arreglar esto? Agregando dependencias de columna en el módulo de datos.

Para hacer esto, vamos a cada dimensión conformada (cada dimensión que se encuentra entre dos tablas de hechos) y vamos a la pantalla de dependencias de columna.


Comenzamos aquí con una pantalla en blanco.



Desde la tabla Productos, arrastramos las columnas que representan los diferentes grupos de datos que tenemos en esta consulta, por lo que en la tabla de productos, tenemos tres niveles principales o grupos de datos: línea de producto, tipo de producto y producto.


Debe elegir la clave o las columnas de código aquí siempre que sea posible (o los campos que se utilizan para las uniones).

Necesitamos vincular estas dependencias en orden del grano más grueso al más fino. Para hacer esto, comenzamos con la línea de productos y arrastramos el ícono de conexión sobre el tipo de producto. Haz lo mismo de tipo de producto a producto.
A continuación, agrega todas las columnas que tienen el mismo detalle que las columnas iniciales, es decir, aquellos campos que no son claves de la relación y representan habitualmente atributos asociados a la clave por el que se relaciona con la tabla de hechos.


Si probamos nuestro informe nuevamente, esto es lo que veremos:

Si bajamos a más detalle:



Ahora ya no tenemos doble conteo y el dato en el total de Objetivo de venta para el tipo de producto es correcto.

La semana que viene mostraré como utilizar la dependencias de columnas en tablas con datos preagregados.

Ya sabes que si tienes dudas, algún comentario, crítica o lo que quieras me lo puedes añadir en los comentarios o enviarmelo por correo a luis.moreno@sdata.es.










No hay comentarios:

Publicar un comentario

Como visualizar un Funnel en un cuadro de mando y como mejorarlo

Hoy quiero hablar sobre la visualización de un Funnel en un cuadro de mando y como mejorar esta visualización con algunas ideas que he estad...