← Todos los posts

Slowly Changing Dimensions (SCD)

Qué son y cómo elegir la más adecuada

Fabric Publicado antes en Medium ↗

Qué son y cómo elegir la más adecuada

Ahora que se ha acabado la temporada de eventos puedo volver a pasarme por aquí :)

Hace poco obtuve la certificación DP-600 Fabric Analytics Engineer Associate y preparándola pude profundizar en temas que tenía en mi lista de pendientes.

A los que tengo más cerquita, sabéis que cuando me da por un tema, no paro hasta sentir que lo “controlo” y eso ha pasado con las Slowly Changing Dimensions. Ahora vengo a compartiros lo que he aprendido.

GIF

¡Vamos a por ello!

¿Qué son las SCD?

Las dimensiones lentamente cambiantes (SCD, por sus siglas en inglés: Slowly Changing Dimensions) se refieren a datos propios de dimensiones que cambian gradualmente a lo largo del tiempo. A diferencia de los datos relacionados con los hechos que se actualizan constantemente con nuevas transacciones, las dimensiones, como la categorización de productos o clientes, varían más despacio.

Por ejemplo, el salario nos puede clasificar en clase baja, media o alta. Con el tiempo y la inflación, un salario que inicialmente podría considerarse de clase media puede pasar a ser de clase baja. Si estos cambios no se gestionan correctamente, pueden distorsionar el análisis de la evolución del poder adquisitivo, por ejemplo.


Tipos de SCD Tipos de SCD

Según como queramos gestionar estos cambios, las SCD se puedes agrupar en 8 tipos diferentes:

  • SCD Tipo 0. Registros que no cambian
  • SCD Tipo 1. Sobrescribir
  • SCD Tipo 2. Añadir una fila
  • SCD Tipo 3. Añadir una columna
  • SCD Tipo 4. Tabla de histórico separada
  • SCD Tipo 5. Combinación de los tipo 1 y 4
  • SCD Tipo 6. Combinación de los tipos 1, 2 y 3
  • SCD Tipo 7. Híbrida

Entraremos a verlos con un poco más de detalle.

SCD Tipo 0. Registros que no cambian

Los datos nunca cambian. Una vez hecha la carga inicial los valores de la dimensión no varían ni se añaden nuevos registros.

  • Ventajas: Sencillez absoluta. No requiere almacenamiento adicional ni lógica compleja.
  • Desventajas: No permite actualizar la información en caso de errores iniciales. Imagina que se ha cometido un fallo

Se usa para información estática e inmutable, como fechas de nacimiento o códigos de identificación iniciales.

⚡SCD Tipo 1. Sobrescribir

Empezamos con los datos que cambian. En este caso se actualiza el valor del atributo sobre el mismo registro, sin guardar un historial de cambios.

  • Ventajas: Fácil de implementar. No requiere almacenamiento adicional dado que sobrescribimos en el mismo registro.
  • Desventajas: No mantiene un historial de cambios. Puede causar inconsistencias en los análisis históricos.

Podemos usar la SCD de tipo 1 cuando un cliente actualiza su dirección y no necesitemos guardar la antigua. En la tabla de clientes, la dirección antigua se sobrescribe con la nueva. Es habitual para corregir errores y situaciones donde el historial de cambios no es relevante.

⚡SCD Tipo 2. Añadir una fila

A partir de la SCD de Tipo 2 empieza a ser relevante conservar el histórico. En este caso, añadimos una nueva fila para cada cambio, guardando el historial con fechas de inicio y fin de vigencia del atributo y una clave subrogada.

Una clave subrogada es un identificador único artificial, normalmente una secuencia autogenerada, que no viene de la aplicación origen de los datos, por lo tanto, no tiene sentido para negocio.

  • Ventajas: Mantenemos el historial completo de cambios, lo que nos va a permitir el análisis del historial de datos.
  • Desventajas: Aumenta la volumetría de la tabla. Añade algo de complejidad ya que requiere gestión de claves subrogadas y las fechas que hemos comentado antes.

Cuando cambian a la directora de un departamento por otra podría ser un ejemplo de SCD Tipo 2. En la fila de la antigua directora tendríamos las fechas en las que empezó en su puesto, en la que finalizó y una clave subrogada que nos haría de identificador único de esa casuística para ese periodo de tiempo. Por otro lado, tendríamos una nueva fila con la nueva directora, con una fecha de inicio, un campo fecha fin que vendría a nulo y su nueva clave subrogada. Es habitual ver este tipo de estrategias en situaciones donde es crucial mantener un historial de cambios, como seguimientos de cambios en direcciones o posiciones laborales.

⚡SCD Tipo 3. Añadir una columna

Para el caso de las SCD Tipo 3 se añade una columna adicional para guardar el valor anterior del atributo.

  • Ventajas: Permite comparar el valor actual con el anterior.
  • Desventajas: Limitado a solo dos estados; el actual y el anterior.

La misma directora de antes, la han cambiado a un nuevo departamento y queremos guardar el departamento inicial y el anterior. O esta misma empleada (que ha tenido un año intenso) cambia de estado civil. Podríamos necesitar acceder rápidamente de un estado pasado al actual o a la inversa.

SCD Tipo 4: Tabla de histórico separada

La estrategia a seguir para las SCD Tipo 4 es construir una tabla adicional para almacenar todos los cambios históricos. También tendríamos una tabla principal donde solo encontraríamos la versión actual de ese atributo.

  • Ventajas: Mantiene un historial detallado sin sobrecargar la tabla principal.
  • Desventajas: Añade complejidad a la gestión de la base de datos y a las consultas que podríamos necesitar.

