Está en la página 1de 120

UNIVERSIDAD SIMN BOLVAR

DECANATO DE ESTUDIOS PROFESIONALES


COORDINACIN DE INGENIERA DE COMPUTACIN

DISEO Y DESARROLLO DE SISTEMA DE INTELIGENCIA DE NEGOCIOS EN EL


SECTOR FINANCIERO

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

Sartenejas, octubre de 2012

UNIVERSIDAD SIMN BOLVAR


DECANATO DE ESTUDIOS PROFESIONALES
COORDINACIN DE INGENIERA DE COMPUTACIN

DISEO Y DESARROLLO DE SISTEMA DE INTELIGENCIA DE NEGOCIOS EN EL


SECTOR FINANCIERO

Por:
Daniel Alejandro Ciuffi lvarez

Realizado con la asesora de:


Tutor Acadmico: Marlene Goncalves
Tutor Industrial: Eduardo Sojo

INFORME DE PASANTA
Presentado ante la Ilustre Universidad Simn Bolvar
como requisito parcial para optar al ttulo de
Ingeniero de Computacin

Sartenejas, octubre de 2012

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

SQL Server 2008 de Microsoft y tres de sus complementos para desarrollo de


soluciones empresariales: SQL Analysis Services, SQL Integration Services y SQL

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

Business Intelligence Development Studio ... 35

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

Engagement Manager, Gerente de Compromisos

SUDEBAN

BI

Superintendencia de Bancos

Business Intelligence, Inteligencia de Negocios

DW

Data Warehouse, Almacn de Datos

OLAP
SQL

Online Analytical Processing, Procesamiento Analtico en Lnea


Structured Query Language, Lenguaje Estructurado de Consultas

ANSI

American National Standards Institute, Instituto de Estndares Nacionales

de Norteamrica

ISO

International Organization for Standards, Organizacin Internacional para

Estndares

MOLAP

Multidimensional OLAP, OLAP Multidimensional

ROLAP

Relational OLAP, OLAP Relacional

MDX

MultiDimensional eXpressions, Expresiones Multidimensionales

Introduccin
El presente proyecto de pasanta forma parte de un proyecto de consultora de

Microsoft Venezuela para el BBVA Banco Provincial, dentro de cuyos objetivos se


encuentra que el banco pueda contar con histricos de su informacin financiera y
contable. Con el apoyo de este trabajo de pasanta, el banco dispondr de una
herramienta para evaluar su desempeo a lo largo del tiempo y, por lo tanto, para
tomar decisiones de negocio futuras.
Para ese fin, se ha propuesto la implementacin de una solucin que permita la
extraccin de la informacin financiera y contable desde los sistemas de bases de
datos fuentes del banco, el procesamiento de dicha informacin para ajustarla a un
formato que facilite su consulta y su almacenamiento en una base de datos histrica.
En el presente proyecto de pasanta, se plantea como objetivo principal el
desarrollo

de

un

prototipo

que

permita

la

extraccin,

procesamiento

almacenamiento, tomando como referencia un subconjunto de las bases de datos del


banco, relacionado especficamente con la asignacin de crditos por parte del banco,
y permita la exploracin de los datos histricos obtenidos como consecuencia del
proceso.
El presente informe consta de cinco captulos. En el primer captulo, se hace una
pequea descripcin de la empresa y se muestra un organigrama del segmento de la
empresa en el cual se desarroll el presente proyecto de pasanta. En el segundo
captulo, se hace una descripcin del problema al cual se pretendi dar solucin con
lo desarrollado en el presente proyecto de pasanta. En el tercer captulo, se hace
una descripcin del marco tecnolgico, es decir, de las herramientas utilizadas para
el desarrollo de la solucin. En el cuarto captulo, se hace una descripcin de la
solucin desarrollada. En el quinto captulo, se muestran resultados de la ejecucin
del proceso de extraccin, procesamiento y carga para ciertos datos de prueba.

CAPTULO 1
DESCRIPCIN DE LA EMPRESA

Microsoft Corporation, establecida en 1975, es una corporacin multinacional con


sede en Redmond, Washington, E.E.U.U., que desarrolla, fabrica, licencia y apoya
un amplio espectro de productos y servicios predominantemente relacionados con
computacin. [1]

Microsoft de Venezuela, filial de Microsoft Corporation, establecida en el ao 1991,


ha posicionado, desde sus inicios, sus productos y servicios a una gran cantidad de
Clientes Corporativos y de Pequeas y Medianas Empresas, de manera directa o a
travs de sus socios de negocios. [2]

Microsoft de Venezuela est dividida en varios segmentos, con un diverso espectro


de campos de accin, relacionados siempre con la tecnologa Microsoft y la manera
en que esta contribuye a mejorar la eficiencia de los clientes de la compaa, tanto
internos como externos.
Dado que el proyecto de pasanta presentado en este informe se desarrolla en el
segmento de Servicios, y ms especficamente en el rea de Consultora
perteneciente al mismo, se presenta a continuacin una descripcin general del
segmento y del rea de Consultora.
La misin del segmento de Servicios es la de ayudar a los clientes y socios de
negocio a realizar su mximo potencial a travs de la adopcin y el uso productivo de
las tecnologas de Microsoft. [3] En otras palabras, el segmento de Servicios de

Microsoft de Venezuela es el encargado del despliegue de la tecnologa Microsoft en


las compaas venezolanas que requieran la implementacin, automatizacin y/o
optimizacin de procesos susceptibles de ello en el seno de sus centros de operacin a
travs de herramientas informticas.

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.

Figura 1.1: Organigrama de Consultora en 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

BI (Business Intelligence, Inteligencia de Negocios) es un trmino empleado para


referirse a un conjunto de tecnologas de soporte a decisiones que permiten a
ejecutivos, gerentes y analistas tomar decisiones mejores y ms rpidas. [5]
Las tecnologas BI proveen vistas histricas, actuales y predictivas de operaciones
de negocio. Entre las funciones comunes de las tecnologas de inteligencia de negocio
se pueden incluir elaboracin de reportes, procesamiento analtico en lnea, minera
de datos, procesamiento de eventos complejos, gerencia de desempeo de negocio,
anlisis predictivo, entre otros. [5]
El objetivo de la inteligencia de negocios es dar apoyo a, y en consecuencia
mejorar, la toma de decisiones concernientes a un negocio. Por lo tanto, un sistema

BI puede ser llamado un sistema de soporte a decisiones. La inteligencia de negocios


usa tecnologas, procesos y aplicaciones para analizar datos estructurados y, en su
mayora, internos de una compaa y procesos de negocio. [5]

La inteligencia de negocios puede ser utilizada para varios propsitos en un


negocio. En el caso especfico del proyecto desarrollado para esta pasanta, se
pueden destacar:
a. Realizacin de mediciones relacionadas con cantidades de crditos entregadas
por el banco a clientes segn el tipo de cliente, el tipo de crdito, la fecha de
liquidacin del crdito, entre otros.
b. Facilidad en el anlisis de dichas mediciones.
c. Elaboracin de una infraestructura de generacin de reportes.
d. Colaboracin entre distintas reas del banco, consolidando datos provenientes
de diversas fuentes para objetivos comunes.
3.2. Almacn de Datos
Un DW (Data Warehouse, Almacn de Datos) es un sistema de base de datos y,
como tal, posee una coleccin de informacin y un software de gestin. Sin embargo,
a diferencia de un sistema de base de datos relacional, est concebido para las
aplicaciones de toma de decisiones y es utilizado principalmente para la generacin
de reportes y anlisis. Los datos almacenados en el DW son obtenidos de sistemas de
bases de datos tradicionales. Dichos datos pueden pasar por bases de datos
intermedias para realizrseles operaciones adicionales necesarias para que puedan
ser usados en el DW para hacer reportes. [6]
Los datos sobre los cuales las tareas de inteligencia de negocios trabajan se
encuentran tpicamente en los DW. Sin embargo, esto no es necesariamente as. Una
definicin amplia de BI incluira elementos como integracin de integracin de
datos, calidad de datos, almacenamiento de datos, gerencia de datos, anlisis de
contenidos y otros. Sin embargo, es importante ver a la preparacin de los datos y al

uso de los datos como dos segmentos distintos, si bien relacionados ntimamente, de
la inteligencia de negocios. [5]

Tpicamente, un DW utiliza capas de preparacin, integracin y acceso para


albergar sus funciones claves. La capa de preparacin almacena los datos en bruto
extrados de cada sistema fuente de datos. La capa de integracin realiza la limpieza
y la homogeneizacin de los datos provenientes de las diversas fuentes. Los datos
integrados y limpiados son movidos a otra base de datos, en la cual los datos son
agrupados y ordenados en grupos jerrquicos. Por ejemplo, si los datos estuviesen
relacionados por regiones, estas podran organizarse segn el pas al cual
pertenecen, y estos a su vez segn el continente en el que se ubican. La capa de
acceso est pensada para ayudar a los usuarios a recuperar datos. [6]
OLAP (Online Analytical Processing, Procesamiento Analtico en Lnea) es un
trmino utilizado para describir el anlisis de datos complejos desde el almacn de
datos. [6] El modelo multidimensional es un modelo ampliamente utilizado para

OLAP. En los modelos multidimensionales, se rellenan matrices multidimensionales


llamadas cubos de datos, o hipercubos si las mismas tuviesen ms de tres
dimensiones. [6] Los datos deben estar organizados en el cubo de manera tal que se
facilite la ejecucin de consultas no predeterminadas de informacin agregada.
En la Figura 3.1, se muestra un ejemplo de un cubo con datos para crditos por
trimestre de liquidacin del crdito, estado del crdito y naturaleza del cliente. En
cada celda del mismo se tienen los datos de un trimestre, estado de crdito y
naturaleza de cliente especficos.
El cambio desde una orientacin dimensional a otra en un cubo se logra
fcilmente mediante una tcnica llamada pivotaje (o rotacin). Por ejemplo, como se
muestra en la Figura 3.2, se puede pivotear el cubo para mostrar los datos de
crditos por naturaleza del cliente como filas, los datos de crditos por trimestre
como columnas y los datos de crditos por estado de crdito en la tercera dimensin.

10

Figura 3.1: Ejemplo de cubo

Figura 3.2: Cubo despus de pivotaje

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.

Figura 3.3: Cubo despus de roll-up

Para el almacenamiento multidimensional, se necesitan dos tipos de tablas; de


dimensin y de hechos. Las de dimensin constan de tuplas de atributos de la
dimensin [6], mientras que las de hechos son una agrupacin de tuplas, una por

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.

Figura 3.4: Cubo despus de drill-down

La tabla de hechos contiene los valores medibles documentados para un evento en


especfico. Debido a la necesidad recurrente de guardar datos al nivel ms atmico
posible, generalmente se tiene una cantidad enorme de registros en esta tabla. Por
lo tanto, es muy importante pensar bien en el nmero y el tamao de los atributos
para restringir el tamao de las tablas y mantener un buen desempeo.

13

Las tablas de dimensin, usualmente, tienen pocos registros en comparacin con


las tablas de hechos. Sin embargo, pueden tener un gran nmero de atributos para
describir los datos de los hechos.

Figura 3.5: Esquema en Estrella

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

En el proyecto de pasanta, se ha supuesto que la informacin en el almacn de


datos solamente aumenta, por lo que la eliminacin o reemplazo de datos en el
mismo no est contemplado en el alcance del proyecto.
3.3 SQL

SQL (Structured Query Language, Lenguaje Estructurado de Consultas) es un


lenguaje de programacin diseado para el manejo de datos en sistemas de
administracin de datos relacionales. [6] Para poder realizar la consulta, insercin,
eliminacin y actualizacin de datos en varias bases de datos contempladas en la
solucin desarrollada en este proyecto, es necesaria la correcta utilizacin de SQL,
ya que dichos datos van a estar almacenados en un sistema de administracin de
datos relacional, ms especficamente SQL Server 2008.

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

Institute, Instituto de Estndares Nacionales de Norteamrica) en 1986 y de la ISO


