Sie sind auf Seite 1von 30

VALIDACIN DE TCNICAS DE MIGRACIN Y HERRAMIENTAS ETCL

PARA LA ALCALDA DE SAN ANTONIO DEL SENA

PRESENTADO POR:
Luis Guillermo Agudelo Quintero

PRESENTADO A:
Diana Mara Rico Mesa
Lder de ficha especializacin en Gestin Y Seguridad De Bases De Datos

SERVICIO NACIONAL DE APRENDIZAJE SENA DATOS


5 de abril de 2017
Seleccionamos la opcin de importacin y exportacin de datos de SQL SERVER
2014

Se despliega la ventana que indica que se inicia el asistente


Debemos seleccionar el origen de datos, seleccionamos Microsoft OLE DB Provider
for SQL Server

A continuacin el nombre del Servidor, luego el nombre de la base de datos de origen


y click en Siguiente.
Ahora vamos a seleccionar el destino, vamos a realizarlo a Microsoft Access
He creado un archivo de Access en blanco como destino

Escogemos la opcin de copiar los datos y click en siguiente


Nos mostrara las tablas disponibles en esta base de datos, las seleccionamos todas y
click en siguiente

Nos est mostrando algunas advertencias en las tablas que indican que el tipo de
campo no existe en Acces
Seleccionamos Ejecutar inmediatamente
Y muestra el resultado obtenido.

Al abrir el archivo de Access podemos ver las tablas y sus correspondientes registros.
El mismo procedimiento seguimos si es de Acces a SQL SERVER, cambiando origen y
destino.

El mismo procedimiento seguimos.

Si queremos exportar de Access a otro motor de base de datos como SQL SERVER,
debemos crear primero que todo el origen de datos
Damos click en exportarOrigen de datos OBDC

Creamos un nuevo DSN


Seleccionamos la opcin SQL SERVER

Seleccionamos el Servidor, y click en Siguiente


Tratamiento de los datos

Modelo Relacional

Identificacin de las dimensiones

Las dimensiones identificadas seran:

Persona, Servicio, Prestador, alrededor de ellas se analizaran los servicios prestado a


cada persona dependiendo de su edad y genero por cada Eps.

Cada dimensin est conformada por diversos niveles que permiten ver la informacin
en forma general o en forma ms detallada.

Los niveles para cada dimensin son los siguientes:

PERSONA
TipoIdentificaci
n
Persona En este nivel se determinaran las personas que han accedido a
los diferentes servicios de acuerdo a su edad, sexo y tipo de
identificacin.

SERVICIO
TipoServicio
ServiciosEps
En este nivel se establecen los diferentes servicios prestados y el
tipo de servicio recibido en cada caso.
PRESTADOR
EPS
EstadoEps
En este nivel se determinaran las prestadores de los servicios de
salud y el estado actual de cada uno de ellos.

Modelo estrella

El modelo estrella est conformado por una tabla de hechos y las tablas de tipo
dimensin, las dimensiones estn conformadas por los niveles de las dimensiones
identificadas anteriormente. A continuacin se detallan cada una de ellas con su
respectivo significado

Persona: Contiene la informacin de todas las usuarios registrados en el historial


(Tabla de hechos), con el fin de poder analizar los servicios prestados tanto por sexo
como por edades.

Servicio: Corresponde a los registros de los diferentes servicios prestados por las
Eps, lo cual permite establecer a que servicios accedieron los usuarios en el tiempo.

Prestadores: Son las empresas que prestan los diferentes servicios a los usuarios, asi
se establecern que servicios fueron prestados por cada entidad.

Tabla de hechos. Aqu encontramos los registros de las personas con su estado y tipo
de afiliacin, contiene las medidas que se desean analizar en este caso servicios.
El modelo estrella se presenta a continuacin:

Arquitectura

Componentes

En esta seccin se explican cada uno de los componentes de la arquitectura


planteada.

Las bases de datos operacionales con que cuenta la Secretaria de Salud estn
codificadas en el estndar ANSI SQL, que puede ser migrado a cualquier manejador
de bases de datos

Las DTS son los Servicios de transformacin de datos (DTS, Data Transformation
Services) de Microsoft SQL Server, los cuales son un conjunto de herramientas
grficas y objetos programables que permitiran realizar procesos de limpieza,
depuracin y carga de datos transformar y consolidar datos de distintos orgenes
en una sola base de datos relacional.

Las tablas temporales, llamadas as porque se crean y se destruyen en tiempo de


