Sei sulla pagina 1di 26

Deteccin de Cambios DWH

Freddy Leandro Angarita Castellanos


SQL Server MVP
@flacMVP
@sqlpassmed
http://geeks.ms/blogs/fangarita/
SQL Saturday Sponsors

Diamond Sponsors

Bronze Sponsors
Proceso

SSIS Stage WareHouse


Problema
Origen Destino
Dato 1 A 1 A
Dato 2 B 2 K
Dato 3 C 5 E
Dato 4 D

Accin Dato Original Nuevo Dato


Actualizacin 2 K 2 B
Insercin 3 C
Insercin 4 D
Borrado 5 E

Accin Datos Fecha Efectiva Fecha Expiracin


Actualizacin 2 B
Obsoleto 2 K
Insercin
Insercin
Obsoleto 5 E

4 |
Deteccin de Cambios

Es uno de los problemas a resolver al crear un WareHouse

Existen varias formas de resolver ste problema


Eliminacin y recarga
Transformacin SCD
Lookup
Transformada Kimball SCD
Mtodo MergeJoin (Ideado por Freddy Angarita)
Mtodo T-Sql Merge
CDC
Tipos de Dimensin y Administracin
Tipo 0
No mantiene historia
Geografa
Debe considerarse integridad referencial

Tipo I
Sobrescribe datos antiguos con los nuevos
Usado para aplicar cambios sobre tablas de hechos (Idealmente)
Es importante considerar la integridad referencial

Tipo II
Una nueva fila para cada cambio que se genere para cada registros
Se crea una fecha efectiva y una fecha de expiracin

Tipo III
Se crea historia slo para algunas columnas
Normalmente slo contienen el ltimo valor de la columna
Eliminacin y Carga
Es un mtodo simple de implementar
Se implementa rpidamente
Cantidad de Datos
Complejidad de la tabla
Ventana de tiempo
Requerimientos del sistema
Si la tabla se usa como una Fuente ROLAP Direct Query
(Depende del tipo cubo)
No es una opcin
Puede tomar mucho tiempo
Demo Eliminacin y Carga
Transformacin SCD
Ventajas
Es un mtodo simple de implementar
Desventajas
Realiza las actualizaciones en la tabla destino registro a registro
No recuerda las opciones de diseo realizadas
No se respetan relaciones hechas anteriormente
til para deteccin de cambios para dimensiones simples
Demo Transformacin SCD
Transformacin LookUp

Ventajas
Ofrece buen rendimiento
Desventajas
No es tan simple de implementar
La comparacin se realiza registro a registro
Demo Transformacin LookUp
Transformacin Kimball

Ventajas
Ofrece buen rendimiento
La comparacin se realiza por conjuntos
Desventajas
No es tan simple de implementar
Es necesario instalar el complemento
No usa transformaciones estndar
http://dimensionmergescd.codeplex.com/
Demo Transformacin LookUp
Transformacin MergeJOIN

Ventajas
Ofrece buen rendimiento
La comparacin se realiza por conjuntos
Usa transformaciones estndar
No es necesario instalar ningn complemento
Desventajas
No es tan simple de implementar
Transformacin MergeJOIN
Llave Dato
Llave Dato
A 1
A 1
B 56
B 23
C 2
D 34

Llave Actual Llave Nueva Dato Actual Dato Nuevo

A A 1 1

B B 56 23

C NULL 2 NULL

NULL D NULL 34
Demo Mtodo MergeJOIN
Transformacin t-Sql MERGE

Ventajas
Ofrece buen rendimiento
Es simple de implementar
La deteccin de cambios vive en la base de datos
Desventajas
No se recomienda su uso para escenarios OLTP (Locks)
Demo Mtodo t-Sql MERGE
Ventana de Tiempo

Ventajas
Reduce la cantidad de registros a procesar
Desventajas
Es necesario tener campos de fecha en las tablas a analizar
Demo Ventana de Tiempo
CDC

Ventajas
Reduce la cantidad de registros a procesar
Fcil implementacin
Desventajas
No funciona con todos los orgenes de datos
CDC - Script
USE InternetSales
GO

--Habilitar CDC para base de datos


EXEC sys.sp_cdc_enable_db
GO

--Habilitar CDC para tabla


EXEC sys.sp_cdc_enable_table
@source_schema = N'dbo',@source_name = N'Customers',@role_name=
NULL,@supports_net_changes = 1
GO

--Mapear inicio y finalizacin a nmeros de secuencia


DECLARE @from_lsn binary(10), @to_lsn binary(10);
SET @from_lsn = sys.fn_cdc_map_time_to_lsn('smallest greater than', @StartDate) -- >
SET @to_lsn = sys.fn_cdc_map_time_to_lsn('largest less than or equal', @EndDate) -- <=

--Manejar correctamente Nulos


IF (@from_lsn IS NULL) OR (@to_lsn IS NULL)
-- No hubo transacciones en ste marco de tiempo

--Extraer Cambios
SELECT * FROM cdc.fn_cdc_get_net_changes_dbo_Customers(@from_lsn, @to_lsn, 'all')
Demo CDC
Preguntas
GRACIAS!

@flacMVP
@sqlpassmed
http://geeks.ms/blogs/fangarita/