(International Organization for Standards, Organizacin Internacional para
Estndares), varias funcionalidades han sido incorporadas a SQL.
La operacin ms comn en SQL es la consulta, la cual es llevada a cabo con la
declaracin SELECT. SELECT recupera filas de la base de datos y permite la seleccin
de una o ms filas o columnas de una o ms tablas.
Un elemento que adquiere especial relevancia para los procesos de extraccin,
transformacin y carga de datos en el presente proyecto es la combinacin de tablas,

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

de la base de datos histrica a fin de agilizar el proceso de carga de los datos


en ellas.

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

SQL Server de Microsoft es un sistema de administracin de bases de datos


relacionales desarrollado por Microsoft. Su funcin principal es la de almacenar y
recuperar datos como sea requerido por otras aplicaciones de software, ya estn
estas contenidas en la misma computadora o en otras que se encuentren en la
misma red, incluyendo el Internet. El lenguaje con el cual se ejecuta SQL Server de

Microsoft es T-SQL, el cual agrega varias funcionalidades al SQL estndar, como


control de transacciones, manejo de excepciones, procesamiento de filas, declaracin
de variables, entre otras. [6]

SQL Server est disponible, en varias ediciones, con diferentes conjuntos de


funcionalidades y con diferentes tipos de usuario objetivo. La edicin con la que se
trabaj en el actual proyecto de pasanta es la edicin Standard (Estndar).
4.1.1. Servicios adicionales de SQL Server

SQL Server incluye una coleccin de servicios agregados. A continuacin se


presentan los utilizados para la realizacin del presente proyecto de pasanta.
4.1.1.1. Servicios de Anlisis

18

Analysis Services (Servicios de Anlisis) es un servicio de SQL Server, el cual


incluye un conjunto de capacidades OLAP y de minera de datos. En este proyecto de
pasanta, se ha utilizado para la generacin del cubo de datos, especificando los
hechos, las dimensiones, las tablas de las que se extraeran los datos
correspondientes, entre otras cosas. [8]
Los datos en el almacn de datos pueden ser almacenados de dos maneras
principalmente: [9]
a. MOLAP (Multidimensional OLAP, OLAP Multidimensional): Al ser procesado
el cubo, los datos fuente son tomados de las bases de datos relacionales,
procesados y agregados convenientemente y guardados en el almacn. En el
caso de Analysis Services, los datos son guardados en el servidor en un
formato

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

ROLAP, esto no representara ningn problema, pues la herramienta lo hace


bastante transparente.
Entre otras cosas, Analysis Services soporta un lenguaje de manipulacin de
datos,

llamado

MDX

(MultiDimensional

eXpressions,

Expresiones

Multidimensionales), el cual es un lenguaje de consultas para bases de datos OLAP,


de la misma manera en que SQL es un lenguaje de consultas para bases de datos
relacionales. [10] Las consultas y las visualizaciones en el presente proyecto de
pasanta se han hecho de manera visual, generndose automticamente los scripts
en dicho lenguaje.
4.1.1.2. Servicios de Generacin de Reportes

Reporting Services (Servicios de Generacin de Reportes) es un sistema de


generacin de reportes y puede ser usado para preparar y entregar una variedad de
reportes impresos e interactivos. Reporting Services posee una interfaz de servicios
web para soportar el desarrollo de aplicaciones personalizadas de generacin de
reportes. [11]
En el presente proyecto, se han generado ciertos reportes basados en datos
contenidos en el cubo utilizando Reporting Services.
4.1.1.3. Servicios de Integracin

Integration Services (Servicios de Integracin) es un componente de SQL Server


que puede ser utilizado para llevar a cabo un amplio rango de tareas de migracin,
integracin y transformacin de datos. Integration Services ofrece herramientas
rpidas y flexibles para realizar dichas tareas. Dichas herramientas pueden ser
usadas, adems, para automatizar el mantenimiento de bases de datos SQL Server
y la actualizacin de datos multidimensionales de cubos. [12]

20

Para la creacin o el mantenimiento de paquetes de Integration Services, se usa


una herramienta visual de desarrollo basada en Visual Studio llamada Business

Intelligence Development Studio (Estudio de Desarrollo de Inteligencia de Negocios).


Dicha herramienta visual ha sido utilizada igualmente para el uso de Analysis

Services y Reporting Services. Mediante esta herramienta se pueden crear y editar


paquetes de Integration Services utilizando una interfaz de usuario drag-and-drop
(arrastrar y soltar). Adems, un ambiente de programacin est disponible, en el
caso de que sea necesario escribir cdigo.
Elementos de distinta ndole definen un paquete de Integration Services. El
principal elemento a mencionar son las tareas, las cuales son unidades de trabajo
atmicas que llevan a cabo alguna accin. Existe una gran variedad de tareas
posibles, como aquellas relacionadas con el sistema de archivos, transformaciones de
datos, ejecucin de scripts SQL, procesamiento de cubos, etc. En el caso del proyecto
de pasanta, la ejecucin de los distintos scripts de carga y transformacin de datos y
de eliminacin de registros, la ejecucin de procedimientos almacenados y el
procesamiento del cubo se han definido como tareas dentro del paquete. [12]
Otro elemento de un flujo de trabajo son las conexiones. Una conexin incluye la
informacin necesaria para la conexin a alguna fuente de datos particular, la cual
puede ser una base de datos, un archivo de texto plano, entre otros. Las tareas
pueden referirse a la conexin a travs de su nombre, dejando la posibilidad de que
los detalles de conexin sean cambiados o configurados a tiempo de ejecucin. En el
proyecto de pasanta se han creado conexiones a las distintas bases de datos y a
scripts contenidos en archivos de texto. [12]
Las restricciones de precedencia son un elemento que permite conectar a las
tareas. La restriccin de precedencia de alguna tarea en particular debe ser
cumplida antes de que la tarea sea ejecutada. Las tareas pueden ser ejecutadas en
paralelo si las restricciones de precedencia no lo impiden. Existen en particular tres
restricciones de precedencia: complecin, xito o falla. Es decir, si dos tareas estn

21

conectadas mediante una restriccin de precedencia de complecin, la segunda tarea


se ejecutar si y solo si la primera termina y si dos tareas estn conectadas
mediante una restriccin de precedencia de xito o falla, la segunda tarea se
ejecutar si

y solo

si la primera termina exitosamente o con

errores,

respectivamente. Las restricciones de precedencia constituyen el flujo de trabajo del


paquete, del mismo modo que las tareas. En el proyecto de pasanta realizado se han
colocado las restricciones de precedencia consideradas adecuadas para conectar las
tareas. [12]
Por ltimo, las variables son elementos referenciados por las tareas que pueden
ser utilizados para guardar resultados, tomar decisiones, etc. En el proyecto, se han
controlado, mediante las variables, el nmero de tuplas insertadas en las tablas al
momento de ejecucin del paquete. [12]
Cuando un paquete es guardado, su contenido persiste en formato XML.
La herramienta permite al usuario ejecutar el paquete en cualquier momento de
su proceso de creacin. Durante la ejecucin, el paquete puede ser depurado o
monitorizado.
4.1.1.4. Estudio de Administracin de SQL Server

SQL Server Management Studio (Estudio de Administracin de SQL Server) es


una herramienta de interfaz grfica incluida con SQL Server usada para configurar,
manejar y administrar todos los componentes de SQL Server. La herramienta
incluye editores de piezas de cdigo y herramientas grficas que trabajan con objetos
y funcionalidades del servidor. [13]
Una de las funcionalidades centrales de SQL Server Management Studio es el
Explorador de Objetos, el cual permite a los usuarios navegar, seleccionar y realizar
acciones sobre cualquier objeto en el servidor. El Explorador de Objetos puede ser
usado para observar y analizar planes de consulta y optimizar el desempeo de la

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

Business Intelligence Development Studio es el IDE de Microsoft utilizado para


desarrollar soluciones de anlisis de datos y de inteligencia de negocios usando,
como ya se mencion, Analysis Services, Reporting Services e Integration Services.
Est basado en el ambiente de desarrollo de Visual Studio, pero est adaptado con
las extensiones y tipos de proyectos especficos de SQL Server, incluyendo
herramientas adicionales. [14]
En el proyecto se utiliz Business Intelligence Development Studio para
desarrollar prcticamente todo lo relacionado con el cubo de la base de datos.
4.1.2. Programacin

T-SQL es la manera principal de programar y manejar SQL Server. Este lenguaje,


que constituye la extensin de Microsoft a SQL, expande dicho estndar incluyendo
programacin procedimental, variables locales, funciones de procesamiento de
cadenas de caracteres, de procesamiento de fechas, matemticas, etc., y cambia las
declaraciones DELETE y UPDATE. Todas las aplicaciones que se comunican con una
instancia de SQL Server lo hacen enviando declaraciones T-SQL al servidor,
independientemente de la interfaz grfica de la aplicacin. [15]

23

En T-SQL, las declaraciones DELETE y UPDATE permiten agregarles una clusula


FROM, lo cual permite incluir combinaciones de tablas, es decir JOINs.

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

Figura 5.1: Arquitectura de la Solucin

26

El proyecto de pasanta est enmarcado en la fase de desarrollo de la metodologa


de entrega de servicios de Microsoft, la cual es una gua de calidad para los servicios
de consultora de la compaa. Debido a que el servicio de consultora para BBVA
Banco Provincial ya estaba puesto en marcha algunos meses atrs, los pasos previos,
como la conformacin de los equipos, la delimitacin de los objetivos, la planificacin
de las tareas, entre otros, ya estaban realizados. En la fase de desarrollo, se
pretende pasar a la construccin de una solucin que incluya todos los aspectos de
las necesidades del proyecto, como el cdigo, los manuales de despliegue, etc.
Antes de proseguir, es importante mencionar que la totalidad de la solucin
desarrollada en este proyecto de pasanta fue realizada de manera local en un
computador con sistema operativo Windows 7 de 64 bits con las siguientes
caractersticas:
a. Procesador Intel Core2 Duo, 2.20GHz
b. 4 GB de memoria
c. 93 GB de disco duro
A continuacin, se hace una descripcin de las bases de datos involucradas en la
solucin, desde las bases de datos origen hasta la base de datos histrica obtenida al
final. Despus, se describe el generador de datos aleatorios. Dado que no se contaba
con datos reales, se procedi a generar datos aleatorios para probar las
herramientas. Se presentan los procesos de extraccin, transformacin y carga de
datos. Luego, se presenta una descripcin del proceso llevado a cabo para la
configuracin del cubo OLAP y para la creacin del paquete de flujo que se encarga
de coordinar los procesos que componen la solucin. Por ltimo, se hace una pequea
descripcin de las maneras en que se han visualizado los datos histricos, una vez
procesados.
5.1. Bases de datos.

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

involucran, determinada por el banco. A cada uno de estos subconjuntos se le llama


aplicativo. En el presente proyecto de pasanta, se contemplaron seis aplicativos:
Efectos, Factoring, Prestamos, Leasing, Sobregiros y Medios de pago. Por
ejemplo, el aplicativo Prestamos est relacionado con la cartera comercial de
prstamos del banco, el aplicativo Leasing est relacionado con los crditos de
arrendamiento, el aplicativo Sobregiro est relacionado con los contratos en
condiciones de sobregiro, Medios de pago est relacionado con las tarjetas de
crdito, etc.
En esta pasanta, se implement un procedimiento especfico para la insercin de
datos para cada aplicativo, debido a que los datos correspondientes a cada aplicativo
estn contenidos en tablas determinadas.

A continuacin se realiza una breve

descripcin de los procedimientos implementados y utilizados. Los scripts de los


mismos se encuentran en el apndice C.
Las tablas para las cuales se hace la insercin, los campos involucrados y sus
posibles valores se encuentran detallados en el apndice D.
5.2.1. Procedimiento del aplicativo Efectos
Mediante la ejecucin de este procedimiento, se insertan en las tablas de origen los
datos de los crditos pertenecientes al aplicativo Efectos.
El procedimiento se llama prc_RandomInsertEfectos, se ha almacenado
tentativamente en la base de datos SIF y recibe como parmetro un valor entero,
llamado @Filas, el cual tiene como valor por defecto 100 e indica el nmero de
registros a ser insertados. El procedimiento consta de un ciclo con nmero de
iteraciones igual a @Filas.
5.2.2. Procedimiento del aplicativo Factoring

29

Mediante la ejecucin de este procedimiento, se insertan en las tablas de origen los