ejecucin. Son creadas en el data mart (que es una base de datos relacional) y deben
tener una estructura parecida a las tablas existentes en las bases de datos
operacionales.

Para la creacion de bases de datos temporales vamos a recurrir a la opcin de disear


consulta de Microsoft SQL Server Studio, estando en la base de datos
SecretariaSalud.
Nueva consultaclick derechoDiseo de consulta en el editor.
De esta forma seleccionamos las columnas que trabajaremos en cada una de las
tablas temporales.

tmpTipoIdentificacion
COLUMNA TIPO LONGITUD
idTipoIdentificacion INT
abreviatura VARCHAR 3

tmpTipoAfiliado
COLUMNA TIPO LONGITUD
idTipoAfiliado INT
descripcion VARCHAR 20

tmpEstadoPersona
COLUMNA TIPO LONGITUD
idEstadoPersona INT
descripcion VARCHAR 15

tmpEstadoEPS
COLUMNA TIPO LONGITUD
idEstadoEPS INT
descripcion VARCHAR 15

tmpTipoServicio
COLUMNA TIPO LONGITUD
idTipoServicio INT
descripcion VARCHAR 15
tmpPersona
COLUMNA TIPO LONGITUD
idPersona BIGINT
tipoidentificacion integer
nombre VARCHAR 20
apellido VARCHAR 20
fechaNacimiento DATETIME
sexo CHAR 1

tmpEPS
COLUMNA TIPO LONGITUD
ideps INT
nombre VARCHAR 20
estadoeps integer

tmpHistorialPersona
COLUMNA TIPO LONGITUD
idhistorialpersona INT
idpersona BIGINT
fechaingreso DATETIME
fecharetiro DATETIME
estadopersona INT
ideps integer
tipoafiliado integer

Procesos de extraccin de datos

Por cada una de las tablas de origen, es decir, de la base de datos operativa se debe
especificar la forma como se debe extraer la informacin para cargar las tablas
temporales.

Tabla de origen Tabla de destino Consulta de transformacin


SELECT idTipoIdentificacion,
TipoIdentificacion TmpTipoIdentificacion abreviatura
FROM TipoIdentificacion
SELECT idTipoAfiliado,
TipoAfiliado tmpTipoAfiliado descripcion
FROM TipoAfiliado
SELECT idEstadoPersona,
EstadoPersona tmpEstadoPersona descripcion
FROM EstadoPersona
SELECT idEstadoEPS,
EstadoEPS tmpEstadoEPS descripcion
FROM EstadoEPS
SELECT idTipoServicio,
TipoServicio tmpTipoServicio descripcion
FROM TipoServicio
SELECT idPersona,
tipoidentificacion, nombre, apellido,
Persona tmpPersona
fechaNacimiento, sexo
FROM Persona
SELECT ideps, nombre,
EPS tmpEPS estadoeps
FROM EPS
SELECT idhistorialpersona,
idpersona, fechaingreso, fecharetiro,
HistorialPersona tmpHistorialPersona
estadopersona, ideps, tipoafiliado
FROM HistorialPersona

Diseo del data Mart

Luego de tener cargadas las tablas temporales con la informacin existente en los
orgenes de datos se procede al diseo del data mart, el cual se cargara con los datos
que contienen dichas tablas temporales.

Se creara el cdigo correspondiente para la creacin de cada una de las tablas


temporales las cuales solo pueden ser utilizadas cuando la conexin este activa y
estar vigente solo en la ejecucin del bloque de cdigo, utilizaremos el siguiente
cdigo:

Tabla de destino Boque de Cdigo


TmpTipoIdentificacio
DECLARE @TmpTipoIdentificacion TABLE (idTipoIdentificacion INT, abreviatura
n VARCHAR(3)
)
INSERT INTO @TmpTipoIdentificacion
SELECT idTipoIdentificacion, abreviatura FROM TipoIdentificacion
SELECT * FROM @TmpTipoIdentificacion

DECLARE @tmpTipoAfiliado TABLE (idTipoAfiliado INT, descripcion


VARCHAR(20)
)

tmpTipoAfiliado INSERT INTO tmp@TipoAfiliado


SELECT idTipoAfiliado, descripcion FROM TipoAfiliado

SELECT * FROM @tmpTipoAfiliado

DECLARE @tmpEstadoPersona TABLE (idEstadoPersona INT, descripcion


VARCHAR(15)
)