Para seguir con el ejemplo de la empresa y sus empeladas, podría darse el caso de necesitar una tabla principal con la información actual de las trabajadoras y una tabla de histórico separada donde se guarda toda información sobre personas que ya no trabajan en la compañía. Así conservaríamos toda la información y tendríamos más accesible solo aquella que fuera veraz a día de hoy.

Las siguientes SCD son combinaciones de las anteriores. Como veréis, son más complejas de implementar y mantener, pero aportan una mayor flexibilidad y adecuación para nuestros requerimientos.

SCD Tipo 5. Combinación de los tipo 1 y 4

Utiliza una mini-dimensión extra para registrar la versión actual relacionada con la tabla histórica para los cambios y no tener que “pasar” por la tabla de hechos para construir tu consulta.

  • Ventajas: Combina lo mejor de los tipos 1 y 4.
  • Desventajas: Mayor complejidad en la implementación y gestión.

SCD Tipo 6. Combinación de los tipos 1, 2 y 3

Combina los tipos 1, 2 y 3, sobrescribiendo atributos del tipo 1, añadiendo filas para cambios significativos del tipo 2 y escribiendo el valor anterior del tipo 3. Este valor sería el mismo en el caso de tratarse del valor actual. También tendríamos un flag para indicar si el registro está en activo o no.

  • Ventajas: Ofrece flexibilidad al combinar múltiples estrategias.
  • Desventajas: Mayor complejidad en la implementación y gestión.

SCD Tipo 7. Híbrida

Similar al tipo 6, pero con una tabla adicional que contiene solo la versión actual. Se puede acceder a la tabla de hechos mediante una dimensión de tipo 1 o una de tipo 2, la misma tabla de dimensión permite ambas perspectivas. Estas dos vistas se incluirían de forma separada en nuestro modelo semántico.

  • Ventajas: Mejora el rendimiento en consultas.
  • Desventajas: Mayor complejidad en la implementación y gestión.

Y recuerda, podemos aplicar diferentes tipos de SCD a diferentes columnas de una misma tabla.


Cómo elegir SCD Cómo elegir SCD

La elección del tipo de SCD depende básicamente de las necesidades del proyecto. Se pueden usar diferentes tipos de SCD en una misma tabla según los requerimientos y las especificaciones técnicas. Lo que si debemos tener claros son los motivos para decantarnos por una estrategia u otra:

  • Constancia y variabilidad: Qué atributos son constantes, cuáles variables, con qué frecuencia se modifican.
  • Historial de cambios: Si es necesario mantener un historial completo, solo la versión actual o la última versión y la anterior.
  • Volumen de datos: Conocer el volumen actual y esperado de datos ayuda a determinar la mejor estrategia. La volumetría afectará a los movimientos de información entre tablas.

Conclusión

Implementar SCD requiere planificación y el uso de las herramientas adecuadas. Es esencial identificar las dimensiones sujetas a cambios, definir la lógica para controlarlos, incluso usar claves subrogadas para mantener la integridad de los datos.

Las SCD tipo 1, 2 y 3 son las más frecuentes y útiles en la mayoría de los casos debido a su simplicidad y efectividad. Conociendo estas SCD, podemos crear un almacén de datos robusto y fiable, evitando anomalías y errores, y proporcionando información relevante.

Si tienes que cambiar de estrategia en tus SCD recuerda mantener un control de versiones óptimo con la ayuda de Azure DevOps ❤

¿Y tú? ¿De qué SCD eres?

Referencias

Relleno de dimensiones de variación lenta en canalizaciones de Azure Synapse Analytics — Training | Microsoft Learn

Slowly changing dimension — Wikipedia

Slowly Changing Dimensions — Best Data Solutions (bestinbi.es)

Dimensiones Lentamente Cambiantes | Dataprix

Slowly Changing Dimensions (SCD) in Data Warehouse — DWgeek.com

Slowly changing dimension — Wikipedia

Slowly Changing Dimension (SCD) in Power BI, Part 1, Introduction to SCD - BI Insight
*Slowly changing dimension (SCD) is a data warehousing concept coined by the amazing Ralph Kimball. The SCD concept…*www.biinsight.com

❤ Kimbal:

Type 0: Retain Original | Kimball Dimensional Modeling Techniques
*This section defines what Type 0: Retain Original is.*www.kimballgroup.com

Type 1: Overwrite | Kimball Dimensional Modeling Techniques
*Type 1 attributes always reflects the most recent assignment, and therefore this technique destroys history.*www.kimballgroup.com

Type 2: Add New Row | Kimball Dimensional Modeling Techniques
*Slowly changing dimension type 2 changes add a new row in the dimension with the updated attribute values.*www.kimballgroup.com

Type 3: Add New Attribute | Kimball Dimensional Modeling Techniques
*Slowly changing dimension type 3 changes add a new attribute in the dimension to preserve the old attribute value.*www.kimballgroup.com

Type 4: Add Mini-Dimension | Kimball Dimensional Modeling Techniques
*Slowly changing dimension type 4 is used when a group of attributes in a dimension rapidly changes and is split off to…*www.kimballgroup.com

Type 5: Add Mini-Dimension and Type 1 Outrigger | Kimball Dimensional Modeling Techniques
*Slowly changing dimension type 5 is used to accurately preserve historical attribute values, plus report historical…*www.kimballgroup.com

Type 6: Add Type 1 Attributes to Type 2 Dimension | Kimball Dimensional Modeling Techniques
*Type 6 builds on the type 2 technique by also embedding current type 1 versions of the same attributes in the dimension…*www.kimballgroup.com

Type 7: Dual Type 1 and Type 2 Dimensions | Kimball Dimensional Modeling Techniques
*Slowly changing dimension type 7 is the final hybrid technique used to support both as-was and as-is reporting.*www.kimballgroup.com

¿Te ha servido? Aplaude, sin cuenta. Puedes hacerlo varias veces.

Comentarios