datos de los crditos pertenecientes al aplicativo Factoring. El procedimiento se
llama prc_RandomInsertFactoring y funciona de manera similar al del
aplicativo Efectos.
5.2.3. Procedimiento del aplicativo Prestamos
Mediante la ejecucin de este procedimiento, se insertan en las tablas de origen los
datos de los crditos pertenecientes al aplicativo Prestamos. El procedimiento se
llama prc_RandomInsertPrestamos y funciona de manera similar al del
aplicativo Efectos.
5.2.4. Procedimiento del aplicativo Leasing
Mediante la ejecucin de este procedimiento, se insertan en las tablas de origen los
datos de los crditos pertenecientes al aplicativo Leasing. El procedimiento se
llama prc_RandomInsertLeasing y funciona de manera similar al del aplicativo
Efectos.
5.2.5. Procedimiento del aplicativo Sobregiros
Mediante la ejecucin de este procedimiento, se insertan en las tablas de origen los
datos de los crditos pertenecientes al aplicativo Sobregiros. El procedimiento se
llama prc_RandomInsertSobregiros y funciona de manera similar al del
aplicativo Efectos.
5.2.6. Procedimiento del aplicativo Medios de pago
Mediante la ejecucin de este procedimiento, se insertan en las tablas de origen los
datos de los crditos pertenecientes al aplicativo Medios de pago. El procedimiento
se llama prc_RandomInsertMediosPago y funciona de manera similar al del
aplicativo Efectos.

30

5.3. Scripts de carga y transformacin de datos


En esta pasanta, se utiliz una serie de scripts para la carga y transformacin de
datos desde la base de datos de origen, DBALEJANDRIA_STAGINGAREA, hacia la base
de datos SIF. Dichos scripts fueron suministrados por los consultores de Microsoft

Venezuela y fueron utilizados, adems, como ya se mencion anteriormente, como


referencia para la generacin de datos aleatorios para las tablas de origen, de
manera que los mismos arrojaran resultados que efectivamente mostraran su
funcionamiento. Por otra parte, se cre tambin un procedimiento para crear
registros directamente sobre la tabla AT04 de SIF.
A continuacin se realiza una breve descripcin de los scripts de carga y
transformacin de datos y del procedimiento mencionados, en el mismo orden en el
que han de ser ejecutados. Una descripcin ms detallada de los scripts y
procedimientos se encuentra en el apndice E.
5.3.1. Primer script, 00.Universo.sql
En este script se hace la insercin de registros con informacin de crditos en la
tabla

AT04

de

SIF,

especficamente

para

los

campos

Fecha_Cierre,

IDAplicativo, Credito, Credito_18, Estado_credito y Tipo_cartera, a


partir de las tablas de la base de datos origen DBALEJANDRIA_STAGINGAREA. Por
ltimo, se realiza una actualizacin y una eliminacin de registros sobre la tabla
AT04.
El campo Fecha_Cierre contiene la fecha de cierre del crdito; el campo
IDAplicativo contiene el nmero que identifica al aplicativo al que pertenece el
crdito; los campos Credito y Credito_18 contienen el identificador del crdito, en
versiones de 20 y 18 caracteres, respectivamente; el campo Estado_credito
contiene un valor entero que indica el estado del crdito y el campo Tipo_cartera
contiene un valor entero que indica el tipo de cartera asociado al crdito.

31

La insercin de los registros en la tabla AT04 se realiza secuencialmente y por


grupos. Cada grupo corresponde a un aplicativo y se selecciona mediante una
declaracin SELECT. Los grupos son unidos mediante la operacin de grupos UNION.
Hacia el final del script, como ya se mencion, se realizan una actualizacin y una
eliminacin de registros en la tabla AT04. Las tablas involucradas fueron creadas,
pero solo a fin de que el script se ejecutase correctamente; no se hicieron realmente
tales actualizacin y eliminacin de registros en la tabla.
5.3.2. Segundo script, 02.Factoring.sql
En este script se realiza la actualizacin de la informacin de crditos contenida en
la tabla AT04 desde la combinacin de s misma con varias tablas de acuerdo a
varias reglas de combinacin. Si bien todas las tablas fueron creadas para que el
script

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

5.3.3. Procedimiento para insercin directa sobre la tabla AT04 de SIF


Con este procedimiento se realiza insercin aleatoria de registros en la tabla AT04
de la base de datos SIF, de manera directa, es decir, sin extraer datos de las tablas
origen. Para mantener la consistencia, se ha asociado a los registros insertados de
esta manera un aplicativo llamado (Insercion Aleatoria). Este procedimiento se ha
implementado a fin de tener una manera rpida de insertar registros en la tabla
AT04 de SIF, ya que la ejecucin del script 02.Factoring.sql es lenta.
El

procedimiento

se

llama

prc_RandomInsert,

se

ha

almacenado

tentativamente en la base de datos SIF y recibe como parmetro un valor entero,


llamado @Filas, el cual tiene como valor por defecto 10000 e indica el nmero de
filas a ser insertadas. El procedimiento consta de un ciclo con nmero de iteraciones
igual a @Filas.
5.3.4. Scripts adicionales
En esta pasanta, se ejecutaron cuatro scripts ms, a saber: 14.PostComunesCorasu.sql,

15.Post-ComunesDefaults.sql,

16.SP01.sql

17.ActualizacionSudeban.sql. Sin embargo, los mismos no realizaron realmente


ninguna funcin dentro del marco del presente proyecto. Solamente fueron
ejecutados por ser considerados parte del proceso de extraccin, transformacin y
carga.
5.4. Extraccin y carga
En esta seccin se explica la insercin de registros en las tablas de dimensin de la
base de datos histrica Prototipo y el flujo de datos desde la tabla AT04 de SIF
hasta la tabla AT04 de Prototipo.
5.4.1.

Insercin de registros en las tablas de dimensin de la base de datos

Prototipo

33

La insercin de registros en la tabla DimTiempo, tabla de dimensin que guarda


las fechas de los crditos, debe obligatoriamente ser realizada antes de la generacin
aleatoria de datos en las tablas de origen, pues algunos procedimientos que la llevan
a cabo toman valores de la misma. Para dicha insercin de registros en la tabla, se
ha ejecutado un procedimiento suministrado por los consultores de Microsoft,
llamado LoadDimFecha, que se ha almacenado en la base de datos Prototipo.
El resto de las tablas de dimensin pueden ser llenadas en cualquier momento
antes del flujo de datos entre las bases de datos SIF y Prototipo.
Las tablas que posee la base de datos Prototipo son:
a. DimTiempo: tabla de dimensin que guarda las fechas de los crditos.
b. APLICATIVO: tabla de dimensin que guarda los diferentes aplicativos a los
que pertenecen los crditos.
c. SB34_ESTADO_CREDITO: tabla de dimensin que guarda los posibles estados
en los que puede estar un crdito, como activo, cancelado, etc.
d. SB35_SITUACION_CREDITO: tabla de dimensin que guarda las posibles
situaciones en las que se puede encontrar un crdito, como vigente, vencido,
en litigio, etc.
e. SB76_NATURALEZA_CLIENTE: tabla de dimensin que guarda las posibles
naturalezas que puede poseer un cliente, como persona natural o jurdica.
f. TIPO_CARTERA: tabla de dimensin que guarda los distintos tipos de cartera
a los que puede estar asociado un crdito. Las carteras estn asociadas a
relaciones crediticias entre un banco y un cliente, determinadas por el
comportamiento de los clientes con respecto a las moras en el pago de crditos.
g. AT04: tabla de hechos que guarda diferentes valores asociados a los crditos,
como cuotas, cuotas vencidas, montos vencidos a 30, 60, 90 das, entre otros.
Los datos que se encuentran en esta tabla son cargados directamente desde la
tabla homnima de la base de datos SIF.

34

La tabla APLICATIVO contiene los cdigos de los aplicativos y sus nombres. Los
aplicativos

son

Sobregiros,

Efectos,

Factoring,

Leasing,

(Insercin

Aleatoria), Medios de Pago y Prestamos.


La tabla SB34_ESTADO_CREDITO contiene los cdigos de los estados de crdito y
sus nombres. Los estados que puede tener un crdito son Activo, Cancelado y
Castigado.
La tabla SB35_SITUACION_CREDITO contiene los cdigos de las situaciones de
crdito y sus nombres. Las situaciones que puede tener un crdito son No Aplica,
Vigente, Reestructurado, Vencido y Litigio.
La tabla SB76_NATURALEZA_CLIENTE contiene los cdigos de las naturalezas de
los clientes y sus nombres. Las naturalezas de un cliente pueden ser No Aplica,
Persona Natural, Persona Jurdica y Organismo Oficial.
Para completar la tabla TIPO_CARTERA, se ha ejecutado un procedimiento llamado
prc_InsertCartera, que se ha almacenado en la base de datos Prototipo y que
no recibe parmetros de entrada. En el mismo se borran todos los registros de la
tabla y despus se insertan registros cuyos valores para el nico atributo que
poseen, Cod, van desde 0 hasta 99.
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


Para la tabla AT04 de la base de datos Prototipo, adems de las restricciones de
clave primaria y de clave fornea hacia las tablas de dimensin, se definieron, en el
script de creacin de la base de datos, ndices sobre varios conjuntos de atributos.
Por cuestiones de eficiencia, antes del flujo de datos entre las tablas AT04, se
eliminaron las restricciones de clave primaria y fornea y los ndices, para despus
restablecerlos y hacer el chequeo de los mismos despus de que los datos fuesen

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

Fecha_liquidacion_date se coloca 1900-01-01 00:00:00.000. Es decir,


hace que los valores de las fechas de cierre y liquidacin como tipo de dato fecha se
correspondan con sus valores como tipo de dato entero.
El flujo de datos entre las tablas AT04 consiste simplemente en copiar los datos de
la tabla AT04 de SIF a la tabla AT04 de Prototipo. Los atributos son exactamente
los mismos en ambas tablas.
Despus del flujo de datos entre las tablas AT04, se ha de proceder a eliminar
todos

los

registros

tanto

de

las

tablas

de

las

bases

de

datos

DBALEJANDRIA_STAGINGAREA y SIF, permaneciendo dichos datos nicamente en la


tabla AT04 de Prototipo, la cual viene a ser la base de datos histrica y sobre la
cual se elaborar el cubo OLAP.
5.5. Elaboracin del cubo OLAP con Analysis Services mediante la herramienta

Business Intelligence Development Studio


En esta seccin se explica brevemente el procedimiento realizado para la
configuracin y elaboracin del cubo OLAP a partir de las tablas descritas en las
secciones anteriores. En la Figura 5.2 se muestra el modelo de datos para el cubo del

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

SB76_NATURALEZA_CLIENTE, cada una con un conjunto de atributos y, en el


caso de DimTiempo, con una organizacin jerrquica de sus componentes.

Figura 5.2: Modelo de datos del tomo 4

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

Finalmente, se configur el cubo con la tabla de hechos y las dimensiones


configuradas previamente. Para la tabla de hechos, se seleccionaron las medidas
para los cuales efectivamente se insertaron valores en el proceso de carga de datos,
mencionadas en la seccin 5.3. Adems, se agreg un miembro calculado para la
tabla de hechos, llamado Montos Vencidos Totales, el cual es la suma de todos los
montos vencidos (a 30, 60, 90, 120, 180 das, a un ao y a ms de un ao).
Despus de configurar el cubo, hay que desplegarlo. Una vez hecho esto, se
pueden obtener distintas visualizaciones del mismo, como se muestra en las Figuras
5.3, 5.4 y 5.5, a travs del explorador del cubo ofrecido por la herramienta.

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)

Se crearon las conexiones a las bases de datos, variables, tareas y dems


elementos explicados en la seccin 4.1.1.3, necesarios para que el flujo de datos se
ejecutara.
Despus de crear el paquete, el funcionamiento del mismo se verific al ejecutarlo.

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

Analysis Services. En la Figura 5.7 se muestra un reporte de los montos vencidos de


120 y 180 das y un ao discriminados por naturaleza del cliente y estado del
crdito.

Figura 5.6: Ejemplo del servidor de reportes

41

Figura 5.7: Ejemplo de visualizacin del cubo en Excel

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.