tmpEstadoPersona INSERT INTO @tmpEstadoPersona


SELECT idEstadoPersona, descripcion FROM EstadoPersona

SELECT * FROM @tmpEstadoPersona

DECLARE @tmpEstadoEPS TABLE (idEstadoEPS INT, descripcion


VARCHAR(15)
)

tmpEstadoEPS INSERT INTO @tmpEstadoEPS


SELECT idEstadoEPS, descripcion FROM EstadoEPS

SELECT * FROM @tmpEstadoEPS

DECLARE @tmpTipoServicio TABLE (idTipoServicio INT, descripcion


VARCHAR(15)
)

tmpTipoServicio INSERT INTO @tmpTipoServicio


SELECT idEstadoEPS, descripcion FROM EstadoEPS

SELECT * FROM @tmpTipoServicio

DECLARE @tmpPersona TABLE (idPersona BIGINT, tipoidentificacion integer,


nombre VARCHAR(20), apellido VARCHAR(20), fechaNacimiento DATETIME,
sexo CHAR(1)
)

tmpPersona INSERT INTO @tmpPersona


SELECT idPersona, tipoidentificacion, nombre, apellido, fechaNacimiento, sexo
FROM Persona

SELECT * FROM @tmpPersona

TmpEPS
DECLARE @tmpEPS TABLE (ideps INT, nombre VARCHAR(20), estadoeps
integer
)

INSERT INTO @tmpEPS


SELECT ideps, nombre, estadoeps FROM EPS

SELECT * FROM @tmpEPS

DECLARE @tmpServicioEps TABLE (ideps integer, idtiposervicio integer, valor


MONEY, detalle VARCHAR(20)

)
tmpServicioEps
INSERT INTO @tmpServicioEps
SELECT ideps, idtiposervicio, valor, detalle FROM ServicioEps

SELECT * FROM @tmpServicioEps

DECLARE @tmpHistorialPersona TABLE (idhistorialpersona INT, idpersona


BIGINT, fechaingreso DATETIME, fecharetiro DATETIME, estadopersona INT,
ideps integer, tipoafiliado integer
)

tmpHistorialPersona INSERT INTO @tmpHistorialPersona


SELECT idhistorialpersona, idpersona, fechaingreso, fecharetiro, estadopersona,
ideps, tipoafiliado FROM HistorialPersona

SELECT * FROM @tmpHistorialPersona

Tablas del Datamart

A continuacin se detalla la informacin de cada una de las tablas que conforman el


modelo estrella analizados anteriormente:

Los niveles para cada dimensin son los siguientes:

PERSONA
Columna Tipo
idPersona BIGINT
SERVICIO integer
tipoidentificacion .
Columna
nombre Tipo
VARCHAR(20)
idServicioEps
apellido INT
VARCHAR(20)
idtiposervicio
edad integer
tiposervicio
sexo VARCHAR(20)
CHAR(1)
valor MONEY
detalle VARCHAR(100)

PRESTADOR
Columna Tipo
ideps INT
nombre VARCHAR(30)
estadoeps VARCHAR(15)
Transformacin y carga

Por cada tabla definitiva de los esquemas de estrella se especifican:

Tablas de origen: Tablas temporales de donde proviene la informacin

Estrategia de carga (Insertar y/o actualizar datos existentes)

Joins entre las tablas temporales

inconsistencias

PERSONA

tmpPersona.idPersona
tmpTipoIdentificacion.abreviatura
tmpPersona.nombre
Datos a cargar
tmpPersona.apellido
tmpPersona.edad
tmpPersona.sexo
tmpPersona
Tablas de origen
TmpTipoIdentificacion
tmpPersona.tipoidentificacion = tmpTipoIdentificacion.
Joins
idTipoIdentificacion
Estrategia de carga Actualizar existentes e insertar nuevos
Inconsistencias
.

SERVICIO

tmpServicioEps.ideps
tmpTipoServicio.descripcion
Datos a cargar
tmpServicioEps.valor
tmpServicioEps.detalle

tmpServicioEps
Tablas de origen
tmpTipoServicio.
tmpTipoServicio.idTipoServicio =
Joins
tmpServicioEps.idTipoServicio
Estrategia de carga Actualizar existentes e insertar nuevos
Inconsistencias La restriccin creada en la tabla ServicioEps (CONSTRAINT
pk_servicioseps PRIMARY KEY (ideps,
idtiposervicio)) para establecer 2 llaves primarias
se debe desabilitar para poder ingresar todos los
registros.

