Diseño de un data warehouse: tabla de hecho

Continuamos después de cierto tiempo hablando del diseño de un data warehouse. Esta vez hablaremos de uno de los conceptos más importantes: la tabla de hecho (fact table).
¿Qué es una tabla de hecho?
Una tabla de hecho es una representación de un proceso de negocio. A nivel de diseño es una tabla que permite guardar dos tipus de atributos diferenciados:
  • Medidas del proceso / actividad / flujo de trabajo / evento que se pretende modelizar.
  • Claves foráneas hacia registros en una tabla de dimensión (o en otras palabras, como ya sabemos, hacia una vista de negocio).

Hemos ya hablado de esos conceptos en artículos anteriores. Otra forma de pensar en una tabla de hecho es que es una colección de fotografías de un evento que nos permiten determinar la evolución del mismo.

Tipos de tablas de hecho

En el momento de hablar de los diferentes tipos de tabla de hechos que existen es preciso indicar que se va a usar la terminología original por ser mucho más precisa:

  • Transaction Fact Tables: representan eventos que suceden en un determinado espacio-tiempo. Se caracterizan por permitir analizar los datos con el máximo detalle.
  • Factless Fact Tables/Coverage Tables: Son tablas que no tienen medidas y tiene sentido dado que representan el hecho que el evento suceda. Frecuentemente se añaden contadores a dichas tablas para facilitar las consultas SQL.
  • Periodic Snapshot Fact Tables: Son tablas de hecho usadas para recoger información de forma periódica a intervalos de tiempo regulares. Dependiendo de la situación medida o de la necesidad de negocio este tipo de tablas de hecho son una agregación de las anteriores o están diseñadas específicamente. 
  • Accumulating Snapshot Fact Table: representan el ciclo de vida completo de una actividad o proceso, que tiene un principio y final. Se caracterizan por presentar múltiples dimensiones que relacionadas con los eventos presentes en un proceso.
En un próximo post pondremos ejemplos de los diferentes tipos.

Diseño de un data warehouse: definiciones

Con la vista puesta de entrar en detalle a hablar sobre el diseño de un data warehouse, vamos a definir conceptos básicos: tabla de hecho, dimensión y métrica.

Si bien en las estructuras relacionales existentes en nuestras bases de datos transaccionales tenemos que crear un diseño lógico siguiendo las formas normales, en el data warehouse no debe seguirse ese patrón de diseño. La idea principal es que la información sea presentada desnormalizada para optimizar la consultas. Para ello debemos identificar en el seno de nuestra organización, los procesos de negocio, las vistas para el proceso de negocio y medidas cuantificables asociadas a los mismos. De esta manera hablaremos de:

  • Tabla de hecho: es la representación en el data warehouse de los procesos de negocio de la organización. Por ejemplo, una venta puede identificarse como un proceso de negocio de manera que es factible, si corresponde en nuestra organización, considerar la tabla de hecho ventas.
  • Dimensión: es la representación en el data warehouse de una vista para un cierto proceso de negocio. Si regresamos al ejemplo de una venta, para la misma tenemos el cliente que ha comprado, la fecha en la que se ha realizado,… Estos conceptos pueden ser considerados como vistas para este proceso de negocio. Puede ser interesante recuperar todas las compras realizadas por un cliente. Ello nos hace entender por qué la identificamos como una dimensión.
  • Métrica: son los indicadores de negocio de un proceso de negocio. Aquellos conceptos cuantificables que permiten medir nuestro proceso de negocio. Por ejemplo, en una venta tenemos el importe de la misma.

Dado que hemos hablado de que en el data warehouse (que en definitiva es una base de datos) las tablas están desnormalizadas es natural que para nuestro siguiente post continuemos hablando sobre este tema.