Tiempos de ejecucin para paquete de flujo


4000

Tiempo de ejecucin (s)

3500
3000
2500
Tiempo total

2000

00Universo

1500

02Factoring

1000

Rep. del cubo

500
0
0

5000

10000

15000

20000

25000

FilasOrigen

Figura 6.1: Tiempos de ejecucin para el paquete de flujo

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

histricos y la generacin de reportes. Dichas visualizaciones y reportes se pueden

45

realizar, o bien en el marco de la herramienta utilizada para la configuracin del


cubo, o bien en otros entornos como un servidor de reportes o el mismo Microsoft

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

Excel, si bien puede no constituir un elemento importante tcnicamente hablando,


toma especial relevancia en este proyecto.

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

Development Month (Mes de Desarrollo de Carreras del Ao Fiscal 2012 de


Servicios de Venezuela). Presentacin en Power Point.
4. Microsoft Corporation. 2012. Microsoft Services. Disponible en Internet:
http://www.microsoft.com/africa/enterprise/services.aspx, consultado el 25 de
abril de 2012.
5. Surajit Chaudhuri, Umeshwar Dayal, Vivek Narasayya. 2011. An Overview of

Business

Intelligence

Technology.

Disponible

en

Internet:

http://cacm.acm.org/magazines/2011/8/114953-an-overview-of-businessintelligence-technology/fulltext, consultado el 27 de abril de 2012.


6. Elmasri, R. y Navathe, S. 2007. Fundamentos de Sistemas de Bases de Datos.
5 edicin. Pearson Educacin, Madrid.
7. Margaret

Rouse.

2006.

SQL

Server.

Disponible

en

Internet:

http://searchsqlserver.techtarget.com/definition/SQL-Server, consultado el 27
de abril de 2012.

47

8. Microsoft. 2012. SQL Server Analysis Services. Disponible en Internet:


http://msdn.microsoft.com/en-us/library/ms175609%28v=sql.90%29.aspx,
consultado el 28 de abril de 2012.
9. Arshad Ali. 2012. Storage Modes in SQL Server Analysis Services. Disponible
en

Internet:

http://www.sql-server-performance.com/2009/ssas-storage-

modes/, consultado el 28 de abril de 2012.


10. Microsoft. 2012. Multidimensional Expressions (MDX) Reference. Disponible
en

Internet:

http://msdn.microsoft.com/en-us/library/ms145506.aspx,

consultado el 28 de abril de 2012.


11. Microsoft. 2012. Reporting Services (SSRS). Disponible en Internet:
http://msdn.microsoft.com/en-us/library/ms159106.aspx, consultado el 28 de
abril de 2012.
12. Microsoft. 2012. SQL Server Integration Services. Disponible en Internet:
http://msdn.microsoft.com/en-us/library/ms141026.aspx, consultado el 28 de
abril de 2012.
13. Microsoft. 2012. Microsoft SQL Server 2008 Management Studio. Disponible
en Internet: http://www.microsoft.com/en-us/download/details.aspx?id=7593,
consultado el 29 de abril de 2012.
14. Microsoft. 2012. Introducing Business Intelligence Development Studio.
Disponible

en

Internet:

http://msdn.microsoft.com/en-

us/library/ms173767%28v=sql.105%29.aspx, consultado el 29 de abril de 2012.


15. Microsoft. 2012. Transact-SQL Reference (Transact-SQL). Disponible en
Internet:

http://msdn.microsoft.com/en-

us/library/ms189826%28v=sql.90%29.aspx, consultado el 29 de abril de 2012.

48

16. Exforsys Inc. 2007. Advantages and Disadvantages to Using a Data

Warehouse. Disponible en Internet: http://www.exforsys.com/tutorials/datawarehousing/advantages-and-disadvantages-to-using-a-data-warehouse.html,


consultado el 26 de abril de 2012.
17. Exforsys Inc. 2007. The Benefits of Data Warehouses. Disponible en Internet:
http://www.exforsys.com/tutorials/data-warehousing/data-warehousesbenefits.html, consultado el 26 de abril de 2012.

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

(CHAR(10)), COD_SUB_PROD (CHAR(4))).


c. TXT_FADTFAC
(CHAR(4)),
(CHAR(2)),

(FAC_NCONTRAT_ENT

(CHAR(4)),

FAC_NCONTRAT_CENT

FAC_NCONTRAT_DC

(CHAR(2)),

FAC_NCONTRAT_CP

FAC_NCONTRAT_CTA

(CHAR(8)),

FAC_IESTFCT

(CHAR(2)), FAC_DULTCOB (CHAR(10)), FAC_NFACTURA (CHAR(15)),


FAC_MANTICIP (CHAR(20)), FAC_DVENCIM (CHAR(10))).
d. TXT_FADTCTR
(CHAR(4)),

(CTR_NCONTRAT_ENT

(CHAR(4)),

CTR_NCONTRAT_CENT

CTR_NCONTRAT_CP

(CHAR(2)),

CTR_NCONTRAT_CTA

(CHAR(8)), CTR_CTIPFAC (CHAR(1)), CTR_DACTIVA (CHAR(10))).


e. TXT_FADTPRC (PRC_CODCAR (CHAR(2)), PRC_TIPFACT (CHAR(1))).
f. TXT_UGDTMAE (ENTIOFI (CHAR(8)), DIGICCC1 (CHAR(1)), DIGICCC2
(CHAR(1)),
(CHAR(30)),

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(4)), DIGITOS_CTRL (CHAR(2)), COD_SERVICIO (CHAR(2)),


NUM_CONTRATO

(CHAR(8)),

TIPO_ULT_MODIF

EST_CONTRATO

(CHAR(2)),

FEC_VAL_RESID

(CHAR(3)),
(CHAR(30)),

EST_CARTERA (CHAR(2)), FEC_CAMBIO_CAR (CHAR(30))).


h. TXT_BTMAX0

(ENTIDAD

(CHAR(4)),

CENTRO_ALTA

(CHAR(4)),

DIGICCC1 (CHAR(1)), DIGICCC2 (CHAR(1)), CUENTA (CHAR(10)),


SUBPRODU

(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)),

MCTCONTR (CHAR(2)), MCNCONTR (CHAR(8)), MCLMOTBJ (CHAR(2)),


MCTTARJE (CHAR(2)), MCFBAJCO (CHAR(30))).
k. TXT_MCDTRGO

(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),

IDAplicativo (TINYINT), Credito (PARTE DE LA CLAVE PRIMARIA,


VARCHAR(30)),
(TINYINT),

(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),

(DATETIME), Carga_Manual (BIT)).

Fecha_liquidacion_date

51

A.3. Base de datos Prototipo:


h. DimTiempo

(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),

IDAplicativo (CLAVE FORNEA HACIA APLICATIVO(Cod), TINYINT),


Credito

(PARTE

DE

LA

CLAVE

PRIMARIA,

VARCHAR(30)),

Credito_18 (CHAR(18)), Estado_Credito (CLAVE FORNEA HACIA


SB34_ESTADO_CREDITO(Cod), TINYINT), Situacion_credito (CLAVE
FORNEA

HACIA

SB35_SITUACION_CREDITO(Cod),

Naturaleza_cliente

(CLAVE

TINYINT),

FORNEA

HACIA

SB76_NATURALEZA_CLIENTE(Cod), TINYINT), Tipo_Cartera (CLAVE


FORNEA

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','
'

','N','N','L','N','VEB','000100000 ','000013300000000 ','

','

',

',

'000000000000000 ','001 ','000000000000000 ','000000000000000 ','024 ','01 ','01 ','1',


'

','26 ','0108','0001',' ','0100020969','M','NEG','02100000 ','00000000 ',

'00000 ','001 ','M','20060326','001 ','

','N','00 ','000 ',' ','

','000000000000000 ',

' ','I','VA','0000000 ','000000000000000 ','0015000 ','000000000000000 ','0000000 ',


'000000000000000 ','0000000 ','000000000000000 ','0000000 ','000000000000000 ',
'0000000 ','000000000000000 ','

','0000000 ','000000000000000 ','

',

'0000000 ','000000000000000 ','F','N',' ','N','N','S','S','000000000000000 ','N',


'000000000000000 ','000000000000000 ','00300000 ','S','000013300000000 ',
'000002939115277 ','000000000000000 ','000002273476119 ','000000000000000 ',
'

','000000000000000 ','

','000000000000000 ','000000000000000 ',

54

'000000000000000 ','000000000000000 ','

','000000000001400 ',

'000000000000000 ','000000000000000 ','

','

','VI',' ','

','N ',

'000001862000000 ','000001862000000 ','000000000000000 ','000002939115277 ',


'02100000 ','02100000 ','000013300000000 ','000000000000000 ','000000000000000 ',
'000002273476119 ','000000000000000 ','000000786916667 ','20060226','20060326',
'S','20080226','F','000000010000000 ','I','I','000000000000000 ','000000199500000 ',
'000000000000000 ','000000000000000 ','000000000000000 ','000000000000000 ',
'000000000000000 ','000000000000000 ','000000000000000 ','000000000000000 ',
'000000000000000 ','000000000000000 ','000000000000000 ','BMLZ',
'2006-01-26-17.01.38.222234','VP37656
'VP37656

','2006-01-26-17.12.15.442556',

','LE2CM110')

B.2. Tabla TXT_LRDTS02:


('0108','0061','7 ','1 ','2300004925','0000000001 ','0020200001 ','0000000111 ',
'05263180','23','2301',' ',' ','3','2002-04-19','00','2002-01-02','0108','0061','0108','0061',
'0108','0061','7','9','0100101923','VEB','2002-01-02','2002-04-19','2002-04-19','S',
'0445000 ','005 ','000001100000000000 ','00104241','0108','0087','1','1','0100004512',
'025 ','LR4C0036','BATCH ',' ',' ','000001100000000000 ','000000145490277000 ',

55

'000000000000000000 ','000000000000000000 ','000000000000000000 ','G','G',


' ','G','C',' ','2002-01-02','0001-01-01','30061

','

',

'000000000000000000 ','000000000000000000 ','2002-04-19-20.45.11.121017')


B.3. Tabla TXT_LRDTS21:
('0108','0001','3','7','2300006572','00172866','23','2301','07','00000000 ',
'000000000000000000 ','00000000 ','000000000000000000 ','00000000 ',
'000000000000000000 ','00000000 ','000000000000000000 ','2003-03-27','2003-07-25',
'0108','0001','0108','0001','2003-03-27','212 ','7512671 ','212 ','0000000000','
'

',

','VEF','0108','0001','3','2','0100035451','000000001886600000 ',

'000000001886600000 ','000000000000000000 ','000000001886600000 ','LR4C0071',


'BATCH ','99900000

','2003-03-271120

','0001-01-01',

'0001-01-01','000000001886600000 ','000000000000000000 ',


'2012-04-30-21.32.58.050000')
B.4. Tabla TXT_FADTFAC:
('0108','0001','31','26','00055680','0-0378856

','2008','00087858','02349543','N','N',

'2008-05-07','000000000000000 ','039 ','000000000002123 ','028000000 ',


'000000000000000 ','2008-05-06','000000000100000 ','000000010000000 ',

56

'2008-05-06','VEF','S','

','0001-01-01','2008-06-15','2008-06-15',

'CT','2008-06-27','000000000070000 ','000000007000000 ','VEF','000000000070000 ',


'000000007000000 ','000000000000000 ','000000000000000 ','000000000000000 ',
'000000000000000 ','000000000000000 ','000000000000100-','000000000000000 ',
'000000000000000 ','000000000000000 ','2008-06-27',' ','000000000000000 ',
'0001-01-01','00 ','000000000100000 ','000000000000000 ','000000000000000 ',
'000000000000000 ','000000000000000 ','
'0001','37','01','00025006','N','

','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',

','0601 ','0604 ','M','0001-01-01','0000000000000.00',

','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')

B.11. Tabla TXT_MCDTRGO:


('0108','0001','50','00252910','00000000000 ','00000000000 ','00000000000 ',
'00000000000 ','00000000003-','UV','A ','00 ','2012-04-30','MP4C6060',
'2012-05-01-01.22.24.469376','0000000 ','T1')
B.12. Tabla TXT_MCDTCON:
('0108','0001','50','00252910','

','

',' ','

','N','VEF','1988-09-15','M',

'00000014000 ','00000000000 ','0000000 ',' ',' ',' ','00000000000 ','00000000000 ',


'0000000 ',' ','1900-01-01',' ','1900-01-01','1900-01-01','1900-01-01','1900-01-01',
'1900-01-01','00000000000 ','00000000003-','1900-01-01','00000000000 ',
'00000000003-','000000000 ','0141 ','000000 ','00000000000 ','1900-01-01',
'1900-01-01',' ','00000000000 ','0000000 ','1900-01-01','1900-01-01',' ','00000000000 ',
'0000000 ','1900-01-01','1900-01-01','2012-04-15-02.07.59.591116','0001','M',' ',

59

'1900-01-01','00000000000 ',' ',' ','1','00 ','1900-01-01','0140 ','000000 ','2012-04-14',


'1900-01-01','N64','1900-01-01',
'CONVERSION2000-08-21 999
'1900-01-01','S','000000 ','0000 ','

','

','

',

','0000000000000 ','0000000000000 ',' ',' ',

'00000000000 ','00000000000 ','00000000000 ','00000000000 ','00000000000 ',


'00000000000 ','00000000000 ','00000000000 ','2012-05-10','
'MP4C1220','

','1900-01-01','00000 ',

','000014000 ','1900-01-01','AUTO3005','0000000 ','540009','T1',

'1992-02-28',' ','0108','N','

','

',' ','

','C','VEF')

B.13. Tabla TXT_PEDT001:


('00000208','X','0000000217','5','00','0000000217','0100','C','1900-01-01 ','0001-01-01 ',
'N','0001-01-01 ','0001-01-01 ','J','65','
'EDIFICIOS COMERCIALE','
'SIN DIRECCION
'

','S

','
','

','-','Z',' ','VEN ','0001-01-01 ',

','FICHERO CENTRAL

','CARACAS

',

','

',

',' ','01','01010','VEN ',' ','000','0000000',' ',

'000','0000000',' ','000','0000000','0001-01-01 ','0108','0021','CONV

',' ','0001-01-01 ',

'CONV','PE4C8530','CONV','2006-02-26-01.18.29.990435','OTR','OTR',' P ',' ',' ',' ',


'

','000000000000','0000','00',123)

60

B.14. Tabla TXT_PEDT008:


('00000005','010800120100070117','T02','1998-07-13 ','1998-07-08 ','2003-08-26 ',
'C','0','

','2003-08-26-01.36.39.833455',' ')

B.15. Tabla TXT_UGDTMAE:


('01080571','9600148012','6','8','01080571','

','01080571','01080571','96','BE01',

'999','0604 ','3004','VEF ','0103030','000000000554900','000000000554900',


'000000000554900','2012-01-12','2012-01-12','2012-01-12','2012-01-31','2012-01-31',
'2016-01-31','0','2012-03-31','000000000524679','000000000524679','2012-03-23',
'2012-03-31','2012-04-30','2012-04-30','2012-01-12','0001-01-01','0001-01-01',
'2012-03-31','2012-04-30','00','00','2012-03-23','2012-01-12','000000000000000',
'0001-01-01','000000000000000','0','N','S','0','0','S','S','N','N','N','S','0','S','0',' ','0','0',' ',' ',
' ','N',' ',' ',' ','N','00','0001-01-01','0108','0571','0100007016','6','2','00915197','000','S',
'000000000000000','000000000000000','0000000','00003','N64','

','00000001070',

'30571 ','000000000000000','000000000000000','000','0',' ','0','N','T','01','000','

',

'000000000000000','000000000000000','000000000000000','000000000000000',
'000000000000000','000000000000000','000000000000000','
'

','

0571 ',' ','000',

','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))

Prototipo.dbo.AT04 WHERE [IDAplicativo] = 23) + 1),4),'0000')


