Implementación de dimensiones de variación lenta

Completado

Los datos de dimensión cambian con el tiempo. Los clientes se trasladan a nuevas ciudades, los productos cambian de nombre y los empleados se transfieren entre departamentos. Un rol principal de un almacenamiento de datos es describir el pasado con precisión, por lo que necesita una estrategia para controlar estos cambios. Los patrones de dimensión de variación lenta (SCD) definen cómo responde el modelo dimensional cuando cambian los datos de origen.

Descripción de los tipos de SCD

Los distintos requisitos empresariales llaman a diferentes enfoques para realizar el seguimiento de los cambios. Los siguientes tipos de SCD van desde la omisión de los cambios por completo para mantener registros históricos completos.

Tipo 0: Conservar original

El tipo 0 conserva el valor original y nunca permite cambios. Use el tipo 0 para los datos de referencia fijos que no deben cambiar, como una puntuación de crédito original en el momento de la aplicación o una fecha de nacimiento.

Tipo 1: Sobrescribir

El tipo 1 sobrescribe el valor existente con el nuevo valor. No se mantiene ningún historial. Este enfoque es adecuado cuando:

  • El cambio es una corrección de un error.
  • La precisión histórica del atributo modificado no es importante.
  • Necesita el mantenimiento más sencillo posible.

Por ejemplo, si cambia la dirección de correo electrónico de un cliente, una actualización de tipo 1 reemplaza el correo electrónico anterior por el nuevo. Todos los hechos históricos asociados a ese cliente ahora reflejan la dirección de correo electrónico actual.

Nota:

Los cambios de tipo 1 pueden afectar al análisis histórico. Si un vendedor se reasigna a una nueva región y sobrescribe la región, todas sus ventas anteriores aparecen en la nueva región. Tenga en cuenta si este comportamiento cumple los requisitos de informes.

Tipo 2: Agregar nueva fila

El tipo 2 inserta una nueva fila para cada cambio, manteniendo el historial completo. La fila original permanece y cada versión del miembro de dimensión obtiene su propia clave suplente. Este tipo scD es más común para los atributos en los que importa la precisión histórica.

Una implementación de tipo 2 requiere columnas adicionales:

Columna propósito
Fecha de inicio Cuando esta versión se hizo efectiva
Fecha de finalización Cuando esta versión fue reemplazada (las filas actuales utilizan una fecha muy lejana en el futuro, como 31 de diciembre de 9999)
Es bandera actual Identifica la versión activa para las búsquedas al cargar la tabla de hechos.

Cuando se produce un cambio, el proceso ETL:

  1. Actualiza la fila actual existente estableciendo su fecha de finalización y cambiando la marca actual a FALSE.
  2. Inserta una nueva fila con los nuevos valores de atributo, una nueva clave suplente, la fecha de inicio establecida en la fecha de cambio y el indicador actual establecido a TRUE.

El tipo 2 es esencial cuando es necesario analizar el pasado con precisión. Por ejemplo, si necesita notificar las ventas por la región a la que se asignó un vendedor en el momento de cada venta, el seguimiento de tipo 2 conserva ese contexto.

Diagrama que muestra SCD Tipo 2 antes y después de un cambio de región de un cliente, con una nueva fila agregada y la fila original expirada.

Tipo 3: Agregar nueva columna

El tipo 3 agrega una columna para almacenar el valor anterior junto con el valor actual. Este enfoque realiza un seguimiento del historial limitado, normalmente solo el cambio más reciente.

Por ejemplo, una dimensión de vendedor podría incluir tanto la columna CurrentSalesRegion como la columna PreviousSalesRegion. Cuando el vendedor se traslada, la región actual se mueve a la columna de anteriores, y la nueva región se convierte en la actual.

El tipo 3 es útil cuando solo necesita comparar el estado actual con un estado anterior. Sin embargo, no se suele usar porque se pierden todos los cambios intermedios.

Tipo 6: Enfoque híbrido

El tipo 6 combina elementos de tipo 1, tipo 2 y tipo 3. Mantiene el historial de versiones completo (tipo 2) y también almacena el valor actual en cada fila (tipo 1 sobrescribir en una columna específica) y el valor anterior (tipo 3).

Este híbrido permite que las consultas accedan al contexto histórico y actual desde cualquier fila de versión. Sin embargo, agrega complejidad al proceso ETL porque cada fila de un miembro de dimensión debe actualizarse cuando cambia el valor actual.

Elegir el tipo de SCD correcto

Use las instrucciones siguientes para seleccionar el tipo de SCD adecuado:

Requisito Tipo recomendado
Datos de referencia corregidos que nunca cambian Tipo 0
Correcciones o historial no necesarios Tipo 1
Precisión histórica completa requerida Tipo 2
Solo necesita comparación actual frente a anterior Tipo 3
Se necesita tener ambas vistas, tanto actuales como históricas, en cada fila. Tipo 6

Considerar los pros y contras de la implementación

Cada tipo de SCD tiene implicaciones de costo y complejidad:

  • Almacenamiento: las dimensiones de tipo 2 crecen con el tiempo a medida que se acumulan nuevas filas de versión. Planee un mayor almacenamiento y tenga en cuenta cómo afecta el crecimiento al rendimiento de las consultas.
  • Complejidad de consultas: la combinación de tablas de hechos a dimensiones de tipo 2 requiere conciliación de fechas efectivas o el uso del indicador actual, lo que agrega complejidad a las consultas.
  • Complejidad de ETL: el tipo 2 y el tipo 6 requieren una lógica ETL más sofisticada para detectar cambios, expirar filas antiguas e insertar nuevas versiones.
  • Requisitos empresariales: la elección del tipo SCD debe estar controlada por las necesidades empresariales. No realice un seguimiento del historial donde no sea necesario y no omita el seguimiento del historial donde sea necesario.

Sugerencia

Evite aplicar el seguimiento de tipo 2 a todos los atributos de una dimensión. Solo realiza un seguimiento del historial de atributos en los que la empresa requiere un análisis histórico. Use el tipo 1 para el resto a fin de garantizar la posibilidad de gestionar la dimensión.