Dimensión lentamente cambiante
Cómo registra un data warehouse los cambios de datos como la ciudad de un cliente.
En un esquema en estrella, las tablas de dimensiones describen el quién, el qué y el dónde de cada evento: el cliente, el producto, el local. Casi todo eso cambia poco, pero cambia cada tanto. Un cliente se muda, un producto pasa a otra categoría, un local cambia de encargado. Una dimensión lentamente cambiante (slowly changing dimension, o SCD) es una dimensión que tiene que lidiar con esos cambios ocasionales, y el término suele referirse a las técnicas para manejarlos.
La elección importa porque cambia la historia. Supongamos que Ana se mudó de Córdoba a Rosario en marzo. Con el Tipo 1 simplemente pisás la ciudad; es fácil, pero ahora todas sus compras del año pasado aparecen como ventas en Rosario. Con el Tipo 2 conservás la fila vieja, la cerrás con una fecha de fin y agregás una fila nueva para Rosario con su propia clave sustituta, vigente desde marzo y marcada como actual. Las ventas viejas siguen asociadas a Córdoba y las nuevas a Rosario. El Tipo 3 agrega una columna de "ciudad anterior", que guarda un solo paso de historia.
El Tipo 2 es el más usado cuando la historia importa, y por eso muchas tablas de dimensiones tienen columnas como valid_from, valid_to e is_current. Los números de tipo vienen del modelado dimensional de Ralph Kimball, y es común mezclarlos en una misma tabla: pisar la corrección de un error de tipeo, guardar historia de la dirección. Herramientas actuales como los snapshots de dbt y los pipelines de Microsoft Fabric pueden armar tablas Tipo 2 automáticamente.
Para quedarse
- El Tipo 1 pisa el valor viejo y pierde la historia.
- El Tipo 2 agrega una fila nueva con fechas de vigencia y conserva toda la historia.
- El Tipo 3 guarda solo el valor anterior en una columna extra.
- La elección define si los informes del pasado cambian cuando cambia una descripción.
Para seguir leyendo
- Dimensión de variación lenta de tipo 2 (documentación de Microsoft Fabric)
- Slowly changing dimension en Wikipedia (en inglés)