declare @Di1 char(1) = '7'
declare @Di2 char(1) = '1'
declare @Seqcn char(10)

+
FROM

63

declare @Stgir char(1)


declare @Dtst char(10) = '2012-01-31'
declare @Csp char(4)
declare @Ap int = 23
declare @Seq1 int = 0
declare @Seq2 int = 0
declare @Cont int = 0
WHILE @Cont < @Filas AND @Seq1 < 10000
BEGIN
WHILE @Cont < @Filas AND @Seq2 < 10000
BEGIN
SELECT

@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],

[CH_DIG2_CONTR], [SEQ_CTA_CONTR], [STATUS_GIRO], [DT_STATUS])


SELECT @Bcn, @Acn, @Di1, @Di2, @Seqcn, @Stgir, @Dtst

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))

Prototipo.dbo.AT04 WHERE [IDAplicativo] = 26) + 1),4),'0000')


declare @Dc char(2) = '31'
declare @Cp char(2) = '26'
declare @Cta char(8)
declare @Iest char(2)
declare @Dult char(10) = '2012-01-31'
declare @Nfac char(15)
declare @Mant char(20)
declare @Dven char(10)
declare @Ctip char(1)
declare @Dact char(10)
declare @Seq1 int = 0
declare @Seq2 int = 0
declare @Cont int = 0

+
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

SELECT @Iest = CASE WHEN CAST(RAND() * 2 AS INT) = 0 THEN


'VE' ELSE 'CT' END
SELECT @Nfac = '0-' + CONVERT(varchar, CAST(RAND() * 1000000
AS INT))
SELECT

@Mant

RIGHT('0000000000000000000'

convert(varchar,CAST(RAND() * 1000000000 AS INT)),20)


SELECT @Dven = (SELECT TOP(1) CONVERT(char(10), Fecha, 20)
FROM Prototipo.dbo.DimTiempo ORDER BY NEWID())
SELECT @Ctip = CONVERT(varchar, CAST(RAND() * 10 AS INT))
SELECT @Dact = (SELECT TOP(1) CONVERT(char(10), Fecha, 20)
FROM Prototipo.dbo.DimTiempo ORDER BY NEWID())
INSERT

INTO

([FAC_NCONTRAT_ENT],
[FAC_NCONTRAT_CP],

DBALEJANDRIA_STAGINGAREA.dbo.TXT_FADTFAC
[FAC_NCONTRAT_CENT],

[FAC_NCONTRAT_DC],

[FAC_NCONTRAT_CTA],

[FAC_IESTFCT],

[FAC_DULTCOB], [FAC_NFACTURA], [FAC_MANTICIP], [FAC_DVENCIM])


SELECT @Ent, @Cent, @Dc, @Cp, @Cta, @Iest, @Dult, @Nfac,
@Mant, @Dven
INSERT

INTO

([CTR_NCONTRAT_ENT],

DBALEJANDRIA_STAGINGAREA.dbo.TXT_FADTCTR
[CTR_NCONTRAT_CENT],

[CTR_NCONTRAT_CP],

[CTR_NCONTRAT_CTA], [CTR_CTIPFAC], [CTR_DACTIVA])


SELECT @Ent, @Cent, @Cp, @Cta, @Ctip, @Dact
SELECT @Cont = @Cont + 1
SELECT @Seq2 = @Seq2 + 1

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))

Prototipo.dbo.AT04 WHERE [IDAplicativo] = 96) + 1),4),'0000')


declare @Entiofi char(8) = '0116' + @Ofi

+
FROM

69

declare @Di1 char(1) = '6'


declare @Di2 char(1) = '8'
declare @Cuenta char(10)
declare @Sitpres char(1)
declare @Fecs char(10) = '2012-01-31'
declare @LibC5 char(10)
declare @Ap int = 96
declare @Salr int
declare @Salt int
declare @Seq1 int = 0
declare @Seq2 int = 0
declare @Cont int = 0
WHILE @Cont < @Filas AND @Seq1 < 10000
BEGIN
WHILE @Cont < @Filas AND @Seq2 < 10000
BEGIN
SELECT

@Cuenta

convert(varchar,@Seq1),4)
convert(varchar,@Seq2),4)

CONVERT(varchar,@Ap)
+

RIGHT('000'

RIGHT('000'

+
+

70

SELECT @Sitpres = CONVERT(varchar, CAST(RAND() * 4 AS INT))


SELECT @LibC5 = ' ' + CONVERT(varchar, CAST(RAND() * 100 AS
INT))
SELECT @Salr = CAST(RAND() * 10000000 AS INT)
SELECT @Salt = CAST(RAND() * 10000000 AS INT)
INSERT

INTO

DBALEJANDRIA_STAGINGAREA.dbo.TXT_UGDTMAE([ENTIOFI],
[DIGICCC2],

[CUENTA],

[SITPRES],

[FECSIT],

[DIGICCC1],
[LIBRE_CAR5],

[SALREAL], [SALTEOR])
SELECT

@Entiofi,

@Di1,

@Di2,

@LibC5, @Salr, @Salt


SELECT @Cont = @Cont + 1
SELECT @Seq2 = @Seq2 + 1
END
SELECT @Seq2 = 0
SELECT @Seq1 = @Seq1 + 1
END
END
GO
C.4. Procedimiento prc_RandomInsertLeasing:

@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))

Prototipo.dbo.AT04 WHERE [IDAplicativo] = 28) + 1),4),'0000')


declare @Dig char(2) = '30'
declare @Codser char(2) = '28'
declare @Numcon char(8)
declare @Tum char(3)
declare @Estcon char(2)
declare @Fvalres char(10) = '2012-01-31'
declare @Estcar char(2) = 'VE'

+
FROM

72

declare @Feccamcar char(10) = '2012-01-31'


declare @Seq1 int = 0
declare @Seq2 int = 0
declare @Cont int = 0
WHILE @Cont < @Filas AND @Seq1 < 10000
BEGIN
WHILE @Cont < @Filas AND @Seq2 < 10000
BEGIN
SELECT @Numcon = RIGHT('000' + convert(varchar,@Seq1),4) +
RIGHT('000' + convert(varchar,@Seq2),4)
SELECT @Tum = ' ' + CONVERT(varchar, CAST(RAND() * 100 AS
INT))
SELECT @Estcon = CASE CAST(RAND() * 4 AS INT) WHEN 0 THEN
'AC' WHEN 1 THEN 'NO' WHEN 2 THEN 'FI' ELSE 'RL' END
INSERT

INTO

DBALEJANDRIA_STAGINGAREA.dbo.TXT_LEDTCON

([COD_EMPRESA], [CENTRO_APORTAN], [DIGITOS_CTRL], [COD_SERVICIO],


[NUM_CONTRATO],

[TIPO_ULT_MODIF],

[EST_CONTRATO],

[FEC_VAL_RESID], [EST_CARTERA], [FEC_CAMBIO_CAR])


SELECT

@Codem,

@Cenap,

@Dig,

@Estcon, @Fvalres, @Estcar, @Feccamcar


SELECT @Cont = @Cont + 1

@Codser,

@Numcon,

@Tum,

73

SELECT @Seq2 = @Seq2 + 1


END
SELECT @Seq2 = 0
SELECT @Seq1 = @Seq1 + 1
END
END
GO
C.5. Procedimiento prc_RandomInsertSobregiros:
USE [SIF]
GO
DROP PROCEDURE [dbo].[prc_RandomInsertSobregiros]
GO
CREATE PROCEDURE [dbo].[prc_RandomInsertSobregiros]
@Filas int = 100
AS
BEGIN
declare @Ent char(4) = '0132'

74

declare

@Cenalt

char(4)

convert(varchar,(SELECT

ISNULL(RIGHT('000'

MAX(SUBSTRING([CREDITO],5,4))

+
FROM

Prototipo.dbo.AT04 WHERE [IDAplicativo] = 1) + 1),4),'0000')


declare @Di1 char(1) = '0'
declare @Di2 char(1) = '4'
declare @Cuenta char(10)
declare @Subpr char(4)
declare @Saldis char(20)
declare @Prod char(2) = '01'
declare @Clastit char(3) = 'T01'
declare @Seq1 int = 0
declare @Seq2 int = 0
declare @Cont int = 0
WHILE @Cont < @Filas AND @Seq1 < 10000
BEGIN
WHILE @Cont < @Filas AND @Seq2 < 10000
BEGIN
SELECT

@Cuenta

convert(varchar,@Seq1),4)
convert(varchar,@Seq2),4)

'01'
+

