Upload
spanishpassvc
View
211
Download
9
Embed Size (px)
Citation preview
Realizando procesos de carga incremental exitosos con SQL Server
21 Enero 2015 (12 pm GMT -5)
Alberto Rivera
Resumen:
En esta sesión, aprenderemos a garantizar un
proceso de carga incremental óptimo, en una
solución de Bodegas de Datos, con SQL Server
Integration Services.
Próximos Eventos
Consolidando y Transformando
mi data con Power Query
4 de Febrero
José L Rivera
Introdución a SSIS
11 de Febrero
Carlos A Ulate
Las mejores practicas e índices
Columnstore
28 de Enero
Warner Chaves
Está por comenzar:
Manténgase conectado a nosotros!
Visítenos en http://globalspanish.sqlpass.org
/SpanishPASSVC
lnkd.in/dtYBzev
/user/SpanishPASSVC
/SpanishPASSVC
4
Oportunidades de Voluntariado
PASS no pudiera existir sin personas apasionadas y
dedicadas de todas partes del mundo que dan de su
tiempo como voluntaries.
Se un voluntario ahora!!
Para identificar oportunidades locales visita
volunteer.sqlpass.org
Recuerda actualizar tu perfil en las secciones de
“MyVolunteering” y MyPASS para mas detalles.
Sigan Participando!
• Obten tu membresia gratuita en sqlpass.org
• Linked In: http://www.sqlpass.org/linkedin
• Facebook: http://www.sqlpass.org/facebook
• Twitter: @SQLPASS
• PASS: http://www.sqlpass.org
Realizando procesos de carga incremental exitosos con SQL Server
21 de Enero de 2015
Alberto Rivera Tavera
MVP – SQL Server
Twitter: @albertoSQL
Comunidad Intermezzo http://comunidadintermezzo.wordpress.com
AGENDA
• Introducción a procesos incrementales
• Extracción de datos modificados
• Carga de datos modificados
AGENDA
• Introducción a procesos incrementales
• Extracción de datos modificados
• Carga de datos modificados
Ciclo de carga de una Bodega de datos
Data WarehouseStaging Database
ETL inserta o modifica
datos basados en los
cambios ocurridos
ETL extrae datos
nuevos y modificados
Usuarios modifican
datos desde app de
Negocio
Dimensión Lentamente cambiante
TIPO 1
TIPO 2
TIPO 3
Key AltKey Name Phone City
101 C123 Mary 5551234 New York
Key AltKey Name Phone City
101 C123 Mary 5554321 New York
Key AltKey Name Phone City Current
101 C123 Mary 5551234 New York True
Key AltKey Name Phone City Current
101 C123 Mary 5551234 New York False
102 C123 Mary 5551234 Seattle True
Key AltKey Name Phone OriginalCity CurrentCity EffectiveDate
101 C123 Mary 5551234 New York Seattle 6/7/11
Key AltKey Name Phone OriginalCity CurrentCity EffectiveDate
101 C123 Mary 5551234 New York New York 1/1/00
AGENDA
• Introducción a procesos incrementales
• Extracción de datos modificados
• Carga de datos modificados
Opciones para extraer datos modificados
•Extraer todos los registros
•Almacenar una llave primaria
•Usar una columna de fecha y hora como marca de agua
•Usar Change Data Capture y Change Tracking
Extraer filas basado en una columna de fecha y hora
1. Tenga en cuenta el tiempo actual
2. Recupere el último tiempo de extracción a partir de un registro de extracción
3. extraiga y transfiera los registros que se han modificado entre la última extracción y la hora
actual
4. Reemplace el valor almacenado de la última extracción con la fecha actual
Staging DatabaseData Source
12
34
Extraction Log
DEMOColumna de Fecha y Hora
Y si no tenemos la columna de Fecha y Hora??
15
Change Data Capture
1. Habilite Change Data Capture
2. Asigne fecha de inicio y fin para registrar los números de la
secuencia
3. Maneje los números de secuencia nulos
4. Extraiga los cambios entre los números de secuencia
EXEC sys.sp_cdc_enable_db
EXEC sys.sp_cdc_enable_table @source_schema = N'dbo', @source_name = N'Customers',
@role_name = NULL, @supports_net_changes = 1
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)
IF (@from_lsn IS NULL) OR (@to_lsn IS NULL)
-- There may have been no transactions in the timeframe
SELECT * FROM cdc.fn_cdc_get_net_changes_dbo_Customers(@from_lsn, @to_lsn, 'all')
DEMOChange Data Capture
AGENDA
• Introducción a procesos incrementales
• Extracción de datos modificados
• Carga de datos modificados
La transformación Lookup
Coincidencia No Coincidencia
Lookup
Update Insert
DEMOTransformación Lookup
Transformación “Slowly Changing Dimension”
Changing Attributes
(Type 1) Inferred members
SCD
OLE DB Command
to update existing
record
OLE DB
Destination for
new records
OLE DB Command
to insert minimal
record
Historical
Attributes
(Type 2)
Derived Column to
add current row
indicator column
OLE DB Command
to set existing
record’s current
row indicator to
false
Union All
Derived Column
sets current row
indicator to True
New records
DEMOTransformación Slowly Changing Dimension
Sentencia MERGE
MERGE INTO DW.dbo.FactSales as tgt
USING
(SELECT c.CustomerKey, s.OrderNo, s.Quantity, s.Amount
FROM Staging.dbo.Sales s
INNER JOIN DW.dbo.DimCustomer c ON s.CustomerID = c.CustomerBizKey)
AS src (CustomerKey, OrderNo, Quantity, Amount)
ON
(src.CustomerKey = tgt.CustomerKey
AND src.OrderNo = tgt.OrderNo)
WHEN MATCHED THEN
UPDATE
SET Quantity = src.Quantity, Amount = src.Amount
WHEN NOT MATCHED THEN
INSERT (CustomerKey, OrderNo, Quantity, Amount)
VALUES (src.CustomerKey, src.OrderNo, src.Quantity, src.Amount)
Destino
Criterio para
identificar datos que
coinciden
Acción ante
coincidencias
Acción ante NO
coincidencias
origen
DEMOSentencia MERGE
GRACIAS
Las mejores practicas de Indices Columnstore
21 de Enero (12 pm GMT -5)
Warner Chaves
Resúmen:Los indices Columnstore fueron introducidos en SQL Server 2012 y
completamente cambian la manera en que podemos almacenar y
procesar los datos optimizando en formato columnar.Con SQL 2014 y
Azure SQL expandiendo el uso de estos indices, es importante tener
presente las mejores practicas que permiten sacar el maximo provecho a
esta tecnologia y los beneficios que ofrece.En esta sesion haremos una
rapida introduccion a los indices columnstore e inmediatamente
pasaremos a varios demos de como cargar datos, modificar el indice y
escribir consultas para obtener el mejor rendimiento posible de esta
tecnologia.
Próximo Evento