Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Por:
Daniel Alejandro Ciuffi lvarez
INFORME DE PASANTA
Presentado ante la Ilustre Universidad Simn Bolvar
como requisito parcial para optar al ttulo de
Ingeniero de Computacin
Por:
Daniel Alejandro Ciuffi lvarez
INFORME DE PASANTA
Presentado ante la Ilustre Universidad Simn Bolvar
como requisito parcial para optar al ttulo de
Ingeniero de Computacin
iv
Resumen
En el presente proyecto se desarroll un sistema de extraccin, procesamiento y
carga de datos financieros desde unas bases de datos de origen hacia una base de
datos histrica. Como resultados de la pasanta, se obtuvieron tres productos: un
paquete que ejecuta el proceso de extraccin, procesamiento y carga de datos, un
esquema para la visualizacin de los datos y un conjunto de reportes
correspondientes a distintas vistas de los datos, destinado a los usuarios finales de
la aplicacin. El desarrollo del proyecto est enmarcado en la fase de desarrollo de la
metodologa de entrega de servicios de Microsoft, utilizada para proyectos de
consultora, y las herramientas utilizadas fueron el manejador de bases de datos
Reporting Services.
ndice general
Resumen . iv
ndice general . v
ndice de tablas ... viii
ndice de figuras ix
Lista de abreviaturas x
Introduccin 1
1. DESCRIPCIN DE LA EMPRESA .. 2
2. DESCRIPCIN DEL PROBLEMA ... 5
3. MARCO TERICO 7
3.1. Inteligencia de Negocios ... 7
3.2. Almacn de Datos .. 8
3.3. SQL . 14
4. MARCO TECNOLGICO . 17
4.1. SQL Server 17
4.1.1. Servicios adicionales de SQL Server .... 17
4.1.1.1. Servicios de Anlisis . 17
4.1.1.2. Servicios de Generacin de Reportes 19
4.1.1.3. Servicios de Integracin .. 19
4.1.1.4. Estudio de Administracin de SQL Server . 21
4.1.1.5. Business Intelligence Development Studio . 22
vi
4.1.2. Programacin 22
5. DESCRIPCIN DE LA SOLUCIN .. 24
5.1. Bases de datos .. 26
5.2. Generador de datos aleatorios en tablas de origen .. 27
5.2.1. Procedimiento del aplicativo Efectos 28
5.2.2. Procedimiento del aplicativo Factoring 28
5.2.3. Procedimiento del aplicativo Prestamos .. 29
5.2.4. Procedimiento del aplicativo Leasing ... 29
5.2.5. Procedimiento del aplicativo Sobregiros .. 29
5.2.6. Procedimiento del aplicativo Medios de pago . 29
5.3. Scripts de carga y transformacin de datos ... 30
5.3.1. Primer script, 00.Universo.sql . 30
5.3.2. Segundo script, 02.Factoring.sql . 31
5.3.3. Procedimiento para insercin directa sobre la tabla AT04 de SIF 32
5.3.4. Scripts adicionales 32
5.4. Extraccin y carga ... 32
5.4.1. Insercin de registros en las tablas de dimensin de la base de datos
Prototipo 32
5.4.2. Flujo de datos desde la tabla AT04 de la base de datos SIF hasta la tabla AT04
de la base de datos Prototipo 34
5.5. Elaboracin del cubo OLAP con Analysis Services mediante la herramienta
vii
5.6. Elaboracin del paquete de flujo de datos con Integration Services mediante la
herramienta Business Intelligence Development Studio ... 38
5.7. Consulta . 39
6. PRUEBAS Y RESULTADOS 42
Conclusiones y recomendaciones . 44
Referencias 46
A. INFORMACIN SOBRE LAS TABLAS DE LAS BASES DE DATOS . 49
B. REGISTROS DE EJEMPLO SUMINISTRADOS POR EL BANCO .. 53
C. PROCEDIMIENTOS PARA LA INSERCIN DE DATOS EN LAS TABLAS DE
ORIGEN . 62
D. POSIBLES VALORES PARA LOS DATOS ALEATORIOS INSERTADOS EN
LAS TABLAS DE ORIGEN .. 79
E. DESCRIPCIN DE SCRIPTS DE CARGA Y TRANSFORMACIN DE DATOS
.. 87
F. SCRIPTS PARA CREACIN Y ELIMINACIN DE RESTRICCIONES DE
CLAVE E NDICES EN LAS TABLAS DE LA BASE DE DATOS PROTOTIPO .. 101
G. VENTAJAS Y DESVENTAJAS DE UN DW . 109
viii
ndice de tablas
Tabla 5.1: Clculos con nombre 37
ix
ndice de figuras
Figura 1.1: Organigrama de Consultora en Microsoft Venezuela . 4
Figura 3.1: Ejemplo de cubo .. 10
Figura 3.2: Cubo despus de pivotaje . 10
Figura 3.3: Cubo despus de roll-up 11
Figura 3.4: Cubo despus de drill-down . 12
Figura 3.5: Esquema en Estrella . 13
Figura 5.1: Arquitectura de la Solucin . 25
Figura 5.2: Modelo de datos del tomo 4 36
Figura 5.3: Montos Vencidos Totales para crditos discriminados por aplicativo
(filas) y estado de crdito (columnas), cuya situacin de crdito es Litigio (filtro)
.. 38
Figura 5.4: Montos Vencidos Totales para crditos discriminados por fecha de
liquidacin (filas) y naturaleza del cliente (columnas) 39
Figura 5.5: Cuotas Vencidas discriminadas para crditos por aplicativo (filas) y
situacin de crdito (columnas), cuya fecha de cierre est en el ao 2012 (filtro) 39
Figura 5.6: Ejemplo del servidor de reportes 40
Figura 5.7: Ejemplo de visualizacin del cubo en Excel . 41
Figura 6.1: Tiempos de ejecucin para el paquete de flujo 42
Lista de abreviaturas
EM
SUDEBAN
BI
Superintendencia de Bancos
DW
OLAP
SQL
ANSI
de Norteamrica
ISO
Estndares
MOLAP
ROLAP
MDX
Introduccin
El presente proyecto de pasanta forma parte de un proyecto de consultora de
de
un
prototipo
que
permita
la
extraccin,
procesamiento
CAPTULO 1
DESCRIPCIN DE LA EMPRESA
Los servicios del rea de Consultora, a su vez, estn diseados para apoyar a los
clientes con la optimizacin y la implantacin de las tecnologas Microsoft. [4]
Para la materializacin de los servicios de Consultora, existen tres figuras
principales en la subsidiaria. Dichas figuras son los EM (Engagement Manager,
Gerente de Compromisos), los gerentes de proyecto y los consultores. [3]
Los EM son los encargados de definir, el alcance de los proyectos, los planes de
ejecucin de los mismos y los presupuestos. Para esto, piden los recursos humanos
que consideren necesarios, definen los tipos de los contratos, establecen las rdenes
de trabajo, hacen previsiones de ingresos, entre otros. [4]
Los gerentes de proyecto, por su parte, son los encargados de la planificacin y la
organizacin de los proyectos. Ellos hacen un seguimiento del trabajo de los
consultores para asegurar que este se ajuste a los planes trazados previamente, se
encargan de las relaciones con los clientes y velan por la satisfaccin de los mismos.
Adems, realizan varias tareas administrativas y llevan un control de la ejecucin
de los proyectos, haciendo los ajustes que consideren necesarios segn lo que dicten
las circunstancias. [3]
Los consultores son los encargados de la ejecucin de las tareas estipuladas para el
proyecto. Los mismos deben ejecutar las actividades tal y como fueron planeadas,
producir la documentacin adecuada, asegurarse constantemente de la calidad del
trabajo realizado, colaborar y trabajar de manera armoniosa con el equipo de
trabajo, contribuir a la satisfaccin del cliente y realizar las tareas administrativas
que les sean asignadas, tales como elaboracin de reportes de avance, entre otros. [3]
El proyecto desarrollado en esta pasanta fue desarrollado bajo la tutora
industrial de un consultor de Microsoft Venezuela. En la Figura 1.1, se muestra un
organigrama del rea de Consultora ubicada en el contexto del segmento de
Servicios de Microsoft Venezuela.
CAPTULO 2
DESCRIPCIN DEL PROBLEMA
Para dar cumplimiento a una resolucin de la Superintendencia de Bancos,
SUDEBAN, el BBVA Banco Provincial necesita generar informacin financiera y
contable bajo un formato y reglas suministradas por dicho ente regulador. La
aplicacin de dichos formato y reglas debe estar reflejada, finalmente, en un
conjunto de archivos de transmisin, llamados tomos. Los tomos son archivos de
texto plano que se generarn mensualmente y que contendrn distintas
visualizaciones de los datos suministrados previamente por el banco.
Adicionalmente, el BBVA Banco Provincial necesita poder contar con histricos de
su informacin financiera y contable, con base en los tomos generados mes a mes, y
generar consultas dinmicas y reportes sobre los mismos.
En funcin de la necesidad de BBVA, se ha definido un proyecto entre cuyas reas
de trabajo se encuentra la generacin de una arquitectura o plataforma de bases de
datos tomos. La presente pasanta est enmarcada en la labor de la generacin de
dicha arquitectura para uno de los tomos, especficamente para el tomo 4. Dicho
tomo contiene informacin relacionada con la asignacin de crditos por parte del
banco.
En primer lugar, la solucin desarrollada en esta pasanta debe contemplar un
repositorio en el cual se almacenen datos originados por el banco, siempre
relacionados con los datos histricos que se quieran visualizar en el tomo 4, es
decir, aquellos relacionados con la asignacin de crditos. A esto se le ha llamado
bases de datos origen.
En la solucin, debe existir tambin un conjunto de procesos que se encarguen de
extraer los datos de las bases de datos de origen, los transformen a fin de que
encajen con el formato definido para el tomo 4 y los carguen en otra base de datos
intermedia. En dicha base de datos intermedia se cargarn los datos del mes ms
reciente.
Debe haber, por ltimo, un proceso que, una vez que el mes ms reciente haya
terminado y los datos del mismo hayan sido transmitidos a SUDEBAN, lleve estos
datos a una base de datos histrica, a partir de la cual se generarn consultas
dinmicas y reportes de los histricos de la informacin financiera y contable.
CAPTULO 3
MARCO TERICO
En el presente captulo se presentan conceptos y nociones relacionados con los
elementos manejados durante el desarrollo del proyecto de pasanta y que se
consideran indispensables para la comprensin de lo explicado en los siguientes
captulos. En primer lugar, se hace una pequea introduccin a lo que significa la
inteligencia de negocios. Posteriormente, se explican ciertas nociones relacionadas
con un almacn de datos. Por ltimo, se hace una pequea referencia al lenguaje
SQL, lenguaje por excelencia para la interaccin con bases de datos relacionales.
3.1. Inteligencia de Negocios
uso de los datos como dos segmentos distintos, si bien relacionados ntimamente, de
la inteligencia de negocios. [5]
10
11
Cada elemento de una dimensin podra ser resumido utilizando una jerarqua, si
sus caractersticas lo permiten. Por ello, es posible la creacin de vistas jerrquicas
en los modelos multidimensionales. En primer lugar, la visualizacin roll-up, de
compactacin, mueve hacia arriba la jerarqua, agrupando en unidades ms
grandes a lo largo de una dimensin. [6] En la Figura 3.3, se muestra una
visualizacin roll-up que se desplaza desde trimestres hacia semestres. Por otra
parte, la visualizacin drill-down, de descomposicin, ofrece la operacin contraria,
proporcionando una vista ms fina. [6] En la Figura 3.4, se muestra una
visualizacin drill-down que se desplaza desde trimestres hacia meses.
12
cada hecho registrado. [6] Cada hecho contiene variables medidas y son asociadas
mediante punteros con las tablas de dimensin, que le dan un contexto.
El esquema en estrella es el esquema multidimensional ms simple. El esquema
en estrella consiste en una tabla de hechos con una nica tabla por cada
dimensin. [6] Un ejemplo del mismo es mostrado en la Figura 3.5.
13
Los esquemas en estrella estn diseados para optimizar la facilidad de uso por
parte de los usuarios y el desempeo de la obtencin de datos, minimizando el
nmero de tablas a combinar para llevar a cabo las operaciones.
El principal beneficio que ofrece un esquema en estrella es su simplicidad para los
usuarios y su facilidad para ser procesado por un sistema de bases de datos, ya que
las consultas son escritas con combinaciones sencillas entre las tablas de hechos y
un pequeo nmero de dimensiones.
Debido a su enorme volumen, la informacin contenida en un almacn de datos
cambia con menos frecuencia que la contenida en una base de datos transaccional.
14
SQL fue uno de los primeros lenguajes comerciales que reflejaron el modelo
relacional de Edgar F. Codd. [6] A pesar de no apegarse al modelo relacional descrito
por Codd, pas a ser el lenguaje de bases de datos ms utilizado. Si bien SQL es
descrito como, y es en gran medida, un lenguaje declarativo, es decir, que indica lo
que se va a realizar, pero no como lo va a hacer, tambin incluye elementos
procedurales.
Despus de convertirse en un estndar de la ANSI (American National Standards
15
especificada a travs del operador JOIN. Este operador define la manera en que dos
tablas estn relacionadas especificando las columnas de cada tabla a ser usadas
para la combinacin y los operadores lgicos a ser usados para la comparacin entre
los valores de dichas columnas. Por ejemplo, si en una tabla se tienen las claves de
todos los crditos asignados y sus estados y en otra las claves de todos los crditos
asignados y sus fechas de vencimiento, se puede realizar una consulta que muestre,
para cada crdito, su estado y su fecha de vencimiento, utilizando como atributo de
combinacin la clave del crdito.
Adems de las consultas, SQL provee otros elementos para la manipulacin de
datos y esquemas contenidos en un manejador. Entre los ms relevantes para el
presente proyecto, se encuentran:
a. Los comandos INSERT, UPDATE y DELETE, que agregan, modifican y eliminan,
respectivamente, filas a una tabla existente. Mediante estos comandos, en
combinacin con la declaracin SELECT, se han realizado los procesos de
extraccin, transformacin y carga de datos desde las bases de datos origen
hasta las bases de datos intermedia e histrica.
b. El comando CREATE, el cual crea un objeto, como una tabla, un ndice, etc., en
la base de datos. Utilizando este comando, se han creado los esquemas, las
tablas y los ndices en las bases de datos utilizadas en el proyecto.
c. El comando ALTER, que modifica la estructura de un objeto existente. Este
comando ha sido utilizado para agregar y eliminar restricciones de clave
primaria en varias tablas a lo largo del proceso contemplado en la solucin.
a. El comando TRUNCATE borra todos los datos que se encuentran en una tabla
sin borrar la tabla como tal. Utilizndolo, se han borrado los datos de las
tablas pertenecientes a las bases de datos origen e intermedia una vez que los
mismos hubiesen pasado a la base de datos histrica.
b. El comando DROP borra un objeto que tenga nombre de la base de datos. Con
este comando se han eliminado ndices creados sobre atributos en las tablas
16
CAPTULO 4
MARCO TECNOLGICO
En el presente captulo se realiza una descripcin de las herramientas utilizadas
para el desarrollo de la solucin. Se describe SQL Server, un sistema de
administracin de bases de datos, junto con varios servicios adicionales del mismo,
relacionados con inteligencia de negocios. Adicionalmente, se hace mencin de la
manera de programar en SQL Server, el lenguaje de programacin T-SQL
4.1. SQL Server
18
multidimensional
comprimido
optimizado.
Despus
del
procesamiento, los datos en el cubo dejan de estar conectados con las fuentes
relacionales. Por lo tanto, cualquier cambio subsiguiente en los datos
relacionales no sern reflejados hasta que el cubo sea reprocesado. La ventaja
principal de este modo de almacenamiento es que, como los datos estn
guardados localmente en el servidor y los clculos son generados previamente,
las consultas se ejecutan rpidamente.
b. ROLAP (Relational OLAP, OLAP Relacional): Tanto los datos como las
agregaciones permanecen en la fuente de datos relacional. La ventaja
principal de este modo de procesamiento es que los datos se pueden ver
prcticamente en tiempo real.
En el presente proyecto, se ha decidido utilizar la opcin de almacenamiento por
defecto de Analysis Services, MOLAP, ya que se supone que el banco est dispuesto
a realizar la inversin en almacenamiento para el servidor OLAP y que la
generacin de informes se realizar frecuentemente, para lo cual es necesario que
las consultas sobre la base de datos histrica sean procesadas rpidamente. De todas
formas, en caso de que ms adelante se decida utilizar el modo de almacenamiento
19
llamado
MDX
(MultiDimensional
eXpressions,
Expresiones
20
21
y solo
errores,
22
base de datos, entre otros. Adems, el mismo puede ser usado para crear nuevas
bases de datos, alterar cualquier base de datos existente agregando o modificando
tablas e ndices, o realizar anlisis de desempeo. El Explorador de Objetos incluye
ventanas de consulta, las cuales proveen una interfaz grfica para escribir y ejecutar
consultas.
SQL Server Management Studio fue de gran utilidad para la realizacin del
proyecto, ya que permite la edicin y creacin de scripts de SQL y la ejecucin de
consultas sobre las distintas tablas de manera muy sencilla.
4.1.1.5. Business Intelligence Development Studio
23
CAPTULO 5
DESCRIPCIN DE LA SOLUCIN
La solucin desarrollada en el presente perodo de pasanta es un prototipo de un
sistema de Inteligencia de Negocios y Almacn de Datos que constituye una parte
de un proyecto a realizar por Microsoft para BBVA Banco Provincial.
Entre otras cosas, el BBVA Banco Provincial necesita poder disponer de datos
histricos relacionados con la informacin financiera y contable generada
mensualmente y generar informes que faciliten el archivamiento y la comprensin
de dichos datos. Para dicho fin, la parte del proyecto a desarrollar relacionada con
Inteligencia de Negocios debe recoger, compaginar y analizar datos transaccionales,
definir hechos y dimensiones y generar informes que hagan uso de dichos datos
agregados.
La solucin de Inteligencia de Negocios de esta pasanta comprende la extraccin,
transformacin y carga desde fuentes heterogneas de datos hacia un rea de
preparacin. Desde esa rea, los datos son movidos hacia un almacn central de
datos histricos, a partir de los cuales un cubo OLAP es construido. Dichos datos
agregados contenidos en el cubo son, en fin, hechos disponibles a los usuarios finales
a travs de reportes, por medio de un servidor de reportes y por medio de Excel.
En el esquema presentado en la Figura 5.1, se muestra la arquitectura de la
solucin desarrollada. A partir de la base de datos origen, en la cual se ha realizado
la insercin de registros aleatorios, se ejecutan diversos procesos de carga,
extraccin y procesamiento de datos. Esto deriva finalmente en la construccin de
una base de datos OLAP a partir de la cual se pueden realizar consultas a fin de
cubrir parte de los requerimientos de informacin planteados por el BBVA Banco
Provincial.
25
26
27
En primer lugar, es importante mencionar que las bases de datos origen utilizadas
constituyen un subconjunto de la totalidad de las bases de datos reales. Esto es
debido a que las bases de datos reales poseen una cantidad enorme de tablas y hacer
una solucin contemplando todas ellas se saldra ampliamente del alcance posible en
el tiempo de duracin de la pasanta. A continuacin se presenta una pequea
descripcin de las bases de datos utilizadas. Para informacin sobre las tablas que
conforman las bases de datos, los atributos de las tablas y los tipos de datos de los
atributos, ir al apndice A.
La base de datos DBALEJANDRIA_STAGINGAREA es la base de datos origen, sobre
cuyas tablas se realizan los procesos de extraccin y carga.
La base de datos SIF contiene los datos procesados desde la base de datos origen,
es decir, DBALEJANDRIA_STAGINGAREA. Est formada nicamente por una tabla
llamada AT04. En esta tabla se guardan los datos correspondientes a los crditos,
como fecha de cierre, nmero de crdito, estado de crdito, situacin del crdito,
cuotas vencidas, etc.
La base de datos Prototipo es una base de datos histrica de crditos en la cual
son cargados los datos provenientes directamente de la base de datos SIF.
5.2. Generador de datos aleatorios en tablas de origen.
Para la eleccin de los posibles valores de los atributos en la base de datos
DBALEJANDRIA_STAGINGAREA, se ha utilizado como referencia en algunos casos un
conjunto de registros de ejemplo suministrados por el banco, mostrados en el
apndice B. Por otra parte, tambin fueron utilizados como referencia valores
encontrados en los scripts de carga y transformacin, suministrados por los
consultores de Microsoft.
Los crditos, cuyos datos son descritos en el tomo 4, como se dijo en el captulo 2,
estn divididos en subconjuntos segn el tipo de operacin financiera que
28
29
30
AT04
de
SIF,
especficamente
para
los
campos
Fecha_Cierre,
31
se
ejecutase
correctamente,
solamente
se
realiz
efectivamente
la
actualizacin de datos, en primer lugar, desde las tablas en las que datos aleatorios
fueron agregados y, en segundo lugar, con valores constantes colocados en el script.
Las tablas desde las cuales se realiz actualizacin fueron las correspondientes al
aplicativo Factoring. En este script se actualizan valores para los siguientes
campos de la tabla AT04:
a. Fecha_liquidacion, fecha de liquidacin del crdito.
b. CUOTAS, nmero de cuotas del crdito.
c. CUOTAS_VENCIDAS, nmero de cuotas vencidas del crdito.
d. Monto_V30d, montos con hasta 30 das de vencidos.
e. Monto_V60d, montos con hasta 60 das de vencidos.
f. Monto_V90d, montos con hasta 90 das de vencidos.
g. Monto_V120d, montos con hasta 120 das de vencidos.
h. Monto_V180d, montos con hasta 180 das de vencidos.
i. Monto_V1a, montos con hasta un ao de vencidos.
j. Monto_Vm1a, montos con ms de un ao de vencidos.
32
procedimiento
se
llama
prc_RandomInsert,
se
ha
almacenado
15.Post-ComunesDefaults.sql,
16.SP01.sql
Prototipo
33
34
La tabla APLICATIVO contiene los cdigos de los aplicativos y sus nombres. Los
aplicativos
son
Sobregiros,
Efectos,
Factoring,
Leasing,
(Insercin
Flujo de datos desde la tabla AT04 de la base de datos SIF hasta la tabla
35
copiados. Estas dos tareas se realizaron mediante dos scripts, llamados Creacion
Indices y Fks en At04.sql y Eliminacion Indices y Fks en At04.sql,
respectivamente. Los mismos se encuentran en el apndice F.
Adems, tambin antes del flujo de datos entre las tablas AT04 y mediante un
procedimiento llamado prc_ArreglarCierreLiquidacion, el cual se almacen en
la base de datos SIF y que no recibe parmetros de entrada, se actualizaron los
valores de los atributos Fecha_cierre_date y Fecha_liquidacion_date de la
tabla AT04 de la misma base de datos de acuerdo a los valores de los atributos
Fecha_Cierre y Fecha_liquidacion, respectivamente. Por ejemplo, si para un
registro
el
valor
de
Fecha_liquidacion
es
19000101,
entonces
en
los
registros
tanto
de
las
tablas
de
las
bases
de
datos
36
tomo 4. En el mismo se observa la tabla de hechos AT04 rodeada por las tablas de
dimensin
DimTiempo,
SB35_SITUACION_CREDITO,
SB34_ESTADO_CREDITO,
APLICATIVO,
TIPO_CARTERA
En primer lugar, se configuraron las conexiones a las fuentes de datos. En este caso, la
fuente de datos es la base de datos Prototipo. En segundo lugar, se seleccionaron las
tablas de dimensin y la tabla de hechos de la Figura 5.2. En tercer lugar, se agregaron a la
tabla de dimensin dos atributos derivados. El clculo de los mismos se presenta en la Tabla
37
5.1. Esto se hizo para que los meses, los trimestres y los semestres de cada ao pudieran ser
identificados unvocamente, ya que la herramienta lo requiere para elaborar las jerarquas
de la dimensin.
En cuarto lugar, se configuraron las dimensiones del cubo, las cuales estn
basadas en las tablas de dimensin. Para el caso de la dimensin de tiempo, basada
en la tabla DimTiempo, se configuraron las dos jerarquas mostradas en la Figura
5.2, una mensual y la otra semanal.
Tabla 5.1: Clculos con nombre
Nombre
Clculo
MesClave
Anho*100 + Mes
TrimestreClave
Anho*100 + NumeroTri
SemestreClave
Anho * 10 + Semestre
38
Por ejemplo, en la Figura 5.4, se puede saber los montos vencidos totales para
personas jurdicas cuya fecha de vencimiento se encuentra en el mes de enero de
2010, etc.
5.6. Elaboracin del paquete de flujo de datos con Integration Services mediante la
herramienta Business Intelligence Development Studio
Posteriormente a la configuracin del cubo, se pas a la configuracin y
elaboracin del paquete de flujo que ejecute lo mostrado en la Figura 5.1 desde la
generacin de datos aleatorios en las tablas de origen hasta el procesamiento y
almacenamiento de datos histricos en el cubo. Esto se hizo utilizando Integration
Services.
Figura 5.3: Montos Vencidos Totales para crditos discriminados por aplicativo (filas)
y estado de crdito (columnas), cuya situacin de crdito es Litigio (filtro)
39
Figura 5.4: Montos Vencidos Totales para crditos discriminados por fecha de
liquidacin (filas) y naturaleza del cliente (columnas)
Figura 5.5: Cuotas Vencidas discriminadas para crditos por aplicativo (filas) y
situacin de crdito (columnas), cuya fecha de cierre est en el ao 2012 (filtro)
5.7. Consulta
De lo realizado en la seccin 5.5 se obtuvo un cubo OLAP con el cual se pueden
realizar distintas operaciones a fin de observar sus datos. De hecho, en las Figuras
5.3, 5.4 y 5.5, se dieron ejemplos de posibles visualizaciones, resultantes de la
combinacin de hechos y dimensiones, las cuales a su vez estn jerarquizadas y
pueden establecerse con diferentes granularidades, dependiendo del caso. Por
40
ejemplo, para la dimensin relativa al tiempo, se pueden ver los montos vencidos por
da, mes, trimestre, semana, etc.
Dichas visualizaciones de datos pueden colocarse en un servidor de informes,
utilizando Reporting Services, a fin de que personas que no estn familiarizadas con
el Business Intelligence Development Studio y que vayan a necesitar acceso a los
datos puedan hacerlo sin muchos inconvenientes. Esto se ha hecho utilizando la
misma herramienta Business Intelligence Development Studio. Despus de creados,
los informes pueden ser visualizados en un navegador de Internet. La Figura 5.6
muestra un reporte de los montos vencidos totales discriminados por naturaleza del
cliente y por fecha de cierre del crdito.
Desde Excel 2010 tambin es posible acceder a los datos de un cubo creado en
41
CAPTULO 6
PRUEBAS Y RESULTADOS
En este captulo, se presentan tiempos de ejecucin del paquete de Integration
Services mencionado en la seccin 5.6. Los mismos son presentados en la Figura 6.1.
3500
3000
2500
Tiempo total
2000
00Universo
1500
02Factoring
1000
500
0
0
5000
10000
15000
20000
25000
FilasOrigen
Las filas insertadas en las tablas de origen se indican en el eje x y los tiempos de
ejecucin del paquete, en segundos, en el eje y. Tiempo total muestra el tiempo de
ejecucin del paquete completo. 00Universo muestra el tiempo de ejecucin del
script 00.Universo.sql, presentado en la seccin 5.3.1. 02Factoring muestra el
tiempo de ejecucin del script 02.Factoring.sql, presentado en la seccin 5.3.2.
Rep. del cubo muestra el tiempo de reprocesamiento del cubo con los nuevos
valores insertados.
43
Cabe acotar que parte del tiempo de ejecucin del paquete corresponde a la
ejecucin del procedimiento para crear registros directamente sobre la tabla AT04 de
SIF, presentado en la seccin 5.3.3, con valor 50000 para el parmetro @Filas. Al
insertarse siempre el mismo nmero de registros, el tiempo de ejecucin de este
procedimiento es constante para todas las corridas realizadas, con un valor
alrededor de los 30 segundos.
Debido a la gran cantidad de combinacin de tablas que se incluyen dentro del
script 02Factoring, el tiempo de ejecucin del mismo crece de manera polinomial
con un exponente elevado con respecto al nmero de registros en las tablas
involucradas en dichas combinaciones, lo cual hace, como se observa en la Figura
6.1, que la ejecucin del mismo consuma la mayor parte del tiempo de ejecucin del
paquete de datos entero.
Si bien la ejecucin del script 00Universo tambin posee combinaciones de tablas
y tambin consume un tiempo que crece de manera polinomial con respecto al
nmero de registros en las tablas, dicho crecimiento polinomial es mucho ms lento
que el del script 02Factoring.
44
Conclusiones y recomendaciones
En el presente proyecto se ha desarrollado un prototipo de solucin que lleva a
cabo, de manera secuencial, la extraccin de datos desde unas bases de datos de
origen, el procesamiento de dichos datos y su carga en una base de datos histrica.
La extraccin de datos consisti en tomar los datos desde las bases de datos de
origen, siempre con conocimiento previo del significado que los mismos tendran una
vez colocados en la base de datos histrica. Los datos utilizados para simular este
proceso de extraccin son aleatorios y fueron generados a partir de unos pocos
registros de prueba suministrados por el banco.
En el procesamiento de los datos, los datos extrados desde las bases de datos
origen, en bruto, son ordenados, agrupados y, finalmente, convertidos en
informacin til para la base de datos histrica. Con base en las pruebas realizadas,
se observ que el procesamiento de los datos puede consumir mucho tiempo si el
nmero de registros a procesar es grande. Por lo tanto, se recomienda para el futuro
la optimizacin del acceso a los datos mediante la construccin de ndices y la
realizacin de pruebas en ambientes con caractersticas ms cercanas a aquellas en
las que la solucin va a ser implantada, en este caso los servidores del banco.
La carga de datos consisti en colocar los datos ya procesados desde las bases de
datos fuente en las bases de datos histricas. Debido a la suposicin de que las bases
de datos histricas son permanentes, es decir, que los datos contenidos en ellas no se
pueden ni modificar ni eliminar una vez son ingresados, no se implementaron
procesos de mantenimiento de datos en estas bases de datos histricas, sino
solamente de carga.
Por otra parte, los datos contenidos en el cubo OLAP configurado estn basados en
la informacin contenida en la base de datos histrica. Es precisamente sobre el cubo
OLAP
que los usuarios finales van a realizar las visualizaciones de los datos
45
Excel.
Como en toda aplicacin a ser utilizada por usuarios no necesariamente
poseedores de conocimientos tcnicos en el rea de la informtica, la interaccin de
los usuarios con la misma debe ser sencilla y de fcil aprendizaje. Es por eso que la
visualizacin de los datos histricos a travs del servidor de reportes y de Microsoft
46
Referencias
1. Encyclopdia Britannica Inc. 2012. Microsoft Corporation. Disponible en Internet:
http://www.britannica.com/EBchecked/topic/380624/Microsoft-Corporation,
consultado
el 23 de abril de 2012.
2. Eduardo Valero. 2011. Comunicado oficial de Microsoft Venezuela. Disponible
en
Internet:
http://www.noticias24.com/tecnologia/noticia/8035/microsoft-
desmiente-retiro-de-venezuela-y-reafirma-su-compromiso-con-el-pais/,
consultado el 23 de abril de 2012.
3. Margarita Alberti, Luisa Gmez. 2012. Services Venezuela FY12 Career
Business
Intelligence
Technology.
Disponible
en
Internet:
Rouse.
2006.
SQL
Server.
Disponible
en
Internet:
http://searchsqlserver.techtarget.com/definition/SQL-Server, consultado el 27
de abril de 2012.
47
Internet:
http://www.sql-server-performance.com/2009/ssas-storage-
Internet:
http://msdn.microsoft.com/en-us/library/ms145506.aspx,
en
Internet:
http://msdn.microsoft.com/en-
http://msdn.microsoft.com/en-
48
49
APNDICE A
INFORMACIN SOBRE TABLAS DE LAS BASES DE DATOS
A continuacin se presentan las tablas utilizadas junto con los atributos que
fueron utilizados efectivamente de las mismas y sus tipos de datos SQL
correspondientes. Todos los valores pueden ser null a menos que sean parte de la
clave primaria o se indique lo contrario.
A.1. Base de datos DBALEJANDRIA_STAGINGAREA:
a. TXT_LRDTS02
(CHAR(4)),
(COD_BCO_CONTR
CH_DIG1_CONTR
SEQ_CTA_CONTR (CHAR(10)),
(CHAR(4)),
(CHAR(6)),
COD_AGEN_CONTR
CH_DIG2_CONTR
(CHAR(6)),
STATUS_GIRO (CHAR(1)),
DT_STATUS
(CHAR(10))).
b. TXT_LRDTS21
DIG1_CONTR
(BCO_CONTR
(CHAR(6)),
(CHAR(4)),
AGEN_CONTR
(CHAR(6)),
DIG2_CONTR
(CHAR(4)),
SEQ_CTA_CONTR
(FAC_NCONTRAT_ENT
(CHAR(4)),
FAC_NCONTRAT_CENT
FAC_NCONTRAT_DC
(CHAR(2)),
FAC_NCONTRAT_CP
FAC_NCONTRAT_CTA
(CHAR(8)),
FAC_IESTFCT
(CTR_NCONTRAT_ENT
(CHAR(4)),
CTR_NCONTRAT_CENT
CTR_NCONTRAT_CP
(CHAR(2)),
CTR_NCONTRAT_CTA
CUENTA
(CHAR(10)),
LIBRE_CAR5
SALTEOR (CHAR(20))).
SITPRES
(CHAR(10)),
(CHAR(1)),
SALREAL
FECSIT
(CHAR(20)),
50
g. TXT_LEDTCON
(COD_EMPRESA
(CHAR(4)),
CENTRO_APORTAN
(CHAR(8)),
TIPO_ULT_MODIF
EST_CONTRATO
(CHAR(2)),
FEC_VAL_RESID
(CHAR(3)),
(CHAR(30)),
(ENTIDAD
(CHAR(4)),
CENTRO_ALTA
(CHAR(4)),
(CHAR(4)),
SALDO_DISPUE
(CHAR(20)),
PRODUCTO
(CHAR(2))).
i. TXT_PEDT008 (CLAVCTA (CHAR(18)), CLASTIT (CHAR(3))).
j. TXT_MCDTCON
(MCNENTCO
(CHAR(4)),
MCNOFICO
(CHAR(4)),
(MCNENTCO
MCTCONTR
(CHAR(2)),
(CHAR(4)),
MCNCONTR
MCNOFICO
(CHAR(8)),
(CHAR(4)),
MCTOTDEU
(CHAR(18))).
A.2. Base de datos SIF:
a. AT04
(Fecha_Cierre
(PARTE
DE
LA
CLAVE
PRIMARIA,
INT),
(CHAR(18)),
Situacion_credito
(TINYINT),
(INT),
Credito_18
Tipo_Cartera
Oficina
Cuotas_Vencidas
Estado_Credito
(TINYINT),
Naturaleza_cliente
(VARCHAR(4)),
Fecha_liquidacion
(VARCHAR(5)),
Cuotas
(SMALLINT),
(SMALLINT),
Monto_V30d
(DECIMAL(13,2)),
Monto_V60d
(DECIMAL(13,2)),
Monto_V90d
(DECIMAL(13,2)),
Monto_V120d
(DECIMAL(13,2)),
Monto_V180d
(DECIMAL(13,2)),
Monto_Vm1a
(DECIMAL(13,2)),
Monto_V1a
(DECIMAL(13,2)),
Fecha_cierre_date
(DATETIME),
Fecha_liquidacion_date
51
(ConsecutivoFecha
(DATETIME,
NOT
(CLAVE
PRIMARIA,
Anho
(INT),
NULL),
MesNombre(VARCHAR(20)),
Semana
(VARCHAR(15)),
DiaAnho
(INT),
(VARCHAR(15)),
DiaShort
(VARCHAR(15)),
(VARCHAR(15)),
MesF
Feriado
(INT),
(VARCHAR(35)),
Mes
(INT),
Dia
DiaF
DiaNombre
(INT),
(INT),
EsFinSemana
(INT),
Semestre
NumeroTri
Fecha
SemanaNombre
(INT),
(VARCHAR(3)),
SemestreNombre
INT),
NombreTri
EsFeriado
(BIT),
(INT),
SemanaF
(BIT),
(INT),
SemanaNombreF (VARCHAR(15)).
i. APLICATIVO
(Cod
(CLAVE
PRIMARIA,
TINYINT),
Nombre
(VARCHAR(30)).
j. SB34_ESTADO_CREDITO (Cod (CLAVE PRIMARIA, TINYINT), Nombre
(VARCHAR(30)).
k. SB35_SITUACION_CREDITO
(Cod
(CLAVE
PRIMARIA,
TINYINT),
PRIMARIA,
TINYINT),
Nombre (VARCHAR(20)).
l. SB76_NATURALEZA_CLIENTE
(Cod
(CLAVE
Descripcion (VARCHAR(20)).
m. TIPO_CARTERA (Cod (CLAVE PRIMARIA, VARCHAR(4))).
n. AT04
(Fecha_Cierre
(PARTE
DE
LA
CLAVE
PRIMARIA,
INT),
(PARTE
DE
LA
CLAVE
PRIMARIA,
VARCHAR(30)),
HACIA
SB35_SITUACION_CREDITO(Cod),
Naturaleza_cliente
(CLAVE
TINYINT),
FORNEA
HACIA
HACIA
Fecha_liquidacion
(SMALLINT),
TIPO_CARTERA(Cod),
(INT),
Oficina
Cuotas_Vencidas
(DECIMAL(13,2)),
Monto_V60d
VARCHAR(4)),
(VARCHAR(5)),
(SMALLINT),
(DECIMAL(13,2)),
Cuotas
Monto_V30d
Monto_V90d
52
(DECIMAL(13,2)),
Monto_V120d
(DECIMAL(13,2)),
Monto_V180d
(DECIMAL(13,2)),
Monto_V1a
(DECIMAL(13,2)),
Monto_Vm1a
(DECIMAL(13,2)),
Fecha_cierre_date
DimTiempo(Fecha),
DATETIME),
FORNEA
(BIT)).
HACIA
FORNEA
HACIA
Fecha_liquidacion_date
(CLAVE
DimTiempo(Fecha),
(CLAVE
DATETIME),
Carga_Manual
53
APNDICE B
REGISTROS DE EJEMPLO SUMINISTRADOS POR EL BANCO
A continuacin se muestran los registros de ejemplo suministrados por el banco
para ciertas tablas de la base de datos DBALEJANDRIA_STAGINGAREA.
B.1. Tabla TXT_LEDTCON:
('0108','00023589','30','28','00079772',' ','CA02','AN','0029','0580','3870','C','
'
','
',
',
','000000000000000 ',
',
','000000000000000 ','
54
','000000000001400 ',
','
','VI',' ','
','N ',
','2006-01-26-17.12.15.442556',
','LE2CM110')
55
','
',
',
','VEF','0108','0001','3','2','0100035451','000000001886600000 ',
','2003-03-271120
','0001-01-01',
','2008','00087858','02349543','N','N',
56
'2008-05-06','VEF','S','
','0001-01-01','2008-06-15','2008-06-15',
','0001-01-01','N','N','N','PI','0108',
','BOUY','2008-05-06-18.21.49.762794','A4C0300',
'2008-06-27-18.20.29.247599','A4C0650')
B.5. Tabla TXT_FADTCTR:
('0108','0001','31','26','00055680','F','D','VEF','00087858','0950','E','2007-09-24',
'2008-09-30','2008-09-30','A','0001-01-01','000 ',' ','000000000000000 ','BOUZ',
'2007-09-24-10.44.25.499396','VP34703','2008-09-30-18.21.24.871954','A4C6100')
B.6. Tabla TXT_FADTPRC:
('C','26','FA01','FACTORING CON RECURSO
'CARTERA COMERCIAL
'
','CC',
','BZ7E','2006-04-05-11.27.38.763906','VH41101',
57
'2006-04-05-11.27.38.763906','VH41101')
B.7. Tabla TXT_FADTCBA:
('0108','0001','31','26','00055680','00081989','V','2007-09-24','9999-12-31',
'000000000000000 ','00000 ','000 ','000000000000000 ','00000 ','000 ',' ','N','N','N',
'000000010000000 ','000000000000000 ','000 ',' ','000000000000000 ','000 ','000 ',
' ','00000 ',' ','000000000000000 ',' ','ZOV0','2007-09-24-10.58.57.674692','VP34703',
'2007-09-24-10.58.57.674692','VP34703')
B.8. Tabla TXT_FADTTIN:
('0108','0001','31','26','00055680','00081989','V','2007-09-24','9999-12-31','P01','D10',
'P01','DP5','ZOV1','2007-09-24-11.13.43.125625','VP34703',
'2009-01-14-15.42.14.318140','VP41211')
B.9. Tabla TXT_FADTT07:
('DP1','VEF','2002-08-09','2004-12-07','001000000 ','000000000000000 ','000000000 ',
'000000000000000 ','000000000 ','000000000000000 ','000000000 ',
'000000000000000 ','000000000 ','000000000000000 ','000000000 ',
'000000000000000 ','000000000 ','000000000000000 ','000000000 ',
'000000000000000 ','000000000 ','000000000000000 ','000000000 ','000 ','000000000 ',
58
'000 ','000000000 ','000 ','000000000 ','000 ','000000000 ','000 ','000000000 ','000 ',
'000000000 ','000 ','000000000 ','000 ','000000000 ','000 ','000000000 ','BII2',
'2002-08-08-17.43.13.930614','VP27165','2004-12-07-17.32.45.873701','VP27165')
B.10. Tabla TXT_HAQLT190:
('02-05-2012','617800101171 ','1021','VEF','010844149100115205','
15','950')
','
',' ','
','N','VEF','1988-09-15','M',
59
','
','
',
','1900-01-01','00000 ',
'1992-02-28',' ','0108','N','
','
',' ','
','C','VEF')
','S
','
','
','FICHERO CENTRAL
','CARACAS
',
','
',
','000000000000','0000','00',123)
60
','2003-08-26-01.36.39.833455',' ')
','01080571','01080571','96','BE01',
','00000001070',
',
'000000000000000','000000000000000','000000000000000','000000000000000',
'000000000000000','000000000000000','000000000000000','
'
','
','2012-01-31','CBE NP ','R','E','N','N','0103030','9999-12-31','9999-12-31',
61
'0001-01-01','0001-01-01','0001-01-01','P','L','N','N','N','001','031','000000000000000',
'000000000000000','S','N','F','2012-03-31','0108','3220','UB4CDI20','UB4CDI20',
'2012-04-30-23.56.18.482580','0000','000000','VEN','N','01080571',
'0000000000000000','0000000000000000',' ',' ','V','000000000000000',
'000000000000000','000000000000000','0001-01-01','0001-01-01','0001-01-01',
'000000000000000','000000000000000',' ','000000000000000','0001-01-01',
'0001-01-01','0001-01-01',' ','000000000000000','0001-01-01','0001-01-01',
'0001-01-01','0001-01-01','0001-01-01','000000000000000','000000000000000',
'000000000000000','NN
','
','
','000000000000000',
'000000000000000','0001-01-01','000000000000000',' ','0001-01-01','0001-01-01',
'0001-01-01','000000000000000')
62
APNDICE C
PROCEDIMIENTOS PARA LA INSERCIN DE DATOS EN LAS TABLAS DE
ORIGEN
C.1. Procedimiento prc_RandomInsertEfectos:
USE [SIF]
GO
DROP PROCEDURE [dbo].[prc_RandomInsertEfectos]
GO
CREATE PROCEDURE [dbo].[prc_RandomInsertEfectos]
@Filas int = 100
AS
BEGIN
declare @Bcn char(4) = '0100'
declare
@Acn
char(4)
convert(varchar,(SELECT
ISNULL(RIGHT('000'
MAX(SUBSTRING([CREDITO],5,4))
+
FROM
63
@Seqcn
CONVERT(varchar,@Ap)
convert(varchar,@Seq1),4)
RIGHT('000'
RIGHT('000'
+
+
convert(varchar,@Seq2),4)
SELECT @Stgir = CONVERT(varchar, CAST(RAND() * 4 AS INT) + 1)
SELECT @Csp = CONVERT(varchar, CAST(RAND() * 100 AS INT))
INSERT
INTO
([COD_BCO_CONTR],
DBALEJANDRIA_STAGINGAREA.dbo.TXT_LRDTS02
[COD_AGEN_CONTR],
[CH_DIG1_CONTR],
64
INSERT
([BCO_CONTR],
INTO
DBALEJANDRIA_STAGINGAREA.dbo.TXT_LRDTS21
[AGEN_CONTR],
[DIG1_CONTR],
[SEQ_CTA_CONTR], [COD_SUB_PROD])
SELECT @Bcn, @Acn, @Di1, @Di2, @Seqcn, @Csp
SELECT @Cont = @Cont + 1
SELECT @Seq2 = @Seq2 + 1
END
SELECT @Seq2 = 0
SELECT @Seq1 = @Seq1 + 1
END
END
GO
C.2. Procedimiento prc_RandomInsertFactoring:
USE [SIF]
GO
DROP PROCEDURE [dbo].[prc_RandomInsertFactoring]
GO
CREATE PROCEDURE [dbo].[prc_RandomInsertFactoring]
@Filas int = 100
[DIG2_CONTR],
65
AS
BEGIN
declare @Ent char(4) = '0108'
declare
@Cent
char(4)
convert(varchar,(SELECT
ISNULL(RIGHT('000'
MAX(SUBSTRING([CREDITO],5,4))
+
FROM
66
IF
(SELECT
COUNT(*)
FROM
DBALEJANDRIA_STAGINGAREA.dbo.TXT_FADTPRC) < 10
BEGIN
DELETE FROM DBALEJANDRIA_STAGINGAREA.dbo.TXT_FADTPRC
WHILE @Cont < 10
BEGIN
INSERT
INTO
DBALEJANDRIA_STAGINGAREA.dbo.TXT_FADTPRC
([PRC_TIPFACT], [PRC_CODCAR])
SELECT @Cont, convert(varchar,CAST(RAND() * 100 AS INT))
SELECT @Cont = @Cont + 1
END
END
SELECT @Cont = 0
WHILE @Cont < @Filas AND @Seq1 < 10000
BEGIN
WHILE @Cont < @Filas AND @Seq2 < 10000
BEGIN
SELECT
@Cta
RIGHT('000'
convert(varchar,@Seq1),4)
RIGHT('000' + convert(varchar,@Seq2),4)
67
@Mant
RIGHT('0000000000000000000'
INTO
([FAC_NCONTRAT_ENT],
[FAC_NCONTRAT_CP],
DBALEJANDRIA_STAGINGAREA.dbo.TXT_FADTFAC
[FAC_NCONTRAT_CENT],
[FAC_NCONTRAT_DC],
[FAC_NCONTRAT_CTA],
[FAC_IESTFCT],
INTO
([CTR_NCONTRAT_ENT],
DBALEJANDRIA_STAGINGAREA.dbo.TXT_FADTCTR
[CTR_NCONTRAT_CENT],
[CTR_NCONTRAT_CP],
68
END
SELECT @Seq2 = 0
SELECT @Seq1 = @Seq1 + 1
END
END
GO
C.3. Procedimiento prc_RandomInsertPrestamos:
USE [SIF]
GO
DROP PROCEDURE [dbo].[prc_RandomInsertPrestamos]
GO
CREATE PROCEDURE [dbo].[prc_RandomInsertPrestamos]
@Filas int = 100
AS
BEGIN
declare
@Ofi
char(4)
convert(varchar,(SELECT
ISNULL(RIGHT('000'
MAX(SUBSTRING([CREDITO],5,4))
+
FROM
69
@Cuenta
convert(varchar,@Seq1),4)
convert(varchar,@Seq2),4)
CONVERT(varchar,@Ap)
+
RIGHT('000'
RIGHT('000'
+
+
70
INTO
DBALEJANDRIA_STAGINGAREA.dbo.TXT_UGDTMAE([ENTIOFI],
[DIGICCC2],
[CUENTA],
[SITPRES],
[FECSIT],
[DIGICCC1],
[LIBRE_CAR5],
[SALREAL], [SALTEOR])
SELECT
@Entiofi,
@Di1,
@Di2,
@Cuenta,
@Sitpres,
@Fecs,
71
USE [SIF]
GO
DROP PROCEDURE [dbo].[prc_RandomInsertLeasing]
GO
CREATE PROCEDURE [dbo].[prc_RandomInsertLeasing]
@Filas int = 100
AS
BEGIN
declare @Codem char(4) = '0124'
declare
@Cenap
char(4)
convert(varchar,(SELECT
ISNULL(RIGHT('000'
MAX(SUBSTRING([CREDITO],5,4))
+
FROM
72
INTO
DBALEJANDRIA_STAGINGAREA.dbo.TXT_LEDTCON
[TIPO_ULT_MODIF],
[EST_CONTRATO],
@Codem,
@Cenap,
@Dig,
@Codser,
@Numcon,
@Tum,
73
74
declare
@Cenalt
char(4)
convert(varchar,(SELECT
ISNULL(RIGHT('000'
MAX(SUBSTRING([CREDITO],5,4))
+
FROM
@Cuenta
convert(varchar,@Seq1),4)
convert(varchar,@Seq2),4)
'01'
+
RIGHT('000'
RIGHT('000'
+
+
75
@Saldis
CONVERT(varchar,
-1
CAST(RAND()
1000000000 AS INT))
INSERT
([ENTIDAD],
INTO
DBALEJANDRIA_STAGINGAREA.dbo.TXT_BTMAX0
[CENTRO_ALTA],
[DIGICCC1],
[DIGICCC2],
[CUENTA],
INTO
DBALEJANDRIA_STAGINGAREA.dbo.TXT_PEDT008([CLAVCTA], [CLASTIT])
SELECT (@Ent+@Cenalt+@Cuenta), @Clastit
SELECT @Cont = @Cont + 1
SELECT @Seq2 = @Seq2 + 1
END
SELECT @Seq2 = 0
SELECT @Seq1 = @Seq1 + 1
END
END
GO
C.6. Procedimiento prc_RandomInsertMediosPago:
76
USE [SIF]
GO
DROP PROCEDURE [dbo].[prc_RandomInsertMediosPago]
GO
CREATE PROCEDURE [dbo].[prc_RandomInsertMediosPago]
@Filas int = 100
AS
BEGIN
declare @Ment char(4) = '0140'
declare
@Mofi
char(4)
convert(varchar,(SELECT
ISNULL(RIGHT('000'
MAX(SUBSTRING([CREDITO],5,4))
+
FROM
77
@Ncon
RIGHT('000'
convert(varchar,@Seq1),4)
RIGHT('000' + convert(varchar,@Seq2),4)
SELECT @Mot = CASE CAST(RAND() * 2 AS INT) WHEN 0 THEN 'CS'
ELSE 'CL' END
SELECT @Tarj = CONVERT(varchar, CAST(RAND() * 100 AS INT))
SELECT @Totdeu = CAST(RAND() * 1000000 AS INT)
INSERT
([MCNENTCO],
INTO
DBALEJANDRIA_STAGINGAREA.dbo.TXT_MCDTCON
[MCNOFICO],
[MCTCONTR],
[MCNCONTR],
[MCLMOTBJ],
[MCTTARJE], [MCFBAJCO])
SELECT @Ment, @Mofi, @Tcon, @Ncon, @Mot, @Tarj, @Baj
INSERT
INTO
DBALEJANDRIA_STAGINGAREA.dbo.TXT_MCDTRGO
78
79
APNDICE D
POSIBLES VALORES PARA LOS DATOS ALEATORIOS INSERTADOS EN LAS
TABLAS DE ORIGEN
D.1. Tabla TXT_LRDTS02:
a. COD_BCO_CONTR: 0100, escogido arbitrariamente.
b. COD_AGEN_CONTR: el valor depende de los valores que ya existan para
registros del mismo aplicativo en la base de datos histrica, que comienza en
0000 y que aumenta de manera secuencial cada vez que se ejecuta el
proceso completo de manera sucesiva mientras no sea borrada la base de
datos histrica. Por ejemplo, la primera vez que se ejecuta el proceso de la
solucin, toma el valor 0000, el cual llega a la base de datos histrica. Si se
ejecuta de nuevo, verifica la base de datos histrica y toma el valor siguiente,
que es 0001. Sin embargo, si se borra la base de datos histrica, al ejecutar
de nuevo el proceso de la solucin, este campo toma de nuevo el valor 0000.
c. CH_DIG1_CONTR: 7
, escogido arbitrariamente.
d. CH_DIG2_CONTR: 1
, escogido arbitrariamente.
e. SEQ_CTA_CONTR: los primeros dos caracteres son 23, nmero que identifica
al aplicativo. Despus, los siguientes ocho caracteres corresponden a una
secuencia numrica que comienza en 00000000 y aumenta de uno en uno a
medida
que
se
van
generando
los
registros
aleatorios
dentro
del
procedimiento.
f. STATUS_GIRO: toma de manera aleatoria cualquier valor comprendido entre
1 y 4, incluidos estos, si se interpretan como enteros, con probabilidad
uniformemente distribuida.
g. DT_STATUS: toma el valor 2012-01-31, el cual posteriormente se
80
se
inserta
el
mismo
valor
que
para
el
atributo
se
inserta
el
mismo
valor
que
para
el
atributo
y 99
81
hasta 999999.
82
los
primeros
cuatro
caracteres
son
0116,
escogidos
83
que
se
van
generando
los
registros
aleatorios
dentro
del
procedimiento.
e. SITPRES: toma de manera aleatoria cualquier valor comprendido entre 0 y
3, incluidos estos, si se interpretan como enteros, con probabilidad
uniformemente distribuida.
f. FECSIT: toma el valor 2012-01-31, el cual posteriormente se interpreta
como una fecha, especficamente el 31 de enero de 2012.
g. LIBRE_CAR5:
1
toma
de
y 99
manera
aleatoria
cualquier
valor
entre
y 9999999
, incluidos estos, si
y 9999999
, incluidos estos, si
84
85
que
se
van
generando
los
registros
aleatorios
dentro
del
y 99
procedimiento.
f. SUBPRODU: toma de manera aleatoria cualquier valor entre 0
incluidos
estos,
si
se
interpretan
como
enteros,
con
probabilidad
uniformemente distribuida.
j. SALDO_DISPUE: toma de manera aleatoria cualquier valor comprendido entre
-999999999
y 0
, incluidos estos, si
86
estos,
si
se
interpretan
como
enteros,
con
probabilidad
uniformemente distribuida.
l. MCFBAJCO: toma el valor 2012-01-31, el cual posteriormente se interpreta
como una fecha, especficamente el 31 de enero de 2012.
D.11. Tabla TXT_MCDTRGO:
a. MCNENTCO: se inserta el mismo valor que para el atributo MCNENTCO de la
tabla TXT_MCDTCON.
b. MCNOFICO: se inserta el mismo valor que para el atributo MCNOFICO de la
tabla TXT_MCDTCON.
c. MCTCONTR: se inserta el mismo valor que para el atributo MCTCONTR de la
tabla TXT_MCDTCON.
d. MCNCONTR: se inserta el mismo valor que para el atributo MCNCONTR de la
tabla TXT_MCDTCON.
e. MCTODDEU: toma de manera aleatoria cualquier valor comprendido entre
0
y 999999
, incluidos estos, si se
87
APNDICE E
DESCRIPCIN DE SCRIPTS DE CARGA Y TRANSFORMACIN DE DATOS
E.1 Script 00.Universo.sql
En este script, se hace en primer lugar la declaracin de una variable de tipo INT
llamada @FechaCierre, a la cual se le asigna el valor retornado por la funcin
fx_FechaCierre, almacenada en la base de datos SIF y que actualmente retorna
el valor 20120131, el cual se interpreta como la fecha 31 de enero de 2012. Despus
se pasa a la insercin de registros en la tabla AT04 de SIF, especficamente para los
campos Fecha_Cierre, IDAplicativo, Credito, Credito_18, Estado_credito
y
Tipo_cartera,
partir
de
las
tablas
de
la
base
de
datos
origen
88
de
los
atributos
FAC_NCONTRAT_ENT,
FAC_NCONTRAT_CENT,
89
de
los
atributos
CTR_NCONTRAT_ENT,
CTR_NCONTRAT_CENT,
FAC_NCONTRAT_ENT,
FAC_NCONTRAT_CENT,
FAC_NCONTRAT_CP
FAC_NCONTRAT_CENT,
FAC_NCONTRAT_DC,
FAC_NCONTRAT_CENT,
FAC_NCONTRAT_CP
90
91
CENTRO_APORTAN,
DIGITOS_CTRL,
COD_SERVICIO
NUM_CONTRATO.
d. Credito_18 toma el valor correspondiente a la concatenacin de los atributos
COD_EMPRESA, CENTRO_APORTAN, COD_SERVICIO y NUM_CONTRATO.
e. Estado_credito toma el valor 1 si se trata de un crdito activo, 2 si se trata
de un crdito cancelado y 3 si se trata de un crdito castigado.
92
93
94
f. Tipo_cartera
toma
el
valor
del
atributo
MCTTARJE
de
la
tabla
TXT_MCDTCON.
E.1.7. Resto del script
Hacia el final del script, como ya se mencion, se realizan una actualizacin y una
eliminacin de registros en la tabla AT04.
La
actualizacin
se
realiza
desde
una
tabla
llamada
95
las tablas fueron creadas para que el script corriese correctamente, solamente se
realiz efectivamente la actualizacin de datos, en primer lugar, desde las tablas en
las que datos aleatorios fueron agregados y, en segundo lugar, con valores
constantes colocados en el script. Las tablas desde las cuales se realiz actualizacin
fueron dos de aquellas en las que se insertaron registros en el procedimiento de
insercin aleatoria para el aplicativo Factoring, explicado en la seccin 5.2.2., a
saber: TXT_FADTCTR y TXT_FADTFAC. Adems, solamente se aceptan para la
insercin registros combinados para los cuales el valor de IDAplicativo sea igual a
26, nmero que representa al aplicativo Factoring. A continuacin se presentan las
reglas de combinacin para dichas tablas y AT04:
a. El atributo CREDITO_18 de la tabla AT04 debe ser igual a la concatenacin de
los atributos CTR_NCONTRAT_ENT, CTR_NCONTRAT_CENT, CTR_NCONTRAT_CP
y CTR_NCONTRAT_CTA de la tabla TXT_FADTCTR.
b. El atributo CREDITO_18 de la tabla AT04 debe ser igual a la concatenacin de
los atributos FAC_NCONTRAT_ENT, FAC_NCONTRAT_CENT, FAC_NCONTRAT_CP
y FAC_NCONTRAT_CTA de la tabla TXT_FADTFAC.
Los atributos de la tabla AT04 que se actualizan desde las tablas TXT_FADTCTR y
TXT_FADTFAC son los siguientes:
k. Fecha_liquidacion toma el valor del atributo CTR_DACTIVA de la tabla
TXT_FADTCTR, convertido en entero.
l. CUOTAS toma un valor igual al nmero de filas para las cuales el atributo
CREDITO_18 de la tabla AT04 es igual a la concatenacin de los atributos
FAC_NCONTRAT_ENT,
FAC_NCONTRAT_CENT,
FAC_NCONTRAT_CP
96
los
atributos
FAC_NCONTRAT_ENT,
FAC_NCONTRAT_CENT,
los
atributos
FAC_NCONTRAT_ENT,
FAC_NCONTRAT_CENT,
los
atributos
FAC_NCONTRAT_ENT,
FAC_NCONTRAT_CENT,
los
atributos
FAC_NCONTRAT_ENT,
FAC_NCONTRAT_CENT,
97
los
atributos
FAC_NCONTRAT_ENT,
FAC_NCONTRAT_CENT,
los
atributos
FAC_NCONTRAT_ENT,
FAC_NCONTRAT_CENT,
los
atributos
FAC_NCONTRAT_ENT,
FAC_NCONTRAT_CENT,
98
El
procedimiento
se
llama
prc_RandomInsert,
se
ha
almacenado
99
estos,
si
se
interpretan
como
enteros,
con
probabilidad
uniformemente distribuida.
E.4. 15.Post-ComunesDefaults.sql
En este script se realiza la actualizacin de la tabla AT04 de la base de datos SIF,
colocando valores por defecto para una gran cantidad de campos en los que se tiene
el valor null. Para este caso, hay ciertos valores por defecto que interesan, pues no
100
fueron considerados en todos los scripts de insercin aleatoria y forman parte del
cubo OLAP a construir:
a. Saldo tiene 0 como valor por defecto.
b. Cuotas tiene 0 como valor por defecto.
c. Cuotas_Vencidas tiene 0 como valor por defecto.
d. Monto_V30d tiene 0 como valor por defecto.
e. Monto_V60d tiene 0 como valor por defecto.
f. Monto_V90d tiene 0 como valor por defecto.
g. Monto_V120d tiene 0 como valor por defecto.
h. Monto_V180d tiene 0 como valor por defecto.
i. Monto_V1a tiene 0 como valor por defecto.
j. Monto_Vm1a tiene 0 como valor por defecto.
k. Situacion_credito tiene 0 como valor por defecto.
l. Naturaleza_cliente tiene 0 como valor por defecto.
m. Estado_credito tiene 0 como valor por defecto.
n. Fecha_liquidacion tiene 19000101 como valor por defecto, la cual puede
interpretarse como el 1 de enero de 1900.
101
APNDICE F
SCRIPTS PARA CREACIN Y ELIMINACIN DE RESTRICCIONES DE CLAVE
E NDICES EN TABLAS DE LA BASE DE DATOS PROTOTIPO
F.1. Creacion Indices y Fks en At04.sql
USE [Prototipo]
GO
ALTER
TABLE
[dbo].[AT04]
WITH
CHECK
ADD
CONSTRAINT
TABLE
[dbo].[AT04]
WITH
CHECK
ADD
CONSTRAINT
TABLE
[dbo].[AT04]
WITH
CHECK
ADD
CONSTRAINT
102
GO
ALTER TABLE [dbo].[AT04] CHECK CONSTRAINT [FK_AT04_DimTiempo2]
GO
ALTER
TABLE
[dbo].[AT04]
WITH
CHECK
ADD
CONSTRAINT
TABLE
[dbo].[AT04]
CHECK
CONSTRAINT
[FK_AT04_SB34_ESTADO_CREDITO]
GO
ALTER
TABLE
[dbo].[AT04]
WITH
CHECK
ADD
CONSTRAINT
TABLE
[dbo].[AT04]
CHECK
CONSTRAINT
[FK_AT04_SB35_SITUACION_CREDITO]
GO
ALTER
TABLE
[dbo].[AT04]
WITH
CHECK
ADD
[FK_AT04_SB76_NATURALEZA_CLIENTE]
KEY([Naturaleza_cliente])
REFERENCES [dbo].[SB76_NATURALEZA_CLIENTE] ([Cod])
GO
CONSTRAINT
FOREIGN
103
ALTER
TABLE
[dbo].[AT04]
CHECK
CONSTRAINT
[FK_AT04_SB76_NATURALEZA_CLIENTE]
GO
ALTER
TABLE
[dbo].[AT04]
WITH
CHECK
ADD
CONSTRAINT
TABLE
[dbo].[AT04]
WITH
CHECK
ADD
CONSTRAINT
104
105
OBJECT_ID(N'[dbo].[FK_AT04_DimTiempo]')
AND
parent_object_id
OBJECT_ID(N'[dbo].[AT04]'))
ALTER TABLE [dbo].[AT04] DROP CONSTRAINT [FK_AT04_DimTiempo]
GO
IF
OBJECT_ID(N'[dbo].[FK_AT04_DimTiempo1]')
AND
parent_object_id
OBJECT_ID(N'[dbo].[AT04]'))
ALTER TABLE [dbo].[AT04] DROP CONSTRAINT [FK_AT04_DimTiempo1]
GO
IF
OBJECT_ID(N'[dbo].[FK_AT04_DimTiempo2]')
AND
parent_object_id
OBJECT_ID(N'[dbo].[AT04]'))
ALTER TABLE [dbo].[AT04] DROP CONSTRAINT [FK_AT04_DimTiempo2]
106
GO
IF
OBJECT_ID(N'[dbo].[FK_AT04_SB34_ESTADO_CREDITO]')
AND
parent_object_id = OBJECT_ID(N'[dbo].[AT04]'))
ALTER
TABLE
[dbo].[AT04]
DROP
CONSTRAINT
[FK_AT04_SB34_ESTADO_CREDITO]
GO
IF
OBJECT_ID(N'[dbo].[FK_AT04_SB35_SITUACION_CREDITO]')
AND
parent_object_id = OBJECT_ID(N'[dbo].[AT04]'))
ALTER
TABLE
[dbo].[AT04]
DROP
CONSTRAINT
[FK_AT04_SB35_SITUACION_CREDITO]
GO
IF
OBJECT_ID(N'[dbo].[FK_AT04_SB76_NATURALEZA_CLIENTE]')
AND
parent_object_id = OBJECT_ID(N'[dbo].[AT04]'))
ALTER
TABLE
[dbo].[AT04]
DROP
CONSTRAINT
[FK_AT04_SB76_NATURALEZA_CLIENTE]
GO
IF
OBJECT_ID(N'[dbo].[FK_AT04_APLICATIVO]')
AND
parent_object_id
OBJECT_ID(N'[dbo].[AT04]'))
ALTER TABLE [dbo].[AT04] DROP CONSTRAINT [FK_AT04_APLICATIVO]
GO
107
IF
EXISTS
(SELECT
FROM
sys.indexes
WHERE
object_id
EXISTS
(SELECT
FROM
sys.indexes
WHERE
object_id
EXISTS
(SELECT
FROM
sys.indexes
WHERE
object_id
EXISTS
(SELECT
FROM
sys.indexes
WHERE
object_id
108
IF
EXISTS
(SELECT
FROM
sys.indexes
WHERE
object_id
EXISTS
(SELECT
FROM
sys.indexes
WHERE
object_id
109
APNDICE G
VENTAJAS Y DESVENTAJAS DE UN DW
Entre las ventajas de un DW, se pueden encontrar: [6] [7]
a. La historia de los datos es mantenida, incluso si los sistemas fuente no lo
hacen.
b. Los datos de varios sistemas fuente son integrados, posibilitando una visin
central a lo largo de la empresa.
c. Los datos son reestructurados para obtener un desempeo excelente de las
consultas, incluso para consultas analticas complejas, sin causar impacto
sobre los sistemas operacionales.
d. Los usuarios pueden acceder a una gran cantidad de informacin de manera
rpida.
e. Un modelo de datos nico es presentado para todos los datos de inters,
independientemente de su fuente.
f. La informacin contenida es consistente.
g. La informacin contenida puede ser utilizada para encontrar patrones
histricos o conexiones que permitan tomar decisiones de negocio.
h. El costo de cmputo es reducido y datos provenientes de varias fuentes
pueden ser combinados en un solo sitio.
i. Puede crear una estructura que permite que los cambios en los datos que
contiene sean transferidos de regreso a los sistemas operacionales.
j. Puede crear un ambiente en el cual sean necesarios pocos conocimientos
tcnicos sobre bases de datos para hacer consultas sobre los datos contenidos
en el mismo.
k. Reestructurar los datos para obtener un desempeo excelente de las
consultas, incluso para consultas analticas complejas, sin causar impacto
sobre los sistemas operacionales.
110