RIGHT('000'
RIGHT('000'

+
+

75

SELECT @Subpr = CONVERT(varchar, CAST(RAND() * 100 AS INT))


SELECT

@Saldis

CONVERT(varchar,

-1

CAST(RAND()

1000000000 AS INT))
INSERT
([ENTIDAD],

INTO

DBALEJANDRIA_STAGINGAREA.dbo.TXT_BTMAX0

[CENTRO_ALTA],

[DIGICCC1],

[DIGICCC2],

[CUENTA],

[SUBPRODU], [SALDO_DISPUE], [PRODUCTO])


SELECT @Ent, @Cenalt, @Di1, @Di2, @Cuenta, @Subpr, @Saldis,
@Prod
INSERT

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))

Prototipo.dbo.AT04 WHERE [IDAplicativo] = 50) + 1),4),'0000')


declare @Tcon char(2) = '50'
declare @Ncon char(8)
declare @Mot char(2)
declare @Tarj char(2)
declare @Baj char(10) = '2012-01-31'
declare @Totdeu int
declare @Seq1 int = 0

+
FROM

77

declare @Seq2 int = 0


declare @Cont int = 0
WHILE @Cont < @Filas AND @Seq1 < 10000
BEGIN
WHILE @Cont < @Filas AND @Seq2 < 10000
BEGIN
SELECT

@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

([MCNENTCO], [MCNOFICO], [MCTCONTR], [MCNCONTR], [MCTOTDEU])


SELECT @Ment, @Mofi, @Tcon, @Ncon, @Totdeu
SELECT @Cont = @Cont + 1

78

SELECT @Seq2 = @Seq2 + 1


END
SELECT @Seq2 = 0
SELECT @Seq1 = @Seq1 + 1
END
END
GO

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

interpreta como una fecha, especficamente el 31 de enero de 2012. En este

80

informe de pasanta, las fechas sern mostradas con el formato AAAA-MM-DD,


donde AAAA es el ao, MM es el mes y DD es el da.
D.2. Tabla TXT_LRDTS21:
a. BCO_CONTR: se inserta el mismo valor que para el atributo COD_BCO_CONTR
de la tabla TXT_LRDTS02.
b. AGEN_CONTR:

se

inserta

el

mismo

valor

que

para

el

atributo

COD_AGEN_CONTR de la tabla TXT_LRDTS02.


c. DIG1_CONTR: se inserta el mismo valor que para el atributo CH_DIG1_CONTR
de la tabla TXT_LRDTS02.
d. DIG2_CONTR: se inserta el mismo valor que para el atributo CH_DIG2_CONTR
de la tabla TXT_LRDTS02.
e. SEQ_CTA_CONTR:

se

inserta

el

mismo

valor

que

para

el

atributo

SEQ_CTA_CONTR de la tabla TXT_LRDTS02.


h. COD_SUB_PROD: toma de manera aleatoria cualquier valor comprendido entre
0

y 99

, incluidos estos, si se interpretan como enteros, con

probabilidad uniformemente distribuida.


D.3. Tabla TXT_FADTPRC:
a. PRC_TIPFACT: los valores comprendidos entre 0 y 9, incluidos estos, si
se interpretan como enteros.
b. PRC_CODCAR: toma de manera aleatoria cualquier valor comprendido entre 0
y 99, incluidos estos, si se interpretan como enteros, con probabilidad
uniformemente distribuida.
D.4. Tabla TXT_FADTFAC:
a. FAC_NCONTRAT_ENT: 0100, escogido arbitrariamente.

81

b. FAC_NCONTRAT_CENT: 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. FAC_NCONTRAT_DC: 31, escogido arbitrariamente.
d. FAC_NCONTRAT_CP: 26, corresponde al nmero del aplicativo.
e. FAC_NCONTRAT_CTA: corresponde 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 ciclo.
f. FAC_IESTFCT: toma de manera aleatoria o el valor VE o el valor CT, con
la misma probabilidad para ambos.
g. FAC_DULTCOB: toma el valor 2012-01-31, el cual posteriormente se
interpreta como una fecha, especficamente el 31 de enero de 2012.
h. FAC_NFACTURA: los primeros dos caracteres son 0-. Despus, los siguientes
seis caracteres corresponden a un nmero seleccionado de manera aleatoria
con probabilidad uniforme que puede ir desde 0

hasta 999999.

i. FAC_MANTICIP: toma de manera aleatoria cualquier valor comprendido entre


00000000000000000000 y 00000000000999999999, incluidos estos, si
se interpretan como enteros, con probabilidad uniformemente distribuida.
j. FAC_DVENCIM: toma una fecha de manera aleatoria con probabilidad
uniforme de la tabla de dimensin DimTiempo de la base de datos
Prototipo, interpretada como una cadena de diez caracteres, como por
ejemplo 2011-11-25, la cual correspondera al 25 de noviembre de 2011.
D.5. Tabla TXT_FADTCTR:

82

a. CTR_NCONTRAT_ENT: se inserta el mismo valor que para el atributo


FAC_NCONTRAT_ENT de la tabla TXT_FADTFAC.
b. CTR_NCONTRAT_CENT: se inserta el mismo valor que para el atributo
FAC_NCONTRAT_CENT de la tabla TXT_FADTFAC.
c. CTR_NCONTRAT_CP: se inserta el mismo valor que para el atributo
FAC_NCONTRAT_CP de la tabla TXT_FADTFAC.
d. CTR_NCONTRAT_CTA: se inserta el mismo valor que para el atributo
FAC_NCONTRAT_CTA de la tabla TXT_FADTFAC.
e. CTR_CTIPFAC: toma de manera aleatoria cualquier valor comprendido entre
0 y 9, incluidos estos, si se interpretan como enteros, con probabilidad
uniformemente distribuida.
f. CTR_DACTIVA: toma una fecha de manera aleatoria con probabilidad
uniforme de la tabla de dimensin DimTiempo de la base de datos
Prototipo, de manera similar a como lo hace el atributo FAC_DVENCIM de la
tabla TXT_FADTFAC.
D.6. Tabla TXT_UGDTMAE:
a. ENTIOFI:

los

primeros

cuatro

caracteres

son

0116,

escogidos

arbitrariamente. Despus, los siguientes cuatro caracteres dependen 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, toman el valor 0000, el cual llega a la base de
datos histrica. Si se ejecuta de nuevo, verifica la base de datos histrica y
toman 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, estos cuatro
caracteres toman de nuevo el valor 0000.
b. DIGICCC1: 6, escogido arbitrariamente.

83

c. DIGICCC2: 8, escogido arbitrariamente.


d. CUENTA: los primeros dos caracteres son 96, 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.
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

, incluidos estos, si se interpretan como

enteros, con probabilidad uniformemente distribuida.


h. SALREAL: toma de manera aleatoria cualquier valor comprendido entre
0

y 9999999

, incluidos estos, si

se interpretan como enteros, con probabilidad uniformemente distribuida.


i. SALTEOR: toma de manera aleatoria cualquier valor comprendido entre
0

y 9999999

, incluidos estos, si

se interpretan como enteros, con probabilidad uniformemente distribuida.


D.7. Tabla TXT_LEDTCON:
a. COD_EMPRESA: 0124, escogido arbitrariamente.
b. CENTRO_APORTAN: 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

84

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. DIGITOS_CTRL: 30, escogido arbitrariamente.
d. COD_SERVICIO: 28, corresponde al nmero del aplicativo.
e. NUM_CONTRATO: corresponde 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. TIPO_ULT_MODIF: toma de manera aleatoria cualquier valor comprendido
entre 0 y 99, incluidos estos, si se interpretan como enteros, con
probabilidad uniformemente distribuida.
g. EST_CONTRATO: toma de manera aleatoria cualquiera de los siguientes
valores: AC, NO, FI y RL, con probabilidad uniformemente
distribuida.
h. FEC_VAL_RESID: toma el valor 2012-01-31, el cual posteriormente se
interpreta como una fecha, especficamente el 31 de enero de 2012.
i. EST_CARTERA: toma el valor VE.
j. FEC_CAMBIO_CAR: toma el valor 2012-01-31, el cual posteriormente se
interpreta como una fecha, especficamente el 31 de enero de 2012.
D.8. Tabla TXT_BTMAX0:
a. ENTIDAD: 0132, escogido arbitrariamente.
b. CENTRO_ALTA: 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

85

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. DIGICCC1: 0, escogido arbitrariamente.
d. DIGICCC2: 4, escogido arbitrariamente.
e. CUENTA: los primeros dos caracteres son 01, 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

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

se interpretan como enteros, con probabilidad uniformemente distribuida.


k. PRODUCTO: toma el valor 01.
D.9. Tabla TXT_PEDT008:
a. CLAVCTA: se inserta el valor correspondiente a la concatenacin de los
atributos ENTIDAD, CENTRO_ALTA y CUENTA, en ese mismo orden, del registro
insertado en la tabla TXT_BTMAX0 en el mismo ciclo.
b. CLASTIT: toma el valor T01.
D.10. Tabla TXT_MCDTCON:
a. MCNENTCO: 0140, escogido arbitrariamente.
b. MCNOFICO: 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

86

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. MCTCONTR: 50, corresponde al nmero del aplicativo.
d. MCNCONTR: corresponde 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.
e. MCLMOTBJ: toma de manera aleatoria o el valor CS o el valor CL, con la
misma probabilidad para ambos.
f. MCTTARJE: toma de manera aleatoria cualquier valor entre 0 y 99,
incluidos

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

interpretan como enteros, con probabilidad uniformemente distribuida.

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

DBALEJANDRIA_STAGINGAREA. Por ltimo, se realiza una actualizacin y una


eliminacin de registros sobre la tabla AT04.
La insercin de los registros en la tabla AT04 se realiza secuencialmente y por
grupos. Cada grupo corresponde a un aplicativo y se selecciona mediante una
declaracin SELECT. Los grupos son unidos mediante la operacin de grupos UNION.
E.1.1. Grupo correspondiente al aplicativo Efectos
Para este aplicativo, la tabla AT04 toma valores de la combinacin de las tablas
TXT_LRDTS02 y TXT_LRDTS21. La regla de combinacin es que los valores del
atributo CONTRATO sea igual en ambas tablas. CONTRATO es un atributo calculado
para ambas tablas y corresponde, para TXT_LRDTS02, a la concatenacin de los
atributos COD_BCO_CONTR, COD_AGEN_CONTR, CH_DIG1_CONTR, CH_DIG2_CONTR y
SEQ_CTA_CONTR, y para TXT_LRDTS21, a la concatenacin de los atributos
BCO_CONTR, AGEN_CONTR, DIG1_CONTR, DIG2_CONTR y SEQ_CTA_CONTR.

88

Este grupo se divide, a su vez, en dos subgrupos, el primero correspondiente al de


los crditos activos y castigados y el segundo al de los crditos castigados. La
condicin para que sea un crdito pertenezca al primer subgrupo es que el atributo
STATUS_GRUPO de la tabla TXT_LRDTS02 sea 1 o 2. Las condiciones para que
un crdito pertenezca al segundo subgrupo son que el atributo STATUS_GRUPO de la
tabla TXT_LRDTS02 sea 3 o 4, que el mismo nmero de contrato no aparezca en
el subgrupo anterior y que el atributo DT_STATUS de TXT_LRDTS02, interpretado
como fecha sea igual a la variable @FechaCierre, interpretada como fecha (en este
caso, DT_STATUS tendra que tener el valor 2012-01-31). En ambos casos, los
caracteres once y doce de CONTRATO deben ser 2 y 3, respectivamente.
Los valores insertados para los registros de la tabla AT04 son:
a. Fecha_Cierre toma el valor de la variable @FechaCierre.
b. IDAplicativo toma siempre el valor 23, correspondiente al presente
aplicativo.
c. Credito toma el valor del atributo calculado CONTRATO de la tabla
TXT_LRDTS02.
d. Credito_18 toma el valor correspondiente a la concatenacin de los primeros
ocho caracteres y los ltimos diez caracteres del atributo calculado CONTRATO
de la tabla TXT_LRDTS02.
e. Estado_credito toma el valor 1 si se trata de un crdito activo o castigado y
2 si se trata de un crdito cancelado.
f. Tipo_cartera toma el valor del atributo COD_SUB_PROD de la tabla
TXT_LRDTS21.
E.1.2. Grupo correspondiente al aplicativo Factoring
Para este aplicativo, la tabla AT04 toma valores de la combinacin de las tablas
TXT_FADTFAC, TXT_FADTCTR y TXT_FADTPRC. Las regla de combinacin son que la
concatenacin

