3  Modelado analítico

El modelado cubre una necesidad muy real y operativa. El modelado, tal y como lo hemos vista hasta ahora permite eliminar redundancias, hacer la gestión de datos coherente con los requisitos del negocio y aún así, sacar el máximo provecho del sistema. Sin embargo no está orientado a ser sencillo de operar o entender por parte de aquellos que quieren extraer conocimiento de los datos.

Ejemplo de la base de datos Northwind

Por ello, ya que de todos modos tenemos que disponer un sistema pensado para analítica, por qué no darle una forma que haga la información más fácil de consumir. Aunque este proceso no está falto de trabajo. William (Bill) Inmon es reconocido como el padre del concepto almacén de datos o data warehouse (Inmon 2005). Un data warehouse es esencialmente ese repositorio donde residen todos los datos de la compañía, no de forma operacional, si no para poder realizar consultas, análisis e informes sobre ellos. Esto permite además unificar las distintas fuentes para dar una visión cohesionada de los procesos en la empresa y sus datos asociados.

Data Warehouse

Sin embargo, el modelo de Inmon requería una consolidación entre fuentes que es difícil de construir. Además, el ritmo al que operan las distintas unidades hace que existan urgencias de datos que “no pueden esperar”. Un enfoque algo más pragmático que permitía enfocarse en necesidades concretas es asociado con Ralph Kimball, cuyo Data Warehouse Toolkit (Kimball y Ross 2013) sigue siendo la referencia canónica del modelado dimensional. Fue años más tarde y quizás el progreso de la tecnología hacia los 90 hizo posible el enfoque de Kimball pero sin duda es uno de los modelados más comunes cuando nos acercamos a las áreas de consumo de datos. De hecho, el término Business Intelligence se inicia en esta época gracias al foco en el warehousing y el modelado analítico.

3.1 Modelado dimensional

El modelado dimensional, en estrella o también referido Kimball, se enfoca en disponer las dimensiones de corte de los análisis en tablas muy próximas a los conceptos de entidad que comentamos en el modelado Entidad-Relación y los hechos, acontecimientos en otra entidad de crecimiento más frecuente y vertical.

