• No results found

Link Selection Algorithms Remove Redundant Variables

Chapter 5 New, Fast Link-based ILP Formulation with Wise Link Selection

5.1.2 Link Selection Algorithms Remove Redundant Variables

El proceso de extracción, transformación y carga de la información para la BD (ETL por sus siglas en Inglés) (Muller 1999; Rich 2007; Urbano, Arora et al. 2007) se aplica en dos etapas: en la primera se extraen los datos básicos de las personas de interés, contenidos en un fichero en texto plano, a los que se les aplican transformaciones (limpieza) antes de ser cargados; en la segunda se

Capítulo II. Concepción del sistema de base de datos. Página 30

comienza con la búsqueda de información adicional de las personas, en las BBDD locales y remotas, cuyos datos fueron cargados durante la primera etapa. Estos datos son transformados y cargados en la BD local (ver figura 2.5). Todo el proceso se realiza mediante instrucciones SQL, SQL*PLUS (Haan 2005) y programas en PL/SQL (Rosenzweig and Rakhimov 2009). La definición e implementación de este proceso constituye uno de los aportes de la investigación puesto que se deben realizar actividades de chequeos y transformaciones que van más allá del establecimiento de simples vínculos entre diversas fuentes para obtener los datos necesarios para las tareas que acomete el MININT en este escenario.

Capítulo II. Concepción del sistema de base de datos. Página 31

Método de manipulación de la fuente de datos externa escogido.

Existen varios métodos para manipular las fuentes de datos externas como son los creados por Oracle SQL-LOADER y las tablas externas (Rich 2007),

así como mediante programas PL-SQL propios creados para tal fin.

El uso de programas PL-SQL es muy engorroso y rígido, puesto que deben ser reprogramados para cada fuente externa de diferente formato. Los métodos SQL- LOADER y las tablas externas cuentan con un análisis sintáctico similar, de modo que no hay diferencias de rendimiento en el análisis de artículos con el mismo formato. Sin embargo, hay situaciones en las cuales un método es más apropiado que el otro, debido a las arquitectura diferente de cada uno de ellos. El uso de las tablas externas tiene las siguientes ventajas:

• Permite hacer grandes transformaciones antes de que los datos sean cargados en la BD.

• Todo el proceso se realiza dentro de un programa PL-SQL.

• Se puede consultar la fuente externa sin necesidad de introducirla en la BD, lo que hace que sea más flexible.

• Permite un procesamiento en paralelo transparente sin tener que dividir primero los datos externos.

Por su parte, el uso del SQL-LOADERtiene laventaja de que se pueden cargar los datos remotamente.

El método basado en las tablas externas fue el usado en el presente trabajo, debido a que las ventajas que éste tiene, con respecto al SQL-LOADER, se adecuan mejor a la fuente externa existente, haciéndolo más flexible y fácil de usar.

Tablas externas.

Las tablas externas son definidas como tablas que no residen en la BD. Mediante ellas se pueden manipular los datos externos como tablas virtuales, que pueden

Capítulo II. Concepción del sistema de base de datos. Página 32

ser consultadas sin necesidad de que sean cargadas en la BD (Lane 2007). Para su creación se usa la cláusula ORGANIZATION EXTERNAL dentro de la instrucción de creación de tablas CREATE TABLE, donde se especifican todos los metadatos necesarios que describen la fuente de datos externa. Estos son guardados en el diccionario de los datos.

Primera etapa de ETL.

La fuente de datos externa presente es un fichero en texto plano denominado

entsal.txt, compuesto por artículos delimitados por cambio de línea y campos de longitud fija. La instrucción usada para la creación de la tabla externa es la siguiente:

1 CREATE TABLE entsal_ext(

2 nombre VARCHAR2(9), 3 apellido1 VARCHAR2(9), 4 apellido2 VARCHAR2(9), 5 sexo CHAR(1), 6 fecha_nac CHAR(6), 7 categoria VARCHAR3(3), 8 ciudadania CHAR(3), 9 fecha_es DATE, 10 sentido CHAR(1), 11 pais_proc CHAR(3) 12 ) 13 ORGANIZATION EXTERNAL ( 14 TYPE ORACLE_LOADER

15 DEFAULT DIRECTORY dir_tablas_externas

16 ACCESS PARAMETERS (

17 RECORDS DELIMITED BY NEWLINE

18 FIELDS ( 19 apellido1 (10:+9) CHAR(9), 20 apellido2 CHAR(9), 21 nombre CHAR(15), 22 sexo CHAR(1), 23 fecha_nac CHAR(6), 24 categoria (55:+3) CHAR(3), 25 ciudadania (60:+3) CHAR(3),

26 fecha_es CHAR(6) date_format DATE mask "yy/mm/dd",

27 sentido CHAR(1), 28 pais_proc CHAR(3) 29 ) 30 ) 31 LOCATION ('entsal.txt') 32 );

Capítulo II. Concepción del sistema de base de datos. Página 33

La primera parte de la instrucción (líneas 1-12) especifica la estructura de creación de una tabla tradicional. La línea 13 identifica a la tabla como externa. La línea 14 selecciona el manipulador de acceso, que es el encargado de manipular el dato externo. La cláusula de la línea 15 define el directorio Oracle donde se encuentra el dato externo. La cláusula de la línea 16 describe el formato del fichero a manipular, que incluye la delimitación de los artículos (línea 17) y de los campos (líneas 18-29). La cláusula de la línea 31 especifica la lista de ficheros externos a manipular, que conforman la tabla externa.

Posteriormente a la creación de la tabla externa se crea una tabla temporal con la información contenida en la tabla externa, con las transformaciones en los datos necesarias, que no pudieron resolverse durante la creación de la tabla externa, por ser atípicas, como son la separación de los nombres en dos columnas y la inclusión del siglo en la fecha de nacimiento, por el criterio escogido. Esta tabla, además, cuenta con una columna adicional, que guarda el estado de las búsquedas en las distintas BBDD remotas, usado para realizar posteriores búsquedas en otras BBDD auxiliares en caso de no ser satisfactorias en las BBDD principales. La instrucción usada para la creación de la tabla es la siguiente:

CREATE TABLE entsal_tmp AS SELECT

ROWNUM AS estado,

CASE WHEN InStr(nombre,' ') = 0 THEN

nombre ELSE

SubStr(nombre,1,InStr(nombre,' ')-1) END AS Nombre,

CASE WHEN InStr(nombre,' ') = 0 THEN NULL ELSE SubStr(nombre,InStr(nombre,' ')+1) END AS Nombre2, apellido1, apellido2, sexo,

CASE WHEN fecha_nac>To_Char(SYSDATE,'yymmdd') THEN

Capítulo II. Concepción del sistema de base de datos. Página 34 ELSE To_Date('20'||fecha_nac,'yyyymmdd') END AS Fecha_nac, categoria, prov, ciudadania, fecha_es, sentido, pais_proc FROM entsal_ext;

Mediante un programa en PL/SQL se procesa la tabla temporal para cargar los datos de las personas y sus viajes en las tablas regulares correspondientes. Este proceso se realiza con los siguientes pasos, descritos en un seudolenguaje.

SI <datos de la persona procesada no existen> entonces

<Introducirlos>

SI NO

<actualizarlos si fuera necesario>

SI <los datos del viaje corresponden al inicio del viaje> entonces

<introducir los datos del viaje>

SI NO

<buscar los datos del viaje correspondiente y actualizar la fecha fin de viaje>

Segunda etapa de ETL.

La segunda etapa de ETL consiste en buscar información adicional de las personas procesadas en la primera etapa, relativa a los datos personales y del viaje. Dicha búsqueda se realiza en distintas BBDD locales y remotas, desde las cuales se extrae toda la información relevante existente en ellas. La búsqueda se hace de forma exacta, tomando como criterio de identidad de la persona el nombre y los apellidos, fecha de nacimiento, sexo y ciudadanía. En caso de que no haya unicidad en el resultado de la búsqueda, ésta se desecha.

Parte de la información recopilada se transforma para ajustarla a la estructura de la BD local, como es el caso de la dirección, que es convertida a una cadena de caracteres, pues no es de interés en la aplicación hacer búsquedas por las distintas partes que la componen.

Capítulo II. Concepción del sistema de base de datos. Página 35

Related documents