de

los

atributos

FAC_NCONTRAT_ENT,

FAC_NCONTRAT_CENT,

89

FAC_NCONTRAT_CP y FAC_NCONTRAT_CTA de la tabla TXT_FADTFAC sea 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 y que el valor


del atributo CTR_CTIPFAC de la tabla TXT_FADTCTR sea igual al valor del atributo
PRC_TIPFACT de la tabla TXT_FADTPRC.
Este grupo se divide, a su vez, en dos subgrupos, el primero correspondiente al de
los crditos activos y castigados y el segundo al de los crditos castigados. La
condicin para que sea un crdito pertenezca al primer subgrupo es que el atributo
FAC_IESTFCT de la tabla TXT_FADTFAC no sea ni CT, ni AN, ni PM. Las
condiciones para que un crdito pertenezca al segundo subgrupo son que el atributo
FAC_IESTFCT de la tabla TXT_FADTFAC sea CT y que la concatenacin de los
atributos

FAC_NCONTRAT_ENT,

FAC_NCONTRAT_CENT,

FAC_NCONTRAT_CP

FAC_NCONTRAT_CTA no sea la misma en ningn registro del subgrupo anterior. En


ambos casos, el atributo FAC_CONTRAT_CP de la tabla TXT_FADTFAC debe ser igual
a 26.
Los valores insertados para los registros de la tabla AT04 son:
a. Fecha_Cierre toma el valor de la variable @FechaCierre.
b. IDAplicativo toma siempre el valor 26, correspondiente al presente
aplicativo.
c. Credito toma el valor correspondiente a la concatenacin de los atributos
FAC_NCONTRAT_ENT,

FAC_NCONTRAT_CENT,

FAC_NCONTRAT_DC,

FAC_NCONTRAT_CP y FAC_NCONTRAT_CTA de la tabla TXT_FADTFAC.


d. Credito_18 toma el valor correspondiente a la concatenacin de los atributos
FAC_NCONTRAT_ENT,

FAC_NCONTRAT_CENT,

FAC_NCONTRAT_CP

FAC_NCONTRAT_CTA de la tabla TXT_FADTFAC.


e. Estado_credito toma el valor 1 si se trata de un crdito activo o castigado y
2 si se trata de un crdito cancelado.

90

f. Tipo_cartera toma el valor del atributo PRC_CODCAR de la tabla


TXT_FADTPRC.
E.1.3. Grupo correspondiente al aplicativo Prstamos
Para este aplicativo, la tabla AT04 toma valores de la tabla TXT_UGDTMAE.
Las condiciones para que un registro de la tabla TXT_UGDTMAE sea seleccionado
son:
a. Que el atributo SITPRES sea 0, 2 o 3, o que el atributo sea 1 y que
el atributo FECSIT, interpretado como fecha, sea igual a la variable
@FechaCierre, interpretada como fecha (en este caso, FECSIT tendra que
tener el valor 2012-01-31).
b. Que los primeros dos caracteres de CUENTA sean 9 y 6, respectivamente.
Los valores insertados para los registros de la tabla AT04 son:
a. Fecha_Cierre toma el valor de la variable @FechaCierre.
b. IDAplicativo toma siempre el valor 96, correspondiente al presente
aplicativo.
c. Credito toma el valor correspondiente a la concatenacin de los atributos
ENTIOFI, DIGICCC1, DIGICCC2 y CUENTA.
d. Credito_18 toma el valor correspondiente a la concatenacin de los atributos
ENTIOFI y CUENTA.
e. Estado_credito toma el valor 1 si el atributo SITPRES es 0, 2 o 3 y
el valor 2 si el atributo es 1 y el atributo FECSIT, interpretado como fecha,
es igual a la variable @FechaCierre.
f. Tipo_cartera toma el valor de la sub-cadena de caracteres del atributo
LIBRE_CAR5 que va desde el segundo carcter hasta el tercero, incluidos
ambos.

91

E.1.4. Grupo correspondiente al aplicativo Leasing


Para este aplicativo, la tabla AT04 toma valores de la tabla TXT_LEDTCON.
Este grupo se divide, a su vez, en tres subgrupos, el primero correspondiente al de
los crditos activos, el segundo al de los crditos cancelados y el tercero al de los
crditos castigados. La condicin para que sea un crdito pertenezca al primer
subgrupo es que el atributo EST_CONTRATO sea ni AC o NO. Las condiciones
para que un crdito pertenezca al segundo subgrupo son que el atributo
EST_CONTRATO sea FI y que el atributo FEC_VAL_RESID, interpretado como
fecha, sea igual a la variable @FechaCierre, interpretada como fecha. Las
condiciones para que un crdito pertenezca al tercer subgrupo son que el atributo
EST_CONTRATO sea RL, que el atributo EST_CARTERA sea VE y que el atributo
FEC_CAMBIO_CAR, interpretado como fecha, sea igual a la variable @FechaCierre,
interpretada como fecha. En los tres casos, el atributo COD_SERVICIO de la tabla
TXT_FADTFAC debe ser igual a 28.
Los valores insertados para los registros de la tabla AT04 son:
a. Fecha_Cierre toma el valor de la variable @FechaCierre.
b. IDAplicativo toma siempre el valor 28, correspondiente al presente
aplicativo.
c. Credito toma el valor correspondiente a la concatenacin de los atributos
COD_EMPRESA,

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

f. Tipo_cartera toma el valor de la sub-cadena de caracteres del atributo


TIPO_ULT_MODIF que va desde el segundo carcter hasta el tercero, incluidos
ambos.
E.1.5. Grupo correspondiente al aplicativo Sobregiros
Para este aplicativo, la tabla AT04 toma valores de la combinacin de las tablas
TXT_BTMAX0 y TXT_PEDT008. Las reglas de combinacin son que la concatenacin
de los atributos ENTIDAD, CENTRO_ALTA y CUENTA de la tabla TXT_BTMAX0 sea
igual al atributo CLAVCTA de la tabla TXT_PEDT008 y que el atributo CLASTIT de la
tabla TXT_PEDT008 sea igual a T01.
Las condiciones para que un registro de la combinacin de tablas recin
mencionada sea seleccionado son que el atributo SALDO_DISPUE de la tabla
TXT_BTMAX0 , interpretado como un entero, sea menor que 0, que el atributo
PRODUCTO de la tabla TXT_BTMAX0 sea 01 y que los primeros dos caracteres del
atributo CUENTA de la tabla TXT_BTMAX0 sean 0 y 1, respectivamente.
Los valores insertados para los registros de la tabla AT04 son:
a. Fecha_Cierre toma el valor de la variable @FechaCierre.
b. IDAplicativo toma siempre el valor 1, correspondiente al presente
aplicativo.
c. Credito toma el valor correspondiente a la concatenacin de los atributos
ENTIOFI, CENTRO_ALTA, DIGICCC1, DIGICCC2 y CUENTA de la tabla
TXT_BTMAX0.
d. Credito_18 toma el valor correspondiente a la concatenacin de los atributos
ENTIOFI, CENTRO_ALTA y CUENTA de la tabla TXT_BTMAX0.
e. Estado_credito toma el valor 1.
f. Tipo_cartera toma el valor del atributo SUBPRODU de la tabla TXT_BTMAX0.

93

E.1.6. Grupo correspondiente al aplicativo Medios de pago


Este grupo se divide en dos subgrupos, el primero correspondiente al de los
crditos activos y castigados y el segundo al de los crditos cancelados.
Para el primer subgrupo, la tabla AT04 toma valores de la combinacin de las
tablas TXT_MCDTCON y TXT_MCDTRGO. Las regla de combinacin son que los
atributos MCNENTCO, MCNOFICO, MCTCONTR y MCNCONTR sean iguales en ambas
tablas y que el atributo MCTOTDEU de la tabla TXT_MCDTRGO, interpretado como un
entero, sea mayor a 0. Adems, para que un registro sea seleccionado para este
grupo, el atributo MCLMOTBJ de la tabla TXT_MCDTCON debe ser o CS.
Para el segundo subgrupo, la tabla AT04 toma valores de la tabla TXT_MCDTCON.
Para que un registro sea seleccionado para este grupo, el atributo MCLMOTBJ de la
tabla no debe ser ni CS y el atributo MCFBAJCO, interpretado como fecha, debe
igual a la variable @FechaCierre, interpretada como fecha.
Para ambos subgrupos, el atributo MCTCONTR de la tabla TXT_MCDTCON,
interpretado como un entero, debe ser igual a 50.
Los valores insertados para los registros de la tabla AT04 son:
a. Fecha_Cierre toma el valor de la variable @FechaCierre.
b. IDAplicativo toma siempre el valor 50, correspondiente al presente
aplicativo.
c. Credito toma el valor correspondiente a la concatenacin de los atributos
MCNENTCO, MCNOFICO, MCTCONTR y MCNCONTR de la tabla TXT_MCDTCON.
d. Credito_18 toma el valor correspondiente a la concatenacin de los atributos
MCNENTCO, MCNOFICO, MCTCONTR y MCNCONTR de la tabla TXT_MCDTCON.
e. Estado_credito toma el valor 1 si se trata de un crdito activo o castigado y
2 si se trata de un crdito cancelado.

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

CONTROL_SB09_TIPO_CREDITO, que se encuentra en una base de datos llamada


STAGING. Esta tabla y esta base de datos fueron creadas, pero solo a fin de que el
script corriera correctamente; no se hizo insercin de registros en la tabla.
La eliminacin de registros se hizo mediante la creacin de una tabla temporal. El
criterio de eliminacin consta de una conjuncin de condiciones, entre las cuales se
encuentra que Credito_18 de la tabla sea igual que CONTRATO de la tabla
TXT_UGDTMAE y que SALREAL, interpretado como un entero, de esta ltima tabla sea
mayor a 0. Por lo tanto, y por las caractersticas de los datos aleatorios insertados en
dicha tabla, no se realiza la eliminacin de ningn registro de la tabla.
E.2. 02.Factoring.sql
En primer lugar, en este script se realiza la declaracin de dos variables llamadas
@FECHAC, de tipo INT, y @FECHA, de tipo DATE. A la primera 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. A la segunda se le asigna una fecha un mes anterior a la
representada por la variable @FECHAC (en este caso 2011-12-31).
En este script se realiza la actualizacin de la tabla AT04 desde la combinacin de
s misma con varias tablas de acuerdo a varias reglas de combinacin. Si bien todas

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

FAC_NCONTRAT_CTA de la tabla TXT_FADTFAC.


m. CUOTAS_VENCIDAS 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 y

96

FAC_NCONTRAT_CTA de la tabla TXT_FADTFAC y el atributo FAC_IESTFCT de


la tabla TXT_FADTFAC es igual a VE.
n. Monto_V30d toma el valor correspondiente a la sumatoria de los valores del
atributo FAC_MANTICIP de la tabla TXT_FADTFAC para los registros en los
cuales el atributo CREDITO_18 de la tabla AT04 sea 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 y la


fecha representada por el atributo FAC_VENCIM de la tabla TXT_FADTFAC sea
de uno a treinta das menor a la fecha contenida en la variable @FECHA.
o. Monto_V60d toma el valor correspondiente a la sumatoria de los valores del
atributo FAC_MANTICIP de la tabla TXT_FADTFAC para los registros en los
cuales el atributo CREDITO_18 de la tabla AT04 sea 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 y la


fecha representada por el atributo FAC_VENCIM de la tabla TXT_FADTFAC sea
de treinta y un a sesenta das menor a la fecha contenida en la variable
@FECHA.
p. Monto_V90d toma el valor correspondiente a la sumatoria de los valores del
atributo FAC_MANTICIP de la tabla TXT_FADTFAC para los registros en los
cuales el atributo CREDITO_18 de la tabla AT04 sea 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 y la