PRESTADOR

tmpEPS.ideps
Datos a cargar tmpEPS.nombre
tmpEstadoEPS.descripcion

tmpEPS
Tablas de origen
tmpEstadoEPS
Joins tmpEPS.ideps = tmpEstadoEPS.idEstadoEPS
Estrategia de
Actualizar existentes e insertar nuevos
carga
Filtros
Inconsistencias

Creacin de procedimientos almacenados para la carga de datos

A continuacin se definen los procedimientos almacenados para permitir realizar la


carga de datos:

Tabla PERSONA

USE [SecretariaSalud]
GO
/****** Object: StoredProcedure [dbo].[spserv_DimPersona] Script Date: 03/04/2017
22:06:57 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[spserv_DimPersona]
AS
BEGIN TRAN
DECLARE @TmpTipoIdentificacion TABLE (idTipoIdentificacion INT, abreviatura
VARCHAR(3)
)
INSERT INTO @TmpTipoIdentificacion
SELECT idTipoIdentificacion, abreviatura FROM TipoIdentificacion

DECLARE @tmpPersona TABLE (idPersona BIGINT, tipoidentificacion integer, nombre


VARCHAR(20), apellido VARCHAR(20), fechaNacimiento DATETIME, sexo CHAR(1)
)
INSERT INTO @tmpPersona
SELECT idPersona, tipoidentificacion, nombre, apellido, fechaNacimiento, sexo FROM
Persona
Insert into Persona_Dim (idPersona,strabreviatura,strnombre,strapellido,edad,strsexo)
SELECT
idPersona = P.idPersona,
strabreviatura = T.abreviatura,
strnombre = P.nombre,
strapellido = P.apellido,
edad = datedif(year,p.fechaNacimiento,getdate()),
strsexo = P.sexo
FROM @tmpPersona P, @TmpTipoIdentificacion T
WHERE p.tipoidentificacion=t.idTipoIdentificacion AND
P.idPersona not in (select Persona_Dim.idPersona from Persona_Dim)

IF @@ERROR <> 0
GOTO Fin_Procedimiento
UPDATE Persona_Dim
SET
idPersona = P.idPersona,
strabreviatura = T.abreviatura,
strnombre = P.nombre,
strapellido = P.apellido,
edad = datedif(year,p.fechaNacimiento,getdate()),
strsexo = P.sexo
FROM @tmpPersona P, @TmpTipoIdentificacion T
WHERE p.tipoidentificacion=t.idTipoIdentificacion
IF @@ERROR <> 0
GOTO Fin_Procedimiento
COMMIT TRAN
RETURN(0)
Fin_Procedimiento:
ROLLBACK TRAN
RETURN(1)

El procedimiento queda cargado en:

ProgramacionProcedimientos Almacenados Persona_Dim


Tabla SERVICIO

CREATE PROCEDURE spserv_DimServicio


AS
BEGIN TRAN
DECLARE @tmpTipoServicio TABLE (idTipoServicio INT, descripcion VARCHAR(35)
)
INSERT INTO @tmpTipoServicio
SELECT idTipoServicio, descripcion FROM TipoServicio

DECLARE @tmpServicioEps TABLE (idServicioEps INT, ideps integer, idtiposervicio


integer, valor MONEY, detalle VARCHAR(100)
)
INSERT INTO @tmpServicioEps
SELECT [idServicioEps],[ideps],[idtiposervicio],[valor],[detalle] FROM [SecretariaSalud].
[dbo].[ServicioEps]

Insert into ServicioDim (idServicioEps,ideps,strtiposervicio,numvalor,strdetalle)


SELECT idServicioEps = S.idServicioEps,
ideps = S.ideps,
strtiposervicio = T.descripcion,
numvalor = S.valor,
strdetalle = S.detalle
FROM @tmpTipoServicio T, @tmpServicioEps S
WHERE S.idtiposervicio=T.idTipoServicio AND
S.idServicioEps not in (select ServicioDim.idServicioEps from ServicioDim)

IF @@ERROR <> 0
GOTO Fin_Procedimiento

UPDATE ServicioDim
SET
idServicioEps = S.idServicioEps,
ideps = S.ideps,
strtiposervicio = T.descripcion,
numvalor = S.valor,
strdetalle = S.detalle
FROM @tmpTipoServicio T, @tmpServicioEps S
WHERE S.idtiposervicio=T.idTipoServicio

IF @@ERROR <> 0
GOTO Fin_Procedimiento
COMMIT TRAN
RETURN(0)
Fin_Procedimiento:
ROLLBACK TRAN
RETURN(1)
GO
Tabla PRESTADOR

CREATE PROCEDURE spserv_DimPrestador


AS
BEGIN TRAN
DECLARE @tmpEstadoEPS TABLE (idEstadoEPS INT, descripcion VARCHAR(15)
)
INSERT INTO @tmpEstadoEPS
SELECT idEstadoEPS, descripcion FROM EstadoEPS

DECLARE @tmpEPS TABLE (ideps INT, nombre VARCHAR(20), estadoeps integer


)
INSERT INTO @tmpEPS
SELECT ideps, nombre, estadoeps FROM EPS

Insert into PrestadorDim (ideps,strnombre,strEstadoEPS)


SELECT ideps = S.ideps,
strnombre = S.nombre,
strEstadoEPS = E.descripcion
FROM @tmpEstadoEPS E, @tmpEPS S
WHERE S.estadoeps = E.idEstadoEPS AND
S.ideps not in (select PrestadorDim.ideps from PrestadorDim) AND
E.descripcion not in (select PrestadorDim.strEstadoEPS from
PrestadorDim)

IF @@ERROR <> 0
GOTO Fin_Procedimiento

UPDATE PrestadorDim
SET
ideps = S.ideps,
strnombre = S.nombre,
strEstadoEPS = E.descripcion
FROM @tmpEstadoEPS E, @tmpEPS S
WHERE S.estadoeps = E.idEstadoEPS

IF @@ERROR <> 0
GOTO Fin_Procedimiento
COMMIT TRAN
RETURN(0)
Fin_Procedimiento:
ROLLBACK TRAN
RETURN(1)
GO

TABLA DE HECHOS

HISTORIAL

CREATE PROCEDURE spserv_HechosHistorial


AS
BEGIN TRAN
DECLARE @tmpTipoAfiliado TABLE (idTipoAfiliado INT, descripcion VARCHAR(20)
)
INSERT INTO @tmpTipoAfiliado
SELECT idTipoAfiliado, descripcion FROM TipoAfiliado

DECLARE @tmpEstadoPersona TABLE (idEstadoPersona INT, descripcion VARCHAR(15)


)
INSERT INTO @tmpEstadoPersona
SELECT idEstadoPersona, descripcion FROM EstadoPersona

DECLARE @tmpHistorialPersona TABLE (idhistorialpersona INT, idpersona BIGINT,


fechaingreso DATETIME, fecharetiro DATETIME, estadopersona INT, ideps integer,
tipoafiliado integer
)
INSERT INTO @tmpHistorialPersona
SELECT idhistorialpersona, idpersona, fechaingreso, fecharetiro, estadopersona, ideps,
tipoafiliado FROM HistorialPersona
Insert into HistorialH (idhistorialpersona, idpersona, fechaingreso, fecharetiro,
estadopersona, ideps, tipoafiliado)
SELECT idhistorialpersona = H.idhistorialpersona,
idpersona = H.idpersona,
fechaingreso = H.fechaingreso,
fecharetiro = H.fecharetiro,
estadopersona = E.descripcion,
ideps = H.ideps,
tipoafiliado = A.descripcion
FROM @tmpTipoAfiliado A, @tmpEstadoPersona E, @tmpHistorialPersona H
WHERE H.estadopersona=E.idEstadoPersona AND
H.tipoafiliado=A.idTipoAfiliado AND
H.idhistorialpersona not in (select idhistorialpersona from HistorialH)

IF @@ERROR <> 0
GOTO Fin_Procedimiento

UPDATE HistorialH
SET
idhistorialpersona = H.idhistorialpersona,
idpersona = H.idpersona,
fechaingreso = H.fechaingreso,
fecharetiro = H.fecharetiro,
estadopersona = E.descripcion,
ideps = H.ideps,
tipoafiliado = A.descripcion
FROM @tmpTipoAfiliado A, @tmpEstadoPersona E, @tmpHistorialPersona H
WHERE H.estadopersona=E.idEstadoPersona AND
H.tipoafiliado=A.idTipoAfiliado

IF @@ERROR <> 0
GOTO Fin_Procedimiento
COMMIT TRAN
RETURN(0)
Fin_Procedimiento:
ROLLBACK TRAN
RETURN(1)
GO
Modelo estrella

Das könnte Ihnen auch gefallen