Elegir entre tipos de dimensión de variación lenta
La teoría de diseño de esquema de estrella hace referencia a dos tipos de SCD comunes. Los más comunes son Tipo 1 y Tipo 2. En la práctica, una tabla de dimensiones puede admitir una combinación de métodos de seguimiento del historial, incluidos el Tipo 3 y el Tipo 6. A continuación se describirá la diferencia en estos tipos de SCD.
SCD de tipo 1
Una SCD de tipo 1 siempre refleja los valores más recientes y, cuando se detectan cambios en los datos de origen, se sobrescriben los datos de la tabla de dimensiones. Este enfoque de diseño es común para las columnas que almacenan valores auxiliares, como la dirección de correo electrónico o el número de teléfono de un cliente. Cuando cambia la dirección de correo electrónico o el número de teléfono de un cliente, la tabla de dimensiones actualiza la fila del cliente con los nuevos valores. Es como si el cliente tuviera siempre esta información de contacto. El campo de clave, como CustomerID, permanecería igual para que los registros de la tabla de hechos se vinculen de forma automática al registro de cliente actualizado.
SCD de tipo 2
Una SCD de tipo 2 admite el control de versiones de los miembros de la dimensión. Por lo general, el sistema de origen no almacena versiones, por lo que el proceso de carga del almacenamiento de datos detecta y administra los cambios en la tabla de dimensiones. En este caso, la tabla de dimensiones debe usar una clave suplente para proporcionar una referencia única a una versión del miembro de la dimensión. También incluye columnas que definen la validez del intervalo de fechas de la versión (por ejemplo, StartDate
y EndDate
) y, posiblemente, una columna de marca (por ejemplo, IsCurrent
) para filtrar fácilmente por miembros de la dimensión actuales.
Por ejemplo, Adventure Works asigna vendedores a una región de ventas. Cuando un vendedor se reasigna a otra región, debe crearse una nueva versión del vendedor para asegurarse de que los hechos históricos sigan asociados a la región anterior. Para admitir un análisis histórico preciso de ventas por vendedor, la tabla de dimensiones debe almacenar versiones de vendedores y sus regiones asociadas. La tabla también debe incluir valores de fecha de inicio y finalización para definir la validez temporal. Las versiones actuales pueden definir una fecha de finalización vacía (o 31/12/9999), lo que indica que la fila es la versión actual. La tabla también debe definir una clave suplente, ya que la clave empresarial (en esta instancia, Id. de empleado) no es única.
Es importante comprender que si los datos de origen no almacenan versiones, debe usar un sistema intermedio (como un almacenamiento de datos) para detectar y almacenar los cambios. El proceso de carga de la tabla debe conservar los datos existentes y detectar los cambios. Cuando se detecta un cambio, el proceso de carga de la tabla debe hacer que expire la versión actual. Para registrar estos cambios actualiza el valor EndDate
e inserta una versión nueva con el valor StartDate
que comienza a partir del valor EndDate
anterior. Además, los hechos relacionados deben usar una búsqueda basada en tiempo para recuperar el valor de clave de dimensión pertinente para la fecha de los hechos.
SCD de tipo 3
Una SCD de tipo 3 admite el almacenamiento de dos versiones de un miembro de dimensión como columnas independientes. La tabla incluye una columna para el valor actual de un miembro más el valor original o anterior del miembro. Por tanto, en el tipo 3 se usan columnas adicionales para realizar el seguimiento de una instancia clave del historial, en lugar de almacenar filas adicionales para realizar el seguimiento de cada cambio, como en una SCD de tipo 2.
Este tipo de seguimiento se puede usar para una o dos columnas de una tabla de dimensiones. No es habitual usarlo para muchos miembros de la misma tabla. A menudo se usa en combinación con miembros de tipo 1 o tipo 2.
SCD de tipo 6
Una SCD de tipo 6 combina los tipos 1, 2 y 3. Cuando se produce un cambio en un miembro de tipo 2, se crea una fila con los valores startDate y EndDate adecuados. En el diseño de tipo 6 también se almacena el valor actual en todas las versiones de esa entidad para que se pueda notificar con facilidad el valor actual o el histórico.
Con el ejemplo de región de ventas, la columna Región se divide en CurrentRegion
y HistoricalRegion
. CurrentRegion
siempre muestra el valor más reciente y HistoricalRegion
muestra la región que era válida entre StartDate
y EndDate
. Por tanto, para el mismo vendedor, cada registro tendría la región más reciente rellenada en CurrentRegion
mientras HistoricalRegion
funciona exactamente igual que el campo de región del ejemplo de SCD de tipo 2.