fecha representada por el atributo FAC_VENCIM de la tabla TXT_FADTFAC sea
de sesenta y un a noventa das menor a la fecha contenida en la variable
@FECHA.
q. Monto_V120d toma el valor correspondiente a la sumatoria de los valores del
atributo FAC_MANTICIP de la tabla TXT_FADTFAC para los registros en los
cuales el atributo CREDITO_18 de la tabla AT04 sea 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 y la

97

fecha representada por el atributo FAC_VENCIM de la tabla TXT_FADTFAC sea


de noventa y un a ciento veinte das menor a la fecha contenida en la variable
@FECHA.
r. Monto_V180d toma el valor correspondiente a la sumatoria de los valores del
atributo FAC_MANTICIP de la tabla TXT_FADTFAC para los registros en los
cuales el atributo CREDITO_18 de la tabla AT04 sea 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 y la


fecha representada por el atributo FAC_VENCIM de la tabla TXT_FADTFAC sea
de ciento veintin a ciento ochenta das menor a la fecha contenida en la
variable @FECHA.
s. Monto_V1a toma el valor correspondiente a la sumatoria de los valores del
atributo FAC_MANTICIP de la tabla TXT_FADTFAC para los registros en los
cuales el atributo CREDITO_18 de la tabla AT04 sea 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 y la


fecha representada por el atributo FAC_VENCIM de la tabla TXT_FADTFAC sea
de ciento ochenta y un a trescientos sesenta y cinco das menor a la fecha
contenida en la variable @FECHA.
t. Monto_Vm1a toma el valor correspondiente a la sumatoria de los valores del
atributo FAC_MANTICIP de la tabla TXT_FADTFAC para los registros en los
cuales el atributo CREDITO_18 de la tabla AT04 sea 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 y la


fecha representada por el atributo FAC_VENCIM de la tabla TXT_FADTFAC sea
ms de trescientos sesenta y cinco das menor a la fecha contenida en la
variable @FECHA.
E.3. Procedimiento para crear registros directamente sobre la tabla AT04 de SIF

98

El

procedimiento

se

llama

prc_RandomInsert,

se

ha

almacenado

tentativamente en la base de datos SIF y recibe como parmetro un valor entero,


llamado @Filas, el cual tiene como valor por defecto 10000 e indica el nmero de
filas a ser insertadas. El procedimiento consta de un ciclo con nmero de iteraciones
igual a @Filas.
En este procedimiento se insertan registros en la tabla AT04 de la base de datos
SIF. A continuacin se presentan los campos para los cuales se hace la insercin en
dichas tablas y sus posibles valores:
a. Fecha_Cierre toma el valor 20120131.
b. IDAplicativo toma siempre el valor 44, el cual fue elegido arbitrariamente.
c. Credito toma, para los primeros cuatro caracteres, 0148, escogido
arbitrariamente. Despus, los siguientes cuatro caracteres dependen 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, toman el valor 0000, el cual llega a la base de
datos histrica. Si se ejecuta de nuevo, verifica la base de datos histrica y
toman 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, estos cuatro
caracteres toman de nuevo el valor 0000. Los siguientes cuatro caracteres
toman 4444, escogido arbitrariamente. Por ltimo, 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.
d. Credito_18 toma el mismo valor que Credito, con la diferencia que la
secuencia 4444, escogida arbitrariamente, cambia por la secuencia 44,
tambin escogida arbitrariamente.

99

e. Naturaleza_cliente toma de manera aleatoria cualquier valor entre 0 y 3,


incluidos estos, con probabilidad uniformemente distribuida.
f. Estado_credito toma de manera aleatoria cualquier valor entre 1 y 3,
incluidos estos, con probabilidad uniformemente distribuida.
g. Situacion_credito toma de manera aleatoria cualquier valor entre 0 y 4,
incluidos estos, con probabilidad uniformemente distribuida.
h. Saldo toma de manera aleatoria cualquier valor entre 0 y 999999, incluidos
estos, con probabilidad uniformemente distribuida.
i. Monto_V30d toma de manera aleatoria cualquier valor entre 0 y 999999,
incluidos estos, con probabilidad uniformemente distribuida.
j. Monto_V60d toma de manera aleatoria cualquier valor entre 0 y 999999,
incluidos estos, con probabilidad uniformemente distribuida.
k. Monto_V90d toma de manera aleatoria cualquier valor entre 0 y 999999,
incluidos estos, con probabilidad uniformemente distribuida.
l. Monto_V120d toma de manera aleatoria cualquier valor entre 0 y 999999,
incluidos estos, con probabilidad uniformemente distribuida.
m. Monto_V180d toma de manera aleatoria cualquier valor entre 0 y 999999,
incluidos estos, con probabilidad uniformemente distribuida.
n. Monto_V1a toma de manera aleatoria cualquier valor entre 0 y 999999,
incluidos estos, con probabilidad uniformemente distribuida.
o. Monto_Vm1a toma de manera aleatoria cualquier valor entre 0 y 999999,
incluidos estos, con probabilidad uniformemente distribuida.
p. Tipo_Cartera toma de manera aleatoria cualquier valor entre 0 y 99,
incluidos

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

[FK_AT04_DimTiempo] FOREIGN KEY([Fecha_cierre_date])


REFERENCES [dbo].[DimTiempo] ([Fecha])
GO
ALTER TABLE [dbo].[AT04] CHECK CONSTRAINT [FK_AT04_DimTiempo]
GO
ALTER

TABLE

[dbo].[AT04]

WITH

CHECK

ADD

CONSTRAINT

[FK_AT04_DimTiempo1] FOREIGN KEY([Fecha_liquidacion_date])


REFERENCES [dbo].[DimTiempo] ([Fecha])
GO
ALTER TABLE [dbo].[AT04] CHECK CONSTRAINT [FK_AT04_DimTiempo1]
GO
ALTER

TABLE

[dbo].[AT04]

WITH

CHECK

ADD

CONSTRAINT

[FK_AT04_DimTiempo2] FOREIGN KEY([Fecha_liquidacion_date])


REFERENCES [dbo].[DimTiempo] ([Fecha])

102

GO
ALTER TABLE [dbo].[AT04] CHECK CONSTRAINT [FK_AT04_DimTiempo2]
GO
ALTER

TABLE

[dbo].[AT04]

WITH

CHECK

ADD

CONSTRAINT

[FK_AT04_SB34_ESTADO_CREDITO] FOREIGN KEY([Estado_credito])


REFERENCES [dbo].[SB34_ESTADO_CREDITO] ([Cod])
GO
ALTER

TABLE

[dbo].[AT04]

CHECK

CONSTRAINT

[FK_AT04_SB34_ESTADO_CREDITO]
GO
ALTER

TABLE

[dbo].[AT04]

WITH

CHECK

ADD

CONSTRAINT

[FK_AT04_SB35_SITUACION_CREDITO] FOREIGN KEY([Situacion_credito])


REFERENCES [dbo].[SB35_SITUACION_CREDITO] ([Cod])
GO
ALTER

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

[FK_AT04_APLICATIVO] FOREIGN KEY([IDAplicativo])


REFERENCES [dbo].[APLICATIVO] ([Cod])
GO
ALTER TABLE [dbo].[AT04] CHECK CONSTRAINT [FK_AT04_APLICATIVO]
GO
ALTER

TABLE

[dbo].[AT04]

WITH

CHECK

ADD

CONSTRAINT

[FK_AT04_TIPO_CARTERA] FOREIGN KEY([Tipo_Cartera])


REFERENCES [dbo].[TIPO_CARTERA] ([Cod])
GO
ALTER TABLE [dbo].[AT04] CHECK CONSTRAINT [FK_AT04_TIPO_CARTERA]
GO
CREATE NONCLUSTERED INDEX [IX_AT04_EDI_1] ON [dbo].[AT04]
(
[IDAplicativo] ASC
)
GO

104

CREATE NONCLUSTERED INDEX [IX_AT04_EDI_2] ON [dbo].[AT04]


(
[Credito_18] ASC
)
GO
CREATE NONCLUSTERED INDEX [IX_AT04_EDI_3] ON [dbo].[AT04]
(
[Estado_credito] ASC
)
GO
CREATE NONCLUSTERED INDEX [IX_AT04_EDI_4] ON [dbo].[AT04]
(
[Tipo_Cartera] ASC
)
GO
CREATE NONCLUSTERED INDEX [IX_AT04_EDI_5] ON [dbo].[AT04]
(
[Tipo_credito] ASC
)
GO

105

CREATE NONCLUSTERED INDEX [IX_AT04_EDI_6] ON [dbo].[AT04]


(
[Credito] ASC
)
GO
F.2. Eliminacion Indices y Fks en At04.sql
USE [Prototipo]
GO
IF

EXISTS (SELECT * FROM sys.foreign_keys WHERE object_id =

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

EXISTS (SELECT * FROM sys.foreign_keys WHERE object_id =

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

EXISTS (SELECT * FROM sys.foreign_keys WHERE object_id =

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

EXISTS (SELECT * FROM sys.foreign_keys WHERE object_id =

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

EXISTS (SELECT * FROM sys.foreign_keys WHERE object_id =

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

EXISTS (SELECT * FROM sys.foreign_keys WHERE object_id =

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

EXISTS (SELECT * FROM sys.foreign_keys WHERE object_id =

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.foreign_keys WHERE object_id =

OBJECT_ID(N'[dbo].[FK_AT04_TIPO_CARTERA]') AND parent_object_id =


OBJECT_ID(N'[dbo].[AT04]'))
ALTER TABLE [dbo].[AT04] DROP CONSTRAINT [FK_AT04_TIPO_CARTERA]
GO
IF

EXISTS

(SELECT

FROM

sys.indexes

WHERE

object_id

OBJECT_ID(N'[dbo].[AT04]') AND name = N'IX_AT04_EDI_1')


DROP INDEX [IX_AT04_EDI_1] ON [dbo].[AT04]
GO
IF

EXISTS

(SELECT

FROM

sys.indexes

WHERE

object_id

OBJECT_ID(N'[dbo].[AT04]') AND name = N'IX_AT04_EDI_2')


DROP INDEX [IX_AT04_EDI_2] ON [dbo].[AT04]
GO
IF

EXISTS

(SELECT

FROM

sys.indexes

WHERE

object_id

OBJECT_ID(N'[dbo].[AT04]') AND name = N'IX_AT04_EDI_3')


DROP INDEX [IX_AT04_EDI_3] ON [dbo].[AT04]
GO
IF

EXISTS

(SELECT

FROM

sys.indexes

WHERE

object_id

OBJECT_ID(N'[dbo].[AT04]') AND name = N'IX_AT04_EDI_4')


DROP INDEX [IX_AT04_EDI_4] ON [dbo].[AT04]
GO

108

IF

EXISTS

(SELECT

FROM

sys.indexes

WHERE

object_id

OBJECT_ID(N'[dbo].[AT04]') AND name = N'IX_AT04_EDI_5')


DROP INDEX [IX_AT04_EDI_5] ON [dbo].[AT04]
GO
IF

EXISTS

(SELECT

FROM

sys.indexes

WHERE

object_id

OBJECT_ID(N'[dbo].[AT04]') AND name = N'IX_AT04_EDI_6')


DROP INDEX [IX_AT04_EDI_6] ON [dbo].[AT04]
GO

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

Sin embargo, entre las desventajas de un DW se pueden mencionar: [5] [6]


a. La construccin de un DW es una tarea que puede llevar aos de
conceptualizacin e implementacin.
b. Los procedimientos de limpieza, extraccin y carga de los datos desde los
sistemas fuente pueden tardar mucho tiempo. Adems, la mezcla de datos
provenientes de distintas fuentes puede llegar a ser un gran problema dadas
las diferencias en nombres, definiciones de dominios para los datos, etc. Cada
vez que una base de datos se modifica, el administrador debe tomar en cuenta
las interacciones con las dems.
c. En el caso de que haya problemas de compatibilidad entre los diferentes
sistemas transaccionales, las personas que trabajan con el DW deben estar
muy bien entrenados.
d. Si el DW es accedido desde el internet, muchas precauciones de seguridad
deben ser tomadas.
e. Los costos de mantenimiento y de administracin de un DW pueden ser altos,
tanto por la mano de obra como por el hardware. La compaa que lo utilice
debe estar segura de que los beneficios son mayores que los costos.