erDiagram
    DIM_EMPLEADOS {
        numero id_empleado PK
        texto nombre
        texto apellido
        texto desc_territorio
    }
    DIM_CLIENTES {
        numero id_cliente PK
        texto nombre
    }
    DIM_PRODUCTOS {
        numero id_producto PK
        texto nombre
        texto categoria
        numero precio_unitario
        texto proveedor
    }
    DIM_TIEMPO {
        numero id_tiempo PK
        numero anio
        numero mes
        numero trimestre
        texto nombre_mes
        numero dia
        texto dia_semana
    }
    FACT_FACTURAS {
        numero id_tiempo FK
        numero id_cliente FK
        numero id_producto FK
        numero id_empleado FK
        numero total
    }

    DIM_TIEMPO ||--o{ FACT_FACTURAS: fecha
    DIM_PRODUCTOS ||--o{ FACT_FACTURAS: producto
    DIM_CLIENTES ||--o{ FACT_FACTURAS: cliente
    DIM_EMPLEADOS ||--o{ FACT_FACTURAS: empleado

El enfoque se basa en que las dimensiones son instancias de datos poco cambiantes (listado de empleados, clientes, productos,…) mientras que los hechos crecen de forma constante (en nuestro caso las ventas facturadas). Aunque esto no siempre pasa así y podemos tener información cambiante en nuestras dimensiones como veremos más adelante.

Las dimensiones cubren aspectos relativos a puntos de corte en nuestros análisis:

  • quién
  • qué
  • dónde
  • cómo

Mientras que los hechos son los hechos cuantificables:

  • cuántos
  • en total
  • promedio

De modo que la pregunta de negocio

¿cuantos pedidos que contengan salsa de tomate hemos tenido en este último trimestre?

Se aterriza indicando:

  • DIM_PRODUCTOS: salsa de tomate
  • DIM_TIEMPO: último trimestre
  • FACT_FACTURAS: número de facturas asociadas a DIMs

Pudiendo variar únicamente la métrica (cuantas unidades, cuantos dolares, qué porcentaje de descuentos, …). Esto hace que muchas consultas puedan componerse de forma aditiva en base a preguntas frecuentes, atributos concretos usados frecuentemente, agregadas de forma distinta.

3.1.1 SCD

El concepto de Slowly Changing Dimension (SCD) nos obliga a indicar distintos valores para nuestras dimensiones en base a una condición temporal. Un producto que cambia de nombre a una fecha dada, un cliente que cambia de apellidos,… Existen varias modalidades con las que podemos intentar paliar este hecho, y una de las más comunes es historificar los cambios con fechas de efecto, también conocido como dimensión de tipo 2.

erDiagram
    DIM_EMPLEADOS {
        numero id_empleado PK
        texto nombre
        texto apellido
        texto desc_territorio
        fecha efectivo_desde
        fecha efectivo_hasta
    }
    DIM_CLIENTES {
        numero id_cliente PK
        texto nombre
        fecha efectivo_desde
        fecha efectivo_hasta
    }

Esto nos obliga a añadir condiciones que filtren los registros vigentes, o indiquen la fecha de efecto pudiendo así consultar la información como hubiera sido consultada en un intervalo entre fechas efectivas. Esto sin duda complica la composición de consulta, aunque nos permite copar con estos cambios.

3.2 Modelado de copo de nieve

El modelo de copo de nieve extiende el modelo estrella arriba mencionado a jerarquías de dimensiones. Pensemos que por ejemplo, cuando hablamos del territorio que cubre un empleado, esto se refiere a una entidad o dimensión en esta etapa, donde se determinan todos los territorios existentes.

erDiagram
    DIM_TERRITORIOS {
        numero id_territorio PK
        texto desc_territorio
    }
    DIM_EMPLEADOS {
        numero id_empleado PK
        texto nombre
        texto apellido
        texto id_territorio FK
    }
    DIM_CLIENTES {
        numero id_cliente PK
        texto nombre
    }
    DIM_PROVEEDORES {
        numero id_proveedor PK
        texto nombre
        texto direccion
    }
    DIM_CATEGORIAS {
        numero id_categoria PK
        texto categoria
    }
    DIM_PRODUCTOS {
        numero id_producto PK
        texto nombre
        numero precio_unitario
        numero id_categoria FK
        numero id_proveedor FK
    }
    DIM_TRIMESTRES {
        numero id_trimestre PK
        texto trimestre
        numero num_trimestre
    }
    DIM_MESES {
        numero id_mes PK
        texto mes
        numero num_mes
    }
    DIM_TIEMPO {
        numero id_tiempo PK
        numero anio
        numero id_mes FK
        numero id_trimestre FK
    }
    FACT_FACTURAS {
        numero id_tiempo FK
        numero id_cliente FK
        numero id_producto FK
        numero id_empleado FK
        numero total
    }

    DIM_TERRITORIOS ||--o{ DIM_EMPLEADOS: en
    DIM_CATEGORIAS ||--o{ DIM_PRODUCTOS: pertenece
    DIM_PROVEEDORES ||--o{ DIM_PRODUCTOS: provee

    DIM_TRIMESTRES ||--o{ DIM_TIEMPO: en
    DIM_MESES ||--o{ DIM_TIEMPO: en

    DIM_TIEMPO ||--o{ FACT_FACTURAS: fecha
    DIM_PRODUCTOS ||--o{ FACT_FACTURAS: producto
    DIM_CLIENTES ||--o{ FACT_FACTURAS: cliente
    DIM_EMPLEADOS ||--o{ FACT_FACTURAS: empleado

Si conseguimos tener dimensiones comunes a todas las áreas de negocio, esto nos da una consolidación de la información con poca variación entre unidades. Sin embargo, suele ser común la variación entre unidades de esas dimensiones comunes a nuestra actividad. El control sobre estas dimensiones clave ha hecho que la gestión de datos maestros se convierta en una actividad en si misma.

3.2.1 Gestión de datos maestros

La gestión de datos maestros (Master Data Management, MDM) es una disciplina tecnológica en la que las empresas y los departamentos de TI colaboran para garantizar la uniformidad, la precisión, la gestión, la coherencia semántica y la responsabilidad de los activos de datos maestros compartidos de la empresa.

Es un marco utilizado por empresas que buscan aprovechar sus datos de manera más efectiva, asegurando la precisión, coherencia y accesibilidad de los datos comerciales centrales, como información de clientes, detalles de productos o registros de proveedores.

MDM se define como una disciplina en la que el negocio y la tecnología trabajan juntos para asegurar la uniformidad, la exactitud, la custodia, la consistencia semántica y la responsabilidad de los activos de datos maestros oficiales de la empresa.

3.3 Data Marts

Siendo prácticos, por mucho que dispongamos de toda la información de una empresa, solo necesitaremos ciertas dimensiones y hechos para conformar nuestras métricas y realizar nuestro análisis. Habitualmente la organización se dispone de manera que un subconjunto de los datos es accesible por la unidad que los necesita y a ese subconjunto lo conocemos como data mart. Dónde reside y cómo se modela no cambia, pero es el nombre que se le atribuye a esas colecciones de tablas que permiten a la unidad gestionar los datos necesarios en el universo de datos disponibles.