Evaluación de modelos dimensionales alternativos para representar y manipular datos estadísticos

76 

Texto completo

(1)EVALUACIÓN DE MODELOS DIMENSIONALES ALTERNATIVOS PARA REPRESENTAR Y MANIPULAR DATOS ESTADÍSTICOS. CRISTIAN JAVIER BENJUMEA URIBE. UNIVERSIDAD DE LOS ANDES FACULTAD DE INGENIERÍA DEPARTAMENTO DE SISTEMAS Y COMPUTACIÓN BOGOTÁ D.C. 2002.

(2) EVALUACIÓN DE MODELOS DIMENSIONALES ALTERNATIVOS PARA REPRESENTAR Y MANIPULAR DATOS ESTADÍSTICOS. CRISTIAN JAVIER BENJUMEA URIBE. Tesis para optar al título de Ingeniero de Sistemas y Computación. Asesor JOSE EUSEBIO ABÁSOLO PRIETO. UNIVERSIDAD DE LOS ANDES FACULTAD DE INGENIERÍA DEPARTAMENTO DE SISTEMAS Y COMPUTACIÓN BOGOTÁ D.C. 2002.

(3) CONTENIDO. Pág.. INTRODUCCIÓN. 1. OBJETIVO GENERAL. 2. OBJETIVOS ESPECÍFICOS. 3. 1. JUSTIFICACIÓN. 4. 2. MARCO CONCEPTUAL. 5. 2.1 BODEGAS DE DATOS (DATA WAREHOUSES) Y DATA MARTS. 5. 2.2 ANÁLISIS OLAP (On line Analytical Processing). 6. 2.3 HERRAMIENTAS OLAP. 7. 2.3.1 Herramientas rolap (OLAP olap relacional). 8. 2.3.2 Herramientas molap (OLAP olap multidimensional). 8. 2.4 EL MODELO DIMENSIONAL. 8. 2.4.1 Diferencias con el modelo entidad – relación (e-r). 9. 2.4.2 La tabla de hechos (fact table). 10. 2.4.3 Tablas de dimensiones. 10. 3. DESARROLLO DEL PROYECTO. 12. 3.1 FUENTE DE LOS DATOS. 12.

(4) 3.2 DATOS. 12. 3.3 MODELAJE FORMAL DE LOS DATOS (DISEÑO LOGICO). 15. 3.3.1 Modelo 1.. 15. 3.3.2 Modelo 2.. 20. 3.4 ETL. Extracción, transformación y cargue de los datos. 27. 3.5 CONSULTAS PROPUESTAS. 32. 3.6 PLATAFORMA UTILIZADA. 35. 3.7 RESULTADOS Y ANÁLISIS. 35. CONCLUSIONES Y RECOMENDACIONES. 39. BIBLIOGRAFÍA. 43.

(5) LISTA DE TABLAS. Pág. Tabla 1. Detalle de las dimensiones del modelo 1. 18. Tabla 2. Detalle de las dimensiones del modelo 2. 25. Tabla 3. Tiempos de ejecución de consultas. 35.

(6) LISTA DE FIGURAS. Pág. Figura 1. Diagrama modelo 1. 18. Figura 2. Diagrama modelo 2. 25.

(7) LISTA DE ANEXOS. Pág. Anexo A. Valores predeterminados de algunos de los datos incluídos en la encuesta de población.. 44. Anexo B. Archivos de control para el cargue de los datos a tablas temporales utilizando SQL Loader.. Anexo C. Código SQL y Plan de Ejecución de las Consultas. 48. 50.

(8) ISC-2002-2-9. 1. INTRODUCCIÓN. El proyecto es un trabajo de investigación sobre diferentes alternativas para evaluar modelos dimensionales para representar y manipular datos estadísticos.. El documento presenta el proceso de la implementación de los modelos, desde el diseño hasta las consultas pasando por el proceso de extracción, carga y transformación de los datos.. Basado en la teoría y un amplio análisis de los resultados de la implementación, se dan algunas recomendaciones para tener en cuenta a la hora de modelar información estadística..

(9) ISC-2002-2-9. 2. OBJETIVO GENERAL. El objetivo general del presente proyecto es evaluar diferentes alternativas de modelaje dimensional para datos estadísticos..

(10) ISC-2002-2-9. 3. OBJETIVOS ESPECÍFICOS. •. Diseñar e implementar dos modelos para almacenar datos de tipo censal o de encuestas de población. Esto incluye el modelo lógico y físico, la extracción transformación y cargue de los datos y la ejecución de consultas en cada uno de los modelos.. •. Comparar los dos modelos propuestos con el fin de establecer cuál de los dos responde mejor dependiendo de los requerimientos. La comparación se hace teniendo en cuenta tres aspectos: velocidad de respuesta de las consultas, complejidad de las consultas y la flexibilidad para crecer en caso de que se quieran agregar nuevas variables o modificaciones.. •. Recomendar uno de los modelos dependiendo de los resultados de la comparación y pruebas mencionados en el punto anterior..

(11) ISC-2002-2-9. 4. 1. JUSTIFICACIÓN. El manejo de información estadística proveniente de censos o encuestas de población no es muy común cuando se habla de Data Marts o de Bodegas de Datos. Es más común encontrar información que se refiere exclusivamente a un negocio determinado, por ejemplo, datos personales y algunos datos de llamadas para un negocio de celulares, datos de ventas y de productos en el caso de una tienda por departamentos etc.. El proyecto se hace porque el trabajo con información estadística es muy interesante por los grandes volúmenes de información que se pueden manejar y, por lo tanto, por los análisis que se pueden hacer de ésta. Además es un campo novedoso pues como se menciona anteriormente, no es objeto de mucho estudio como lo es otro tipo de información más específica.. Se quiere hacer un estudio de modelaje de este tipo de información para que en caso de que se quiera implementar una Bodega de Datos o un Data Mart, las personas encargadas puedan obtener información y recomendaciones que le sirvan de guía para llevar a la realidad este tipo de proyectos..

(12) ISC-2002-2-9. 5. 2. MARCO CONCEPTUAL. 2.1 BODEGAS DE DATOS (DATA WAREHOUSES) Y DATA MARTS Una bodega de datos es una base de datos que extrae, transforma, almacena y utiliza datos que provienen de diferentes sistemas de procesamiento de transacciones, como por ejemplo: sistemas de inventario, sistemas de cartera y sistemas de facturación entre otros. Las bodegas de datos tienen algunas características especiales que las diferencian de los sistemas operacionales, también llamados OLTP (On line transactional process) 1: •. Son orientantadas a un tema. Los sistemas OLTP están diseñados para que guarden información de un tema específico, por ejemplo, en una empresa puede haber un sistema OLTP que se encarga de manejar las ventas de minoristas, otro para el de las de mayoristas etc. Una bodega de datos recopilaría la información de ventas en minoristas, mayoristas etc…. •. Tienen datos integrados. Generalmente reúnen datos que provienen de fuentes diferentes y por lo tanto deben utilizar un proceso de transformación. 1. COREY, M and ABBEY, M. Oracle 8i Data Warehousing. Osborne/McGraw Hill. 1999. p. 9 -15.

(13) ISC-2002-2-9. 6. para que al momento de cargarlos, almacenen la información de una forma estándar. •. No es volátil. Son bases de datos que solamente se utilizan para consulta y no se está escribiendo constantemente en ellas. La información en las bodegas de datos es histórica y no se actualiza. Las escrituras se hacen cada cierto tiempo y se caracterizan por la gran cantidad de datos. En los sistemas OLTP, por el contrario, contínuamente se está escribiendo y leyendo.. •. Dependen del tiempo. El tiempo es un elemento fundamental de las bodegas de datos y los data marts ya que el objeto de estos es hacer análisis de los datos. Generalmente, el análisis de datos es mucho más valioso cuando se hace a través del tiempo.. Las bodegas de datos se diferencian de los data marts en que la información de las segundas es más específica, está dirigida a sun grupo de usuarios que tienen dominio de un tema específico. Varios data marts pueden o no, formar una bodega de datos.. 2.2 ANÁLISIS OLAP (On line Analytical Processing) Mientras que las bodegas de datos o data marts se construyen con el fin de almacenar información, las herramientas OLAP se encargan de obtener información de éstas. Son complementarias..

(14) ISC-2002-2-9. 7. Las herramientas OLAP se distinguen por ciertas características2: •. Habilidad para hacer “drill down” o “roll up” a los datos. Esta es la característica que les permite a los usuarios mostrar la información más detalladamente o más generalmente. Otras operaciones comunes del análisis OLAP incluyen el ranking, el top, las razones (ratios), y agrupaciones (tiles).. •. Habilidad para intercambiar dimensiones. Es decir, poder cambiar fácilmente las variables de una consulta, con el fin de obtener nueva información. Esta técnica también es llamada rotación. Las herramientas OLAP deben ser muy flexibles para los usuarios finales.. •. Permite alteraciones en la apariencia de los datos mostrados. Para presentar los resultados de una manera agradable y fácil de entender.. •. Cubos que permiten ser manipulados en línea o localmente.. 2.3 HERRAMIENTAS OLAP Existen tres tipos de herramientas OLAP:. 2. THOMSEN, E. OLAP Solutions: Building Multidimensional Information Systems. John. Wiley & Sons, Inc., 2001..

(15) ISC-2002-2-9. 8. 2.3.1 Herramientas rolap (OLAP relacional) Las herramientas ROLAP almacenan los datos con un enfoque relacional. Esta técnica tiene como ventaja optimiza el manejo del espacio en la base de datos, ya que no hay ninguna redundancia. Además, el mantenimiento de la base de datos será mucho menos costoso y más ordenado. Este es un modelo más escalable que el multidimensional. Algunos ejemplos de herramientas rolap son el Discoverer (Oracle) y el Axsys (Information Advantage).. 2.3.2 Herramientas molap (OLAP multidimensional) Estas herramientas almacenan los datos de forma multidimensional. Estas herramientas tienen ventajas en cuanto a las capacidades para hacer las consultas, pues los querys son más sencillos y se ejecutan a mayor velocidad. Algunas herramientas molap son Express Server (Oracle) y el PowerPlay (Cognos).. Existe también el HOLAP que es un híbrido entre el ROLAP y el MOLAP.. 2.4 EL MODELO DIMENSIONAL El modelaje dimensional muestra los datos al usuario de una manera en que este los pueda entender y consultar fácil e intuitivamente. Este modelo busca la eficiencia por medio de la desnormalización, es decir, permite la redundancia de datos, y está más orientado para trabajar con herramientas OLAP..

(16) ISC-2002-2-9. 9. En el enfoque dimensional, se trabaja con estructuras llamadas cubos. Estos cubos son el resultado de la unión de varias “dimensiones” que representan cada una de las variables de las cuales se está obteniendo información. Por ejemplo, supongamos que tenemos una hoja de cálculo con las ventas de un almacén que se encuentra en varias ciudades, con las columnas representando un lugar y las filas representando un mes del año; en las celdas de la intersección se muestra los ingresos. Esto es puede ser visto como un “cubo” en dos dimensiones en el que las dimensiones son el lugar, y el mes (tiempo). Así, se puede seguir agregando dimensiones al “cubo” y la intersección de esas dimensiones constituye el dato como tal.. 2.4.1 Diferencias con el modelo entidad – relación (E-R) •. El modelo entidad relación (E-R) es normalizado, es decir, no existe redundancia en los datos. El modelo E-R, es más complicado de entender para los usuarios. Este modelo, utiliza tablas para representar las entidades y las relaciones entre ellas.. •. El modelo dimensional es mucho mas intuitivo para los usuarios y sí permite la redundancia de datos, esta última característica le permite ser más eficiente en cuanto a la velocidad con que responde a las consultas y, hace más sencillos los querys o consultas.. •. A diferencia del modelo E-R, utiliza una tabla de hechos (Fact Tables) para representar las medidas y unas dimensiones para representar las variables.

(17) ISC-2002-2-9. 10. que quiero analizar junto con sus atributos. Al modelo dimensional también se le llama modelo estrella debido a que por la ubicación de las tablas de hechos y sus dimensiones, se parece a una estrella3.. 2.4.2 La tabla de hechos (fact table) Esta es la tabla en la que se presentan todas las medidas numéricas. Cada registro en la Fact Table representa la intersección de las dimensiones. Es decir, como una celda dentro del cubo. Los hechos o facts dentro de esta tabla pueden ser aditivos o no aditivos. Por ejemplo, el salario de una persona o la cantidad de dinero gastada en compras mensualmente son cantidades aditivas, las cuales son las más valiosas para el análisis ya que generalmente, las consultas no quieren obtener detalles de cada registro en la fact table, lo más interesante son los datos que involucran a todos los registros. Generalmente para los hechos no aditivos, lo que se hace es contarlos para poder obtener información de todos los registros en general.. 2.4.3 Tablas de dimensiones Las tablas de dimensiones son aquellas donde se encuentran descritas las dimensiones o variables que se están analizando. Como aquí se están describiendo los registros, los atributos son del tipo texto. Estos atributos son importantes porque después permitirán hacer las consultas teniendo en cuenta. 3. KIMBALL, R. The Data Warehouse Toolkit. John Wiley & Sons, Inc., 1996. pag 10..

(18) ISC-2002-2-9. 11. sus valores. Es decir, si tenemos una dimensión geográfica, vamos a poder hacer las consultas dependiendo del país o del estado..

(19) ISC-2002-2-9. 12. 3. DESARROLLO DEL PROYECTO. 3.1 FUENTE DE LOS DATOS Los datos que se usan fueron extraídos de la encuesta de población CPS (Current Population Survey) hecha por el Departamento del Censo de los Estados Unidos (U.S. Census Bureau).. Los datos contienen variables demográficas y de empleo de los años 1992, 1993, 1994 y 1995 en los Estados Unidos. Los datos fueron extraídos a través del Sistema de Extracción de Datos (DES – Data Extraction System), interfaz web: http://blue.census.gov/des/l1.. Para cada uno de los años que se mencionaron anteriormente se tiene un archivo con sus datos.. 3.2 DATOS Dentro de los datos hay información estadística de distintas personas que fue obtenida a través de un censo. Existen aproximadamente unos 199.523 registros. Cada uno de los registros tiene la siguiente información:.

(20) ISC-2002-2-9. •. edad. •. clase de trabajador. •. código de industria. •. código de ocupación. •. ingresos totales ajustados. •. nivel de educación. •. salario por hora. •. estado civil. •. Industria. •. Ocupación. •. trabajó sobre tiempo. •. origen hispano. •. sexo. •. miembro de un sindicato. •. razón de desempleo. •. estatus de trabajo de medio tiempo o completo. •. ganancias de capital. •. pérdidas de capital. •. discapacitado o con problema de salud. •. dividendos de las acciones. •. estatus de contribuyente (impuestos). 13.

(21) ISC-2002-2-9. •. región donde vivía anteriormente. •. estado de la residencia anterior. •. vivió en esta casa hace un año. •. num. personas trabajando para el empleador. •. miembros de la familia menores de 18 años. •. total de ganancias de la persona. •. país de nacimiento del padre. •. país de nacimiento de la madre. •. país de nacimiento. •. ciudadanía. •. total de ingresos de la persona. •. cantidad de ingresos a contribuir (impuestos). •. llenó aplicación para ser admitido como veterano. •. beneficios de veterano. •. número de semanas que trabajó en el año. •. salario. 14. Los datos que se incluyen en este censo son de diferentes tipos: de texto, numéricos y booleanos entre otros.. Algunos datos como por ejemplo el estado civil cuentan con valores predeterminados, por ejemplo, casado, separado, divorciado, viudo. Otros de los.

(22) ISC-2002-2-9. 15. datos sólo son indicadores, por ejemplo el que dice si es una persona está empleada o desempleada. Otros datos, por su parte son continuos, que son los que tienen que ver en su mayoría con la información financiera, ejemplo, es sueldo por hora, las ganancias al año y la cantidad de ingresos que debe contribuir o pagar de impuestos.. En el Anexo A se presentan los valores que pueden tomar los datos con valores predeterminados en la fuente original.. 3.3 MODELAJE FORMAL DE LOS DATOS (DISEÑO LOGICO). 3.3.1 Modelo 1. Cada una de las características o datos de las personas (representadas por cada registro) se toman como una dimensión.. Data marts y dimensiones. Data Mart. Se tiene una sola fuente de los datos, por lo tanto sólo se tiene un Data Mart que equivale al censo o encuesta actual de población.. Dimensiones. Las dimensiones posibles son: Edad Industria.

(23) ISC-2002-2-9. 16. Ocupación Educación Estado Civil País de origen de la persona País de origen de la madre País de origen del padre Clase de trabajador Origen Hispano Sexo Estado de la residencia anterior Ciudadanía Año (que equivale al año en el que se realizó la encuesta o censo). Fact Table Grano de la Información. Como la información viene por registros y cada registro representa ciertos datos de una persona, el grano que se tiene en cuenta para el modelo es la persona censada.. Medidas o Facts. Las medidas o facts que se incluyen en la Fact Table representan la información financiera de las personas censadas. Las siguientes son las medidas:. Ingresos totales ajustados.

(24) ISC-2002-2-9. 17. Salario por hora Ganancias de capital Pérdidas de capital Dividendos de las acciones Total de ganancias de la persona Total de ingresos de la persona Cantidad de ingresos a pagar en impuestos. Dentro de la Fact Table se incluyen las llaves de las dimensiones y algunos datos del censo como dimensiones degeneradas:. Estatus de trabajo de medio tiempo o completo Estatus de contribuyente (impuestos) Número de semanas que trabajó en el año Vivió en esta casa hace un año Num. personas trabajando para el empleador Miembros de la familia menores de 18 años Propio negocio o independiente Llenó aplicación para ser admitido como veterano Beneficios de veterano Discapacitado o con problema de salud Trabajó sobre tiempo..

(25) ISC-2002-2-9. 18. Diagrama y detalle de la Fact Table. Figura 1. Diagrama Modelo 1.. Detalle de la Dimensiones Dim Año Nombre De Atributo Año. Descripción del Atributo El año en que se realizó la encuesta. Cardinalidad. Política de Actualización. Ejemplo de Valores. 1. No se actualiza. 1992. Cardinalidad. Política de Actualización. Ejemplo de Valores. 7. No se Actualiza. Nunca Casado. Cardinalidad. Política de Actualización. Ejemplo de Valores. 2. No se Actualiza. Masculino. Cardinalidad. Política de Actualización. Ejemplo de Valores. Dim Estado Civil Nombre De Atributo Estado Civil. Descripción del Atributo Estado civil. Dim Sexo Nombre De Atributo Sexo. Descripción del Atributo Género del encuestado. Dim País de Origen Nombre De Atributo. Descripción del Atributo.

(26) ISC-2002-2-9. 19. País. País de nacimiento de la persona. 43. No se Actualiza. Colombia. Estado. Estado dentro del país (si el país no es Estados Unidos, el estado se llama igual que el país). 96. No se Actualiza. Colombia. Descripción del Atributo. Cardinalidad. Política de Actualización. Ejemplo de Valores. País. País de nacimiento del padre de la persona. 43. No se Actualiza. Estados Unidos. Estado. Estado dentro del país (si el país no es Estados Unidos, el estado se llama igual que el país). 96. No se Actualiza. Colorado. Cardinalidad. Política de Actualización. Ejemplo de Valores. Dim País de Origen del Padre Nombre De Atributo. Dim País de Origen de la Madre Nombre De Atributo. Descripción del Atributo. País. País de nacimiento de la madre de la persona. 43. No se Actualiza. Puerto Rico. Estado. Estado dentro del país (si el país no es Estados Unidos, el estado se llama igual que el país). 96. No se Actualiza. Puerto Rico. Descripción del Atributo. Cardinalidad. Política de Actualización. Ejemplo de Valores. Dim Residencia Anterior Nombre De Atributo País. País de nacimiento de la madre de la persona. 43. No se Actualiza. Corea del Sur. Estado. Estado dentro del país (si el país no es Estados Unidos, el estado se llama igual que el país). 96. No se Actualiza. Corea del Sur. Descripción del Atributo. Cardinalidad. Política de Actualización. Ejemplo de Valores. Para qué tipo de organización trabaja. 9. No se Actualiza. Gobierno Local. Descripción del Atributo. Cardinalidad. Política de Actualización. Ejemplo de Valores. Ciudadanía, hace referencia a si es ciudadano de estados unidos o no.. 5. No se Actualiza. Extranjero, no es ciudadano de los Estados Unidos. Dim Clase de Trabajador Nombre De Atributo Clase de Trabajador. Dim Ciudadanía Nombre De Atributo. Ciudadanía.

(27) ISC-2002-2-9. 20. Dim Industria Nombre De Atributo Nombre. Descripción del Atributo. Cardinalidad. Política de Actualización. Ejemplo de Valores. 24. No se Actualiza. Minería. Cardinalidad. Política de Actualización. Ejemplo de Valores. 16. No se Actualiza. Ejecutivo. Cardinalidad. Política de Actualización. Ejemplo de Valores. 17. No se Actualiza. Graduado de Maestría. Cardinalidad. Política de Actualización. Ejemplo de Valores. 6. No se Actualiza. 21-25. Cardinalidad. Política de Actualización. Ejemplo de Valores. 10. No se Actualiza. Chicano. Industria en la que trabaja. Dim Ocupación Nombre De Atributo Ocupación. Descripción del Atributo Ocupación en la que trabaja la persona encuestada. Dim Educación Nombre De Atributo Educación. Descripción del Atributo Nivel educativo. Dim Edad Nombre De Atributo Rango edad. Descripción del Atributo Rango de edades. Dim Origen Hispano Nombre De Atributo Origen Hispano. Descripción del Atributo Que tipo de origen hispano tiene la persona. Tabla 1. Detalle de las dimensiones del modelo 1.. 3.3.2 Modelo 2. Elaboración de perfiles y minidimensiones.. Data marts y Dimensiones Data Mart. Se tiene una sola fuente de los datos, por lo tanto sólo hay un Data Mart que equivale al censo o encuesta actual de población.. Dimensiones. Las dimensiones posibles son:.

(28) ISC-2002-2-9. 21. Dimensión Demográfica. Tendría como atributos la edad, el sexo, estado civil, ciudadanía y miembros de la familia menores de 18 años y educación. Lo que se trata de hacer es combinar estos atributos para formar varias combinaciones que expresan cada una un perfil demográfico diferente. Para los datos contínuos, como por ejemplo la edad, se pueden establecer rangos, por ejemplo, menores de 18 años, entre 18 y 24, entre 24 y 35 etc. Así, el número de combinaciones es menor y se tiene una dimensión con menos registros.. Dimensión Ocupación.. Dimensión Industria.. Dimensión Año. Como se tienen datos de la encuesta de varios años, se adiciona la dimensión año (que se refiere al tiempo en que se recolectaron los datos), con el fin de hacer análisis a través del tiempo.. Dimensión geografía. Hay varios datos importantes que tienen que ver con la geografía, origen de la madre, origen del padre, origen de la persona y lugar en donde vivió hace un año entre otros. Cada uno de estos sería una dimensión aparte. Esta es la situación de las dimensiones que juegan varios roles. Esta es la dimensión geográfica pero tiene roles diferentes, entonces, en este caso, se haría una tabla física en la base de datos y se harían vistas para cada una de estas dimensiones. Dentro de las.

(29) ISC-2002-2-9. 22. dimensiones geográficas se tiene el país y también el estado y la región. Como para los otros países no se especifica el estado, se debe escoger un estado que lleva el mismo nombre del país.. Fact Table Grano de la Información. Como la información viene por registros y cada registro representa ciertos datos de una persona, el grano que se tiene en cuenta para el modelo es la persona censada.. Medidas o Facts. Las medidas o facts que se incluyen en la Fact Table representan la información financiera de las personas censadas. Las siguientes son las medidas:. Dentro de la información existen algunas medidas que no aplican para todos los registros. Si la persona es desempleada, una medida como lo es el salario de la persona por hora tampoco tiene sentido dentro del registro. Por lo tanto se propone que se hagan varias Fact Tables. Como hay datos heterogéneos, esta forma de modelar los datos, llamada familias de Fact Tables por Kimball en su libro The Data Warehouse Lifecycle Toolkit, puede solucionar el problema mencionado anteriormente.. Las Fact Tables se unen por medio de una llave a la Fact Table núcleo o principal. Las dimensiones de las que hablábamos anteriormente son dimensiones.

(30) ISC-2002-2-9. 23. conformes. Una dimensión conforme es una dimensión que significa lo mismo lo mismo con cualquier Fact Table a la que pueda estar unida.. Medidas para la Fact Table Persona. Esta es la Fact Table principal y no tiene medidas. Las medidas se encuentran en las otras Fact Tables secundarias. En esta tenemos algunas dimensiones degeneradas. Estos datos tienen sentido para cualquiera de las dos personas, ya sean empleados o desempleados. Entre ellas están: Recibe beneficios como veterano. Problema de salud o discapacitado.. Medidas para la Fact Table Trabajador. Aquí se encuentran las medidas financieras, se parece a la Fact Table del modelo uno. Ingresos totales ajustados Salario por hora Ganancias de capital Pérdidas de capital Dividendos de las acciones Total de ganancias de la persona.

(31) ISC-2002-2-9. 24. Total de ingresos de la persona. En esta Fact Table también se incluyen las siguientes dimensiones degeneradas: Estatus de trabajo tiempo medio/completo Miembro de Sindicato Trabaja Sobre tiempo Clase de Trabajador. Medidas para la Fact Table Desempleado Únicamente está la dimensión degenerada razón de desempleo..

(32) ISC-2002-2-9. 25. Diagrama y detalle de la Fact Table. Figura 2. Diagrama Modelo 2. Detalle de la Dimensiones Dim Año Nombre De Atributo Año. Descripción del Atributo El año en que se realizó la encuesta. Cardinalidad. Política de Actualización. Ejemplo de Valores. 1. No se actualiza. 1992. Dim Demográfica Nombre De Atributo Edad. Descripción del Atributo Rango de edades. Cardinalidad 6. Política de Actualización No se Actualiza. Ejemplo de Valores 21-25.

(33) ISC-2002-2-9. Estado Civil Sexo Ciudadanía. 26. Estado civil Género del encuestado Ciudadanía, hace referencia a si es ciudadano de estados unidos o no.. 7 2. No se Actualiza No se Actualiza. Nunca Casado Masculino Extranjero, no es ciudadano de los Estados Unidos. 5. No se Actualiza. Descripción del Atributo. Cardinalidad. Política de Actualización. Ejemplo de Valores. 16. No se Actualiza. Ejecutivo. Cardinalidad. Política de Actualización. Ejemplo de Valores. 24. No se Actualiza. Minería. Cardinalidad. Política de Actualización. Ejemplo de Valores. 17. No se Actualiza. Graduado de Maestría. Cardinalidad. Política de Actualización. Ejemplo de Valores. Dim Ocupación Nombre De Atributo Nombre. Ocupación en la que trabaja la persona encuestada. Dim Industria Nombre De Atributo Nombre. Descripción del Atributo Industria en la que trabaja. Dim Educación Nombre De Atributo Educación. Descripción del Atributo Nivel educativo. Dim País de Origen Nombre De Atributo. Descripción del Atributo. País. País de nacimiento de la persona. 43. No se Actualiza. Colombia. Estado. Estado dentro del país (si el país no es Estados Unidos, el estado se llama igual que el país). 96. No se Actualiza. Colombia. Descripción del Atributo. Cardinalidad. Política de Actualización. Ejemplo de Valores. País. País de nacimiento del padre de la persona. 43. No se Actualiza. Estados Unidos. Estado. Estado dentro del país (si el país no es Estados Unidos, el estado se llama igual que el país). 96. No se Actualiza. Colorado. Cardinalidad. Política de Actualización. Ejemplo de Valores. Dim País de Origen del Padre Nombre De Atributo. Dim País de Origen de la Madre Nombre De Atributo. Descripción del Atributo. País. País de naciemiento de la madre de la persona. 43. No se Actualiza. Puerto Rico. Estado. Estado dentro del país (si el país no es Estados Unidos, el estado se llama igual que el país). 96. No se Actualiza. Puerto Rico. Tabla 2. Detalle de las dimensiones del modelo 2..

(34) ISC-2002-2-9. 27. 3.4 ETL. Extracción, transformación y cargue de los datos Antes de que fueran cargados los datos se hizo un proceso de transformación que se explicará a continuación.. La información venía en un archivo de texto, y cada persona encuestada es representada por una línea dentro de ese archivo de texto, de la siguiente manera: 9900159109360103900000292104107771081004020002101000011414818829211367770 00057057057011002101 70857 60186 0 0 0 8239 0 35000 35152 0 0 0 46558 0 52 35000. Cada uno de los archivos tenía información acerca de la posición en la cual se encuentraban cada uno de los campos con la información. Por ejemplo, para la variable con código AAGE que representaba la edad se tenía la siguiente información:. Posición incial 6, longitud 2. En el registro anterior entonces, la edad sería de 59 años. De la misma manera se puede extraer la información del resto de la línea para las demás variables.. Primero, se cargó la información sin ningún tipo de cambios a tablas temporales con nombre DATOS_año donde año podría ser 1992,1993, 1994 o 1995. El cargue de esta información se hizo utilizando la aplicación SQLLDR (SQL Loader) de Oracle. En el Anexo B se encuentran los scripts utilizados para hacer el cargue.

(35) ISC-2002-2-9. 28. de los datos por medio del SQL Loader así como los archivos con las reglas utilizadas.. Una vez se tenían los datos en tablas temporales se les hizo una transformación para pasarlos a las tablas definitivas. Los motivos por los cuales se transformaron los datos son los siguientes: •. Algunos de los datos que se encontraban en los archivos originales no fueron incluídos en los modelos y por lo tanto debían ser excluidos.. •. Algunos datos fueron agregados a las encuestas de población de 1994 y 1995, por lo tanto habían datos en estos años que no eran disponibles en los de 1992 y 1993 y había que darles el un valor como el de no disponible.. •. Se introdujo una jerarquía geográfica de país y estado y había que acomodar los datos a esta jerarquía.. •. En el caso del segundo modelo propuesto, se hizo una dimensión perfil demográfico con sus respectivos valores. Por lo tanto, para había que hacer comparaciones de los datos en los campos de los archivos de texto y dependiendo de sus valores asignarles la llave correspondiente a su perfil demográfico.. A continuación se muestran los scripts con los cuales se hizo la transformación de los datos..

(36) ISC-2002-2-9. Scripts para el paso de datos de las tablas temporales al modelo 1 INSERT INTO MOD1_PERSONA SELECT Llave, AMARITL, ASEX, 4, ACLSWKR, PRCITSHP, AHGA, AMJIND, AMJOCC, AWKSTAT, CASE WHEN AAGE < 18 THEN 1 WHEN AAGE BETWEEN 18 AND 24 THEN 2 WHEN AAGE BETWEEN 25 AND 44 THEN 3 WHEN AAGE BETWEEN 45 AND 64 THEN 4 WHEN AAGE > 64 THEN 5 END, AREORGN, PEMNTVTY, PEFNTVTY, PENATVTY, AGI, CAPGAIN, CAPLOSS, DIVVAL, PEARNVAL, PTOTVAL, WKSWORK, DECODE (AUNMEM, 0, 'Not in universe', 1, 'Yes', 2, 'No'), DECODE (VETYN, 0, 'Not in universe', 1, 'Yes', 2, 'No'), DECODE (DISHP, 0, 'Not in universe', 1, 'Yes', 2, 'No'), DECODE (AUNTYPE, 0, 'Not in universe', 1, 'Job loser - on layoff', 2, 'Other job loser', 3, 'Job leaver', 4, 'Re-entrant', 5, 'New entrant') FROM DATOS_1995;. 29.

(37) ISC-2002-2-9. 30. Scripts para el paso de datos de las tablas temporales al modelo 2 INSERT INTO MOD2_PERSONA SELECT D1995.Llave, (SELECT LLAVE_PERFIL_DEMOGRAFICO FROM PERFIL_DEMOGRAFICO, (SELECT D1995_INT.LLAVE, CASE WHEN D1995_INT.AAGE < 18 THEN '< 18' WHEN D1995_INT.AAGE BETWEEN 18 AND 24 THEN '18 - 24' WHEN D1995_INT.AAGE BETWEEN 25 AND 44 THEN '25 - 44' WHEN D1995_INT.AAGE BETWEEN 45 AND 64 THEN '45 - 64' WHEN D1995_INT.AAGE > 64 THEN '> 65' END AAGE, CASE WHEN D1995_INT.ASEX = 1 THEN 'M' WHEN D1995_INT.ASEX = 2 THEN 'F' END ASEX, CASE WHEN D1995_INT.AMARITL = 1 THEN 'Married' WHEN D1995_INT.AMARITL = 2 THEN 'Married' WHEN D1995_INT.AMARITL = 3 THEN 'Married' WHEN D1995_INT.AMARITL = 4 THEN 'Widowed' WHEN D1995_INT.AMARITL = 5 THEN 'Divorced' WHEN D1995_INT.AMARITL = 6 THEN 'Separated' WHEN D1995_INT.AMARITL = 7 THEN 'Never married' END AMARITL, CASE WHEN D1995_INT.PRCITSHP = 1 THEN 'Native: Born in the United States' WHEN D1995_INT.PRCITSHP = 2 THEN 'Native: Born in Puerto Rico or U.S. Outlying' WHEN D1995_INT.PRCITSHP = 3 THEN 'Native: Born abroad of American Parents' WHEN D1995_INT.PRCITSHP = 4 THEN 'Foreign born: U.S. citizen by naturalization' WHEN D1995_INT.PRCITSHP = 5 THEN 'Foreign born: Not a citizen of U.S.' WHEN D1995_INT.PRCITSHP = 0 THEN 'NA' END PRCITSHP, CASE WHEN D1995_INT.AREORGN = 1 THEN 'Mexican-American' WHEN D1995_INT.AREORGN = 2 THEN 'Chicano' WHEN D1995_INT.AREORGN = 3 THEN 'Mexican' WHEN D1995_INT.AREORGN = 4 THEN 'Puerto Rican' WHEN D1995_INT.AREORGN = 5 THEN 'Cuban' WHEN D1995_INT.AREORGN = 6 THEN 'Central or South American' WHEN D1995_INT.AREORGN = 7 THEN 'Other Spanish' WHEN D1995_INT.AREORGN = 8 THEN 'All other' WHEN D1995_INT.AREORGN = 9 THEN 'Do not know' WHEN D1995_INT.AREORGN = 10 THEN 'NA' END AREORGN FROM DATOS_1995 D1995_INT) DATOS WHERE DATOS.AAGE = EDAD AND DATOS.ASEX = SEXO AND DATOS.AMARITL = ESTADO_CIVIL.

(38) ISC-2002-2-9. AND DATOS.PRCITSHP = CIUDADANIA AND DATOS.AREORGN = ORIGEN_HISPANO AND DATOS.LLAVE = D1995.Llave) PERFIL, 4, D1995.AHGA, D1995.AMJOCC, D1995.AMJIND, D1995.PEMNTVTY, D1995.PEFNTVTY, D1995.PENATVTY, D1995.Llave, DECODE (D1995.VETYN, 0, 'Not in universe', 1, 'Yes', 2, 'No'), DECODE (D1995.DISHP, 0, 'Not in universe', 1, 'Yes', 2, 'No') FROM DATOS_1995 D1995; /**************************************************/ PARA LA TABLA MOD2_DESEMPLEADO: INSERT INTO MOD2_DESEMPLEADO SELECT D1994.Llave, DECODE (D1994.AUNTYPE, 0, 'Not in universe', 1, 'Job loser - on layoff', 2, 'Other job loser', 3, 'Job leaver', 4, 'Re-entrant', 5, 'New entrant') FROM DATOS_1994 D1994 WHERE D1994.AUNTYPE <> 0;. /**************************************************/ PARA LA TABLA MOD2_TRABAJADOR: INSERT INTO MOD2_TRABAJADOR SELECT D1995.Llave, AGI, CAPGAIN, CAPLOSS, DIVVAL, PEARNVAL, PTOTVAL, WKSWORK, DECODE (AUNMEM, 0, 'Not in universe', 1, 'Yes', 2, 'No') FROM DATOS_1995 D1995 WHERE D1995.AUNTYPE = 0 AND D1995.WKSWORK > 0;. 31.

(39) ISC-2002-2-9. 32. Los scripts para el año de 1994 son los mismos. El de 1992 y 1993 difieren solamente en algunos campos y por eso no se incluyen.. 3.5 CONSULTAS PROPUESTAS Generalmente, cuando se está construyendo un Data Mart o una Bodega de Datos, el primer paso es evaluar el tipo de consultas que serán más frecuentes con el fin de hacer un diseño que optimice la respuesta a éstas. Como el objetivo de este proyecto es evaluar los dos modelos en diferentes tipos de consultas, se han primero propuesto los modelos y con base a las siguientes consultas será evaluada su eficiencia.. •. Consulta 1. Número de personas discriminadas por sexo.. •. Consulta 2. Número de personas discriminadas por rango de edad.. •. Consulta 3. Número de personas discriminadas por sexo y por rango de edad.. •. Consulta 4. Número de personas discriminadas por industria y por año.. •. Consulta 5. Número de personas discriminadas por ocupación y por año.. •. Consulta 6. Total de ingresos discriminados por rango de edad..

(40) ISC-2002-2-9. 33. •. Consulta 7. Promedio de ingresos discriminados por rango de edad.. •. Consulta 8. Promedio de ingresos discriminados por ocupación.. •. Consulta 9. Promedio de ingresos discriminados por industria.. •. Consulta 10. Número de personas discriminadas por ocupación, industria y año.. •. Consulta 11. Promedio de Ingresos discriminados por el origen hispano.. •. Consulta 12. Número de personas discriminadas por nivel de educación.. •. Consulta 13. Rango del nivel de educación (dependiendo del número de personas que tienen un determinado nivel de educación) por años.. •. Consulta 14. Número de personas discapacitadas por año.. •. Consulta 15. Número de sindicalistas por año.. •. Consulta 16. Número de sindicalistas por año y por Industria..

(41) ISC-2002-2-9. 34. •. Consulta 17. Número de veteranos por año.. •. Consulta 18. Número de personas discriminadas por estado civil y año.. •. Consulta 19. Número de personas discriminadas por ciudadanía.. •. Consulta 20. Número de personas discriminadas por país de origen, diferente a Estados Unidos.. •. Consulta 21. Rango de la razón de desempleo (dependiendo del número de personas que manifiesten una misma razón de desempleo.. •. Consulta 22. Crecimiento de los ingresos a través del tiempo.. •. Consulta 23. Crecimiento de las ganancias de capital a través del tiempo.. •. Consulta 24. Crecimiento del número de empleados por industria.. Como se puede observar de las consultas anteriores, el objeto de éstas no es obtener detalles específicos de las personas sino por el contrario, las medidas.

(42) ISC-2002-2-9. 35. como totales, promedio de ingresos, crecimientos, número de personas por industria etc…. 3.6 PLATAFORMA UTILIZADA Los datos fueron cargados en la base de datos Oracle 8i. La herramienta utilizada para hacer el análisis de los datos y las consultas la herramienta ROLAP, Oracle Discoverer 4. Como se mencionó anteriormente, el cargue de los datos se hizo por medio del Oracle SQL Loader.. 3.7 RESULTADOS Y ANALISIS La siguiente es la tabla comparativa de los tiempos que tomaron cada una de las consultas en cada uno de los modelos:. Consultas consulta 1 consulta 2 consulta 3 consulta 4 consulta 5 consulta 6 consulta 7 consulta 8 consulta 9 consulta 10 consulta 11 consulta 12 consulta 13 consulta 14 consulta 15 consulta 16. Tiempo de Ejecución Modelo 1 Modelo 2 00:00:08.63 00:00:09.19 00:00:08.45 00:00:09.16 00:00:13.79 00:00:09.42 00:00:14.57 00:00:13.95 00:00:14.78 00:00:13.79 00:00:06.01 00:00:13.02 00:00:05.00 00:00:10.67 00:00:06.04 00:00:10.23 00:00:05.03 00:00:11.01 00:01:06.00 00:00:50.77 00:00:05.34 00:00:11.17 00:00:14.88 00:00:13.98 00:00:14.02 00:00:13.13 00:00:03.94 00:00:02.06 00:00:03.59 00:00:05.78 00:00:04.79 00:00:05.07.

(43) ISC-2002-2-9. 36. consulta 17 consulta 18 consulta 19 consulta 20 consulta 21 consulta 22 consulta 23 consulta 24. 00:00:02.53 00:00:14.17 00:00:13.04 00:00:32.96 00:00:02.87 00:00:05.10 00:00:03.31 00:00:14.73. 00:00:02.50 00:00:14.11 00:00:14.11 00:00:12.26 00:00:00.57 00:00:10.41 00:00:06.57 00:00:15.85. Tabla 3. Tiempos de ejecución de consultas.. Otro de los resultados que se tuvieron en cuenta para hacer el análisis de cada uno de los modelos fueron la complejidad de las consultas y su eficiencia. Para analizar esto, se tuvo en cuenta el código SQL y su plan de ejecución, el cual puede ser consultado en el Anexo C.. Rapidez de las Consultas y Eficiencia Para consultas como la Número 1, 18 o 19, en la cual se accesa un solo dato del perfil demográfico (el sexo en este caso) es más rápido el modelo uno, pues accesa la tabla de persona y luego con la llave de sexo la busca en la tabla. Sin embargo, en el modelo 2, como el dato sexo se encuentra en la dimensión de perfil demográfico, la cual tiene más filas, es sólo un poco más demorado.. En la consulta 3 se puede apreciar que es más rápido el modelo 2. Esto ocurre porque se están utilizando dos datos. En el modelo 2 estos datos están en la misma tabla (perfil demográfico) y por lo tanto sólo busca en una tabla después de haber accesado la tabla persona. En el modelo 1, después de accesar la tabla persona, se debe ir a dos tablas, las correspondientes a sexo y a edad para.

(44) ISC-2002-2-9. 37. buscar las llaves correspondientes. Por lo tanto el modelo 1 es menos eficiente para este tipo de casos.. Cuando las consultas se refieren a la ocupación y la industria (consultas 4, 5, 10 y 24), información que fue modelada de la misma manera en los dos modelos, la diferencia en los tiempos de ejecución es mínima debido a que la manera en que hacen la búsqueda de la información es la misma. Lo mismo pasa con las consultas que hacen referencia al nivel de educación (Consulta 13).. Cuando se trata de las medidas financieras o de dimensiones degeneradas (por ejemplo, miembro de sindicato), las consultas en cada modelo presentan grandes diferencias. Por ejemplo, en las consultas 6, 7, 8, 9, 11, 22 y 23 en donde se tiene en cuenta el rango de edad y el promedio de ingresos. En el modelo 1, la consulta se ejecuta de manera más sencilla porque las medidas están en la Fact Table de Persona (Mod1_Persona) mientras que en el modelo 2, debe entrar a la tabla trabajador para poder accesar a las medidas financieras y también a la tabla de Persona (Mod2_Persona), aunque a esta última lo hace de manera más eficiente debido a que lo hace por medio del índice.. Complejidad de las Consultas En cuanto a la complejidad de cada una de las consultas en cada uno de los modelos, se puede apreciar (Anexo C) que aunque no hay una diferencia significativa entre los dos modelos, las consultas del modelo 1, en general, son.

(45) ISC-2002-2-9. 38. menos complicadas que las del modelo 2. Esto es lo que se esperaba si se tiene en cuenta que el modelo 1 es sencillo y no presenta una estructura de varias Fact Tables.. Las consultas del modelo 2 se hacen más complicadas debido a que tiene varias Fact Tables, y por lo tanto, hay que accesar más tablas que en el otro modelo cuando se quieren obtener datos como las medidas financieras.. En general, la diferencia de complejidad no es muy significativa entre los dos modelos..

(46) ISC-2002-2-9. 39. CONCLUSIONES Y RECOMENDACIONES. Teniendo en cuenta los resultados de la implementación de los dos modelos propuestos se llegó a las siguientes conlcusiones y recomendaciones:. Recomendaciones en cuanto a consultas (rapidez) El propósito de implementar una bodega de datos es poder hacer análisis de la información en ésta. Por esta razón, antes de implementar cualquiera de los modelos se debe analizar el tipo de consultas que será más frecuente a la hora de analizar información. En el punto de resultados se mostró cómo para algunos tipos de consultas es eficiente uno de los modelos y para otro tipo de consultas el otro modelo es más eficiente.. En general, si las consultas más frecuentes involucran medidas financieras, el modelo 1 es mucho más eficiente y rápido pues no necesita consultar sino la Fact Table de persona, mientras que el segundo modelo consulta la Fact Table de persona y de Trabajador.. Si lo que se busca es hacer consultas de tipo demográfico, el modelo dos ofrece ventajas importantes sobre el modelo 1, ya que a la hora de ejecución consulta la tabla persona y la de perfil demográfico mientras que el 1, consulta la tabla.

(47) ISC-2002-2-9. 40. persona y las tablas que se refieren a cada uno de los datos demográficos dependiendo del número de datos que se necesite. Por ejemplo, si quiero consultar edad, sexo y ciudadania en el modelo 1 debo ir a la tabla Fact Table de persona y además a cada una de las tablas de Sexo, Edad y Ciudadanía; mientras que si uso el modelo 2, solamente debo consultar la Fact Table de persona y la dimensión de Perfil Demográfico que reúne todos los campos anteriores.. En este caso, se ha separado la educación como una dimensión aparte, sin embargo, se podría incluír dentro del perfil demográfico y esto haría más eficiente el tipo de consultas de las que se habla en el punto anterior.. Recomendaciones en cuanto a consultas (dificultad de los querys) Otro factor importante a tener en cuenta a la hora de escoger uno de los dos modelos es la facilidad para elaborar los querys para las consultas.. Esto tiene cierta similitud con el punto anterior en la medida de que depende también del tipo de consultas que se esté realizando. Siempre hay que buscar las consultas más frecuentes ya que no hay un modelo que se comporte mejor que el otro en todo tipo de consultas.. Las consultas en el segundo modelo tienden a ser más complejas que en el primero ya que la tabla persona del primero se ha descompuesto en persona,.

(48) ISC-2002-2-9. 41. desempleado y trabajador. Pese a esto, la complejidad de las consultas no presenta una gran diferencia entre modelo y modelo.. Recomendaciones en cuanto a flexibilidad de cada uno de los modelos Cada uno de los modelos se implementará para cargar y analizar información estadística tomada de censos o encuestas de población. Cada año, pueden ser introducidas o eliminadas variables dependiendo de qué pueda empezar o qué deje de ser interesante para estudiar. Esto se pudo ver en los datos fuentes del proyecto. Para los años de 1994 y 1995 fueron introducidas variables como la ciudadanía y por lo tanto, estos datos no estaban en las encuestas de 1992 y 1993.. Qué pasaría en cada uno de los modelos en caso de que se quiera agregar datos nuevos a la información disponible? Qué tan flexible sería cada uno de los modelos y qué tan organizadamente podrían crecer?. El modelo 1 es más flexible en este sentido que el modelo 2.. Cuando se tratan de agregar medidas (facts) o dimensiones degeneradas el problema de crecimiento es sencillo pues se podría agregar una columna a las tablas que las almacenan (Fact Tables) y no habría problema mayor para ninguno de los dos modelos..

(49) ISC-2002-2-9. 42. El problema de crecimiento se hace más complicado cuando se trata de introducir dimensiones que representan datos estadísticos.. El modelo 1 da mayor libertad a la hora de agregar nuevos datos. El modelo 2 tiene un porblema un poco mayor y es el de la dimensión demográfica. Es más complicado agregarle nuevos datos a esta dimensión por lo siguiente: La dimensión tiene las posibles combinaciones de los datos que reúne, y sus respectivas llaves: Por ejemplo ‘llave_perfil_demografico’, '< 18', 'M', 'Married', 'NA' ,'Mexican-American' En caso de que se quiera agregar un nuevo dato, se tendría que generar y agregar todas las posibles combinaciones de estos datos ya existentes y el nuevo dato a agregar.. En el segundo modelo, hay 3000 líneas que describen los perfiles demográficos. Si quisiera agregar un dato como por ejemplo la religión al modelo, y que tuviera 4 valores para la religión, por ejemplo católico, protestante, no disponible y otra, tendría un total de 12000 líneas. Así que tendría que arreglar las existentes y agregar 9000 más.. Como el modelo 1 maneja cada uno de los datos como si fuera una dimensión independiente de las demás, sólo tendría que agregar la dimensión al modelo con los datos, y ajustar la llave en la Fact Table de persona..

(50) ISC-2002-2-9. 43. BIBLIOGRAFÍA. COREY,. Michael. and. ABBEY,. Michael.. Oracle. 8i. Data. Warehousing.. Osborne/McGraw Hill. 1999.. KIMBALL, Ralph. The Data Warehouse Lifecycle Toolkit: Expert Methods for Designing, Developing and Deploying DataWarehouses. John Wiley & Sons, Inc., 1998.. -------- The Data Warehouse Toolkit: Practical Techniques for Building Dimensional Data Warehouses. John Wiley & Sons, Inc., 1996.. LORA, Eduardo. Técnicas de Medición Económica: Metodologías y Aplicaciones en Colombia. Tercer Mundo Editores. 1994.. THOMSEN, Erik. OLAP Solutions: Building Multidimensional Information Systems. John Wiley & Sons, Inc., 2001..

(51) ISC-2002-2-9. 44. Anexo A. Valores predeterminados de algunos de los datos incluídos en la encuesta de población.. Estado civil 1 Married-civilian spouse present 2 Married-A.F spouse present 3 Married-spouse absent 4 Widowed 5 Divorced 6 Separated 7 Never married Clase de Trabajador 0 Not in universe 1 Private 2 Federal government 3 State government 4 Local government 5 Self-employed-incorporated 6 Self-employed-not incorporated 7 Without pay 8 Never worked Ciudadanía 1 Native: Born in the United States 2 Native: Born in Puerto Rico or U.S. Outlying 3 Native: Born abroad of American Parent(s) 4 Foreign born: U.S. citizen by naturalization 5 Foreign born: Not a citizen of U.S. Industria 00 Not in universe or children 01 Agriculture 02 Mining 03 Construction 04 Manufacturing-durable goods 05 Manufacturing-nondurable goods 06 Transportation 07 Communications 08 Utilities and sanitary services 09 Wholesale trade 10 Retail trade 11 Finance,insurance and real estate 12 Private household services 13 Business and repair services 14 Personal services, except private HH 15 Entertainment 16 Hospital services 17 Medical, except hospital 18 Education 19 Social services 20 Other professional services 21 Forestry and fisheries 22 Public administration 23 Armed Forces.

(52) ISC-2002-2-9. Ocupación 00 NIU/children/Armed Forces 01 Executive, admin. and managerial 02 Professional specialty 03 Technicians and related support 04 Sales 05 Adm. support, including clerical 06 Private household 07 Protective service 08 Other service 09 Precision production, craft & repair 10 Machine operators, assmblrs & inspctrs 11 Transportation and material moving 12 Handlers, equip. cleaners, etc. 13 Farming, forestry and fishing 14 Armed Forces 15 No previous experience-never worked Educación 00 Children 31 Less than 1st grade 32 1st, 2nd, 3rd, or 4th grade 33 5th or 6th grade 34 7th and 8th grade 35 9th grade 36 10th grade 37 11th grade 38 12th grade no diploma 39 High school graduate 40 Some college but no degree 41 Associates degree-occup./vocational 43 Bachelors degree(BA,AB,BS) 44 Masters degree(MA,MS,MEng,MEd,MSW,MBA) 45 Prof. school degree (MD,DDS,DVM,LLB,JD) 46 Doctorate degree(PhD,EdD) Origen Hispano 01 Mexican-American 02 Chicano 03 Mexican (Mexicano) 04 Puerto Rican 05 Cuban 06 Central or South American 07 Other Spanish 08 All other 09 Do not know Estatus de Trabajo (Medio/Completo) 0 Children or Armed Forces 1 Not in labor force 2 Full-time schedules 3 PT for econ. reasons, usually FT 4 PT for non-econ reasons, usually FT 5 PT for econ reasons, usually PT 6 Unemployed full-time 7 Unemployed part-time Razón de Desempleo 0 Not in universe 1 Job loser - on layoff 2 Other job loser 3 Job leaver 4 Re-entrant 5 New entrant Datos Geográficos País. 45.

(53) ISC-2002-2-9. 057 072 096 109 110 116 117 119 120 126 128 129 139 140 147 206 207 209 210 212 215 218 221 231 238 239 242 301 312 313 314 315 316 317 337 339 342 343 351 379 380 385 999. United States Puerto Rico Outlying U.S. (Guam, USVI, etc) France Germany Greece Hungary Ireland/Eire Italy Holand and Netherlands Poland Portugal England Scotland Yugoslavia Cambodia China Hong Kong India Iran Japan South Korea Laos Philippines Taiwan Thailand Vietnam Canada El Salvador Guatemala Honduras Mexico Nicaragua Panama Cuba Dominican Republic Haiti Jamaica Trinadad & Tobago Colombia Ecuador Peru Other. Estado 00 Not in universe, nonmover 01 Alabama 02 Alaska 04 Arizona 05 Arkansas 06 California 08 Colorado 09 Connecticut 10 Delaware 11 District of Columbia 12 Florida 13 Georgia 15 Hawaii 16 Idaho 17 Illinois 18 Indiana 19 Iowa 20 Kansas 21 Kentucky 22 Louisiana 23 Maine 24 Maryland 25 Massachusetts. 46.

(54) ISC-2002-2-9. 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 44 45 46 47 48 49 50 51 53 54 55 56 96. Michigan Minnesota Mississippi Missouri Montana Nebraska Nevada New Hampshire New Jersey New Mexico New York North Carolina North Dakota Ohio Oklahoma Oregon Pennsylvania Rhode Island South Carolina South Dakota Tennessee Texas Utah Vermont Virginia Washington West Virginia Wisconsin Wyoming Abroad. 47.

(55) ISC-2002-2-9. 48. Anexo B. Archivos de control para el cargue de los datos a tablas temporales utilizando SQL Loader.. LOAD DATA INFILE 'c:\temp\1992\box.txt' RECLEN 278 INTO TABLE DATOS_CENSO_1992 ( LLAVE "seq1992.nextval", AAGE POSITION(6:7), ACLSWKR POSITION(8:8), ADTIND POSITION(9:10), ADTOCC POSITION(11:12), AENRLW POSITION(13:13), AFAMTYP POSITION(14:14), AFTPT POSITION(15:15), AHGA POSITION(16:17), AHRSPAY POSITION(18:21), AHSCOL POSITION(22:22), AIND POSITION(23:25), AMARITL POSITION(26:26), AMJIND POSITION(27:28), AMJOCC POSITION(29:30), AOCC POSITION(31:33), AOVRTIM POSITION(34:34), ARACE POSITION(35:35), AREORGN POSITION(36:37), ASEX POSITION(38:38), AUNMEM POSITION(39:39), AUNTYPE POSITION(40:40), AUSLHRS POSITION(41:42), AVET POSITION(43:43), AWERNTF POSITION(44:44), AWHYABS POSITION(45:45), AWHYLFT POSITION(46:46), AWHYLK POSITION(47:47), AWKSTAT POSITION(48:48), DISHP POSITION(49:49), FILESTAT POSITION(50:50), FSEQ POSITION(51:52), GRINREG POSITION(53:53), GRINST POSITION(54:55), HHDFMX POSITION(56:57), HHDREL POSITION(58:58), HPOS POSITION(59:60), HSEQ POSITION(61:65), INDUSTRY POSITION(66:68), LJCW POSITION(69:69), MIGSAME POSITION(70:70), MIGSUN POSITION(71:71), NOEMP POSITION(72:72), OCCUP POSITION(73:75),.

(56) ISC-2002-2-9. 49. OIOFF POSITION(76:77), PARENT POSITION(78:78), PHFSEQ POSITION(79:80), SEOTR POSITION(81:81), VETQVA POSITION(82:82), VETYN POSITION(83:83), WEWKRS POSITION(84:84), WEXP POSITION(85:86), AFNLWGT POSITION(87:98), AGI POSITION(99:110), CAPGAIN POSITION(111:122), CAPLOSS POSITION(123:134), DIVVAL POSITION(135:146), FEDTAX POSITION(147:158), OIVAL POSITION(159:170), PEARNVAL POSITION(171:182), PTOTVAL POSITION(183:194), RTMVAL POSITION(195:206), SEMPVAL POSITION(207:218), SEVAL POSITION(219:230), TAXINC POSITION(231:242), VETVAL POSITION(243:254), WKSWORK POSITION(255:266), WSALVAL POSITION(267:278) ). Sólo se incluye la información para un año ya que para los demás años el archivo de control es muy parecido. Box.txt es el archivo de texto plano donde se encuentran los datos. Reclen indica la longitud de cada registro. Para cada uno de los campos, (x:y), indica la posición inicial (x) hasta la posición final (y) donde se encuentran los datos..

(57) ISC-2002-2-9. 50. Anexo C. Código SQL y Plan de Ejecución de las Consultas Modelo 1.. consulta 1: SELECT SEXO.SEXO, COUNT(MOD1_PERSONA.LLAVE_SEXO) FROM CBENJUM.MOD1_PERSONA MOD1_PERSONA, CBENJUM.SEXO SEXO WHERE ( ( SEXO.LLAVE_SEXO = MOD1_PERSONA.LLAVE_SEXO ) ) GROUP BY SEXO.SEXO;. plan de la consulta SELECT STATEMENT SORT GROUP BY NESTED LOOPS TABLE ACCESS FULL CBENJUM.MOD1_PERSONA TABLE ACCESS BY INDEX ROWID CBENJUM.SEXO INDEX UNIQUE SCAN CBENJUM.SEXO_PK. consulta 2: SELECT EDAD.RANGO_EDAD, COUNT(MOD1_PERSONA.LLAVE_SEXO) FROM CBENJUM.EDAD EDAD, CBENJUM.MOD1_PERSONA MOD1_PERSONA WHERE ( ( EDAD.LLAVE_EDAD = MOD1_PERSONA.LLAVE_EDAD ) ) GROUP BY EDAD.RANGO_EDAD ORDER BY COUNT(MOD1_PERSONA.LLAVE_SEXO) DESC;. plan de la consulta SELECT STATEMENT SORT ORDER BY SORT GROUP BY NESTED LOOPS TABLE ACCESS FULL CBENJUM.MOD1_PERSONA TABLE ACCESS BY INDEX ROWID CBENJUM.EDAD INDEX UNIQUE SCAN CBENJUM.EDAD_PK. consulta 3: SELECT EDAD.RANGO_EDAD, SEXO.SEXO, COUNT(MOD1_PERSONA.LLAVE_MOD1_PERSONA) FROM CBENJUM.EDAD EDAD, CBENJUM.MOD1_PERSONA MOD1_PERSONA, CBENJUM.SEXO SEXO WHERE ( ( EDAD.LLAVE_EDAD = MOD1_PERSONA.LLAVE_EDAD ) AND ( SEXO.LLAVE_SEXO = MOD1_PERSONA.LLAVE_SEXO ) ) AND ( EDAD.RANGO_EDAD <> '< 18' AND 1 = 1 ) GROUP BY EDAD.RANGO_EDAD, SEXO.SEXO;. plan de la consulta SELECT STATEMENT SORT GROUP BY FILTER NESTED LOOPS NESTED LOOPS TABLE ACCESS FULL CBENJUM.MOD1_PERSONA.

(58) ISC-2002-2-9. 51. TABLE ACCESS BY INDEX ROWID CBENJUM.SEXO INDEX UNIQUE SCAN CBENJUM.SEXO_PK TABLE ACCESS BY INDEX ROWID CBENJUM.EDAD INDEX UNIQUE SCAN CBENJUM.EDAD_PK. consulta 4: SELECT i100248 as E100248,i100277 as E100277,RATIO_TO_REPORT(( COUNT(i100280) )) OVER(PARTITION BY i100248 )*100 as E_1461,COUNT(i100280) as E100280_COUNT FROM ( SELECT LLAVE_ANO AS i100247, ANO AS i100248 FROM CBENJUM.ANO ) o100246, ( SELECT LLAVE_INDUSTRIA AS i100276, INDUSTRIA AS i100277 FROM CBENJUM.INDUSTRIA ) o100275, ( SELECT LLAVE_MOD1_PERSONA AS i100280, LLAVE_ESTADO_CIVIL AS i100281, LLAVE_SEXO AS i100282, LLAVE_ANO AS i100283, LLAVE_CLASE_TRABAJADOR AS i100284, LLAVE_CIUDADANIA AS i100285, LLAVE_EDUCACION AS i100286, LLAVE_INDUSTRIA AS i100287, LLAVE_OCUPACION AS i100288, LLAVE_ESTATUS_TRABAJO AS i100289, LLAVE_EDAD AS i100290, LLAVE_ORIGEN_HISPANO AS i100291, LLAVE_ORIGEN_MADRE AS i100292, LLAVE_ORIGEN_PADRE AS i100293, LLAVE_ORIGEN_PERSONA AS i100294, INGRESOS_TOTALES AS i100295, GANANCIAS_CAPITAL AS i100296, PERDIDAS_CAPITAL AS i100297, DIVIDENDOS_ACCIONES AS i100298, TOTAL_GANANCIAS AS i100299, TOTAL_INGRESOS AS i100300, NUMERO_SEMANAS_TRABAJADAS AS i100301, MIEMBRO_SINDICATO AS i100302, BENEFICIOS_VETERANO AS i100303, DISCAPACITADO AS i100304, RAZON_DESEMPLEO AS i100305 FROM CBENJUM.MOD1_PERSONA ) o100279 WHERE ( (i100247 = i100283) and (i100276 = i100287)) GROUP BY i100248, i100277;. plan de la consulta SELECT STATEMENT WINDOW BUFFER SORT GROUP BY NESTED LOOPS NESTED LOOPS TABLE ACCESS FULL CBENJUM.MOD1_PERSONA TABLE ACCESS BY INDEX ROWID CBENJUM.INDUSTRIA INDEX UNIQUE SCAN CBENJUM.INDUSTRIA_PK TABLE ACCESS BY INDEX ROWID CBENJUM.ANO INDEX UNIQUE SCAN CBENJUM.ANO_PK. consulta 5: SELECT i100248 as E100248,i100310 as E100310,RATIO_TO_REPORT(( COUNT(i100280) )) OVER(PARTITION BY i100248 )*100 as E_1461,COUNT(i100280) as E100280_COUNT FROM ( SELECT LLAVE_ANO AS i100247, ANO AS i100248 FROM CBENJUM.ANO ) o100246, ( SELECT LLAVE_MOD1_PERSONA AS i100280, LLAVE_ESTADO_CIVIL AS i100281, LLAVE_SEXO AS i100282, LLAVE_ANO AS i100283, LLAVE_CLASE_TRABAJADOR AS i100284, LLAVE_CIUDADANIA AS i100285, LLAVE_EDUCACION AS i100286, LLAVE_INDUSTRIA AS i100287, LLAVE_OCUPACION AS i100288, LLAVE_ESTATUS_TRABAJO AS i100289, LLAVE_EDAD AS i100290, LLAVE_ORIGEN_HISPANO AS i100291, LLAVE_ORIGEN_MADRE AS i100292, LLAVE_ORIGEN_PADRE AS i100293, LLAVE_ORIGEN_PERSONA AS i100294, INGRESOS_TOTALES AS i100295, GANANCIAS_CAPITAL AS i100296, PERDIDAS_CAPITAL AS i100297, DIVIDENDOS_ACCIONES AS i100298, TOTAL_GANANCIAS AS i100299, TOTAL_INGRESOS AS i100300, NUMERO_SEMANAS_TRABAJADAS AS i100301, MIEMBRO_SINDICATO AS i100302, BENEFICIOS_VETERANO AS i100303, DISCAPACITADO AS i100304, RAZON_DESEMPLEO AS i100305 FROM CBENJUM.MOD1_PERSONA ) o100279, ( SELECT LLAVE_OCUPACION AS i100309, OCUPACION AS i100310 FROM CBENJUM.OCUPACION ) o100308 WHERE ( (i100247 = i100283) and (i100309 = i100288)) GROUP BY i100248, i100310;. plan de la consulta: SELECT STATEMENT WINDOW BUFFER.

(59) ISC-2002-2-9. 52. SORT GROUP BY NESTED LOOPS NESTED LOOPS TABLE ACCESS FULL CBENJUM.MOD1_PERSONA TABLE ACCESS BY INDEX ROWID CBENJUM.OCUPACION INDEX UNIQUE SCAN CBENJUM.OCUPACION_PK TABLE ACCESS BY INDEX ROWID CBENJUM.ANO INDEX UNIQUE SCAN CBENJUM.ANO_PK. consulta 6: SELECT EDAD.RANGO_EDAD, SUM(MOD1_PERSONA.INGRESOS_TOTALES) FROM CBENJUM.EDAD EDAD, CBENJUM.MOD1_PERSONA MOD1_PERSONA WHERE ( ( EDAD.LLAVE_EDAD = MOD1_PERSONA.LLAVE_EDAD ) ) AND ( MOD1_PERSONA.RAZON_DESEMPLEO = 'Not in universe' ) AND ( MOD1_PERSONA.NUMERO_SEMANAS_TRABAJADAS > 0 ) GROUP BY EDAD.RANGO_EDAD ORDER BY SUM(MOD1_PERSONA.INGRESOS_TOTALES) DESC;. plan de la consulta: SELECT STATEMENT SORT ORDER BY SORT GROUP BY NESTED LOOPS TABLE ACCESS FULL CBENJUM.MOD1_PERSONA TABLE ACCESS BY INDEX ROWID CBENJUM.EDAD INDEX UNIQUE SCAN CBENJUM.EDAD_PK. consulta 7: SELECT EDAD.RANGO_EDAD, AVG(MOD1_PERSONA.INGRESOS_TOTALES) FROM CBENJUM.EDAD EDAD, CBENJUM.MOD1_PERSONA MOD1_PERSONA WHERE ( ( EDAD.LLAVE_EDAD = MOD1_PERSONA.LLAVE_EDAD ) ) AND ( MOD1_PERSONA.INGRESOS_TOTALES > 0 ) AND ( MOD1_PERSONA.RAZON_DESEMPLEO = 'Not in universe' ) AND ( MOD1_PERSONA.NUMERO_SEMANAS_TRABAJADAS > 0 ) GROUP BY EDAD.RANGO_EDAD ORDER BY AVG(MOD1_PERSONA.INGRESOS_TOTALES) DESC;. plan de la consulta SELECT STATEMENT SORT ORDER BY SORT GROUP BY NESTED LOOPS TABLE ACCESS FULL CBENJUM.MOD1_PERSONA TABLE ACCESS BY INDEX ROWID CBENJUM.EDAD INDEX UNIQUE SCAN CBENJUM.EDAD_PK. consulta 8: SELECT OCUPACION.OCUPACION, AVG(MOD1_PERSONA.INGRESOS_TOTALES) FROM CBENJUM.MOD1_PERSONA MOD1_PERSONA, CBENJUM.OCUPACION OCUPACION WHERE ( ( OCUPACION.LLAVE_OCUPACION = MOD1_PERSONA.LLAVE_OCUPACION ) ) AND ( MOD1_PERSONA.INGRESOS_TOTALES > 0 ) AND ( MOD1_PERSONA.LLAVE_OCUPACION = OCUPACION.LLAVE_OCUPACION ) AND ( MOD1_PERSONA.RAZON_DESEMPLEO = 'Not in universe' ) AND ( MOD1_PERSONA.NUMERO_SEMANAS_TRABAJADAS > 0 ) GROUP BY OCUPACION.OCUPACION ORDER BY AVG(MOD1_PERSONA.INGRESOS_TOTALES) DESC;. plan de la consulta SELECT STATEMENT.

(60) ISC-2002-2-9. SORT ORDER BY SORT GROUP BY NESTED LOOPS TABLE ACCESS FULL CBENJUM.MOD1_PERSONA TABLE ACCESS BY INDEX ROWID CBENJUM.OCUPACION INDEX UNIQUE SCAN CBENJUM.OCUPACION_PK. consulta 9: SELECT INDUSTRIA.INDUSTRIA, AVG(MOD1_PERSONA.INGRESOS_TOTALES) FROM CBENJUM.INDUSTRIA INDUSTRIA, CBENJUM.MOD1_PERSONA MOD1_PERSONA WHERE ( ( INDUSTRIA.LLAVE_INDUSTRIA = MOD1_PERSONA.LLAVE_INDUSTRIA ) ) AND ( MOD1_PERSONA.INGRESOS_TOTALES > 0 ) AND ( MOD1_PERSONA.RAZON_DESEMPLEO = 'Not in universe' ) AND ( MOD1_PERSONA.NUMERO_SEMANAS_TRABAJADAS > 0 ) GROUP BY INDUSTRIA.INDUSTRIA ORDER BY AVG(MOD1_PERSONA.INGRESOS_TOTALES) DESC;. plan de la consulta SELECT STATEMENT SORT ORDER BY SORT GROUP BY NESTED LOOPS TABLE ACCESS FULL CBENJUM.MOD1_PERSONA TABLE ACCESS BY INDEX ROWID CBENJUM.INDUSTRIA INDEX UNIQUE SCAN CBENJUM.INDUSTRIA_PK. consulta 10: SELECT ANO.ANO, INDUSTRIA.INDUSTRIA, OCUPACION.OCUPACION, COUNT(MOD1_PERSONA.LLAVE_MOD1_PERSONA) FROM CBENJUM.ANO ANO, CBENJUM.INDUSTRIA INDUSTRIA, CBENJUM.MOD1_PERSONA MOD1_PERSONA, CBENJUM.OCUPACION OCUPACION WHERE ( ( ANO.LLAVE_ANO = MOD1_PERSONA.LLAVE_ANO ) AND ( INDUSTRIA.LLAVE_INDUSTRIA = MOD1_PERSONA.LLAVE_INDUSTRIA ) AND ( OCUPACION.LLAVE_OCUPACION = MOD1_PERSONA.LLAVE_OCUPACION ) ) GROUP BY ANO.ANO, INDUSTRIA.INDUSTRIA, OCUPACION.OCUPACION;. plan de la consulta SELECT STATEMENT SORT GROUP BY NESTED LOOPS NESTED LOOPS NESTED LOOPS TABLE ACCESS FULL CBENJUM.MOD1_PERSONA TABLE ACCESS BY INDEX ROWID CBENJUM.OCUPACION INDEX UNIQUE SCAN CBENJUM.OCUPACION_PK TABLE ACCESS BY INDEX ROWID CBENJUM.INDUSTRIA INDEX UNIQUE SCAN CBENJUM.INDUSTRIA_PK TABLE ACCESS BY INDEX ROWID CBENJUM.ANO INDEX UNIQUE SCAN CBENJUM.ANO_PK. consulta 11: SELECT ORIGEN_HISPANO.ORIGEN_HISPANO, AVG(MOD1_PERSONA.INGRESOS_TOTALES) FROM CBENJUM.MOD1_PERSONA MOD1_PERSONA, CBENJUM.ORIGEN_HISPANO ORIGEN_HISPANO WHERE ( ( ORIGEN_HISPANO.LLAVE_ORIGEN_HISPANO = MOD1_PERSONA.LLAVE_ORIGEN_HISPANO ) ) AND ( MOD1_PERSONA.INGRESOS_TOTALES > 0 ) AND ( MOD1_PERSONA.LLAVE_ORIGEN_HISPANO = ORIGEN_HISPANO.LLAVE_ORIGEN_HISPANO ) AND ( MOD1_PERSONA.RAZON_DESEMPLEO = 'Not in universe' ) AND ( MOD1_PERSONA.NUMERO_SEMANAS_TRABAJADAS > 0 ) GROUP BY ORIGEN_HISPANO.ORIGEN_HISPANO. 53.

(61) ISC-2002-2-9. 54. ORDER BY AVG(MOD1_PERSONA.INGRESOS_TOTALES) DESC;. plan de la consulta SELECT STATEMENT SORT ORDER BY SORT GROUP BY NESTED LOOPS TABLE ACCESS FULL CBENJUM.MOD1_PERSONA TABLE ACCESS BY INDEX ROWID CBENJUM.ORIGEN_HISPANO INDEX UNIQUE SCAN CBENJUM.ORIGEN_HISPANO_PK. consulta 12: SELECT i100020 as E100020,i100036 as E100036,RATIO_TO_REPORT(( COUNT(i100056) )) OVER(PARTITION BY i100020 )*100 as E_1458,COUNT(i100056) as E100056_COUNT FROM ( SELECT LLAVE_ANO AS i100019, ANO AS i100020 FROM CBENJUM.ANO ) o100018, ( SELECT LLAVE_EDUCACION AS i100035, NIVEL_EDUCACION AS i100036 FROM CBENJUM.EDUCACION ) o100034, ( SELECT LLAVE_MOD1_PERSONA AS i100056, LLAVE_ESTADO_CIVIL AS i100057, LLAVE_SEXO AS i100058, LLAVE_ANO AS i100059, LLAVE_CLASE_TRABAJADOR AS i100060, LLAVE_CIUDADANIA AS i100061, LLAVE_EDUCACION AS i100062, LLAVE_INDUSTRIA AS i100063, LLAVE_OCUPACION AS i100064, LLAVE_ESTATUS_TRABAJO AS i100065, LLAVE_EDAD AS i100066, LLAVE_ORIGEN_HISPANO AS i100067, LLAVE_ORIGEN_MADRE AS i100068, LLAVE_ORIGEN_PADRE AS i100069, LLAVE_ORIGEN_PERSONA AS i100070, INGRESOS_TOTALES AS i100071, GANANCIAS_CAPITAL AS i100072, PERDIDAS_CAPITAL AS i100073, DIVIDENDOS_ACCIONES AS i100074, TOTAL_GANANCIAS AS i100075, TOTAL_INGRESOS AS i100076, NUMERO_SEMANAS_TRABAJADAS AS i100077, MIEMBRO_SINDICATO AS i100078, BENEFICIOS_VETERANO AS i100079, DISCAPACITADO AS i100080, RAZON_DESEMPLEO AS i100081 FROM CBENJUM.MOD1_PERSONA ) o100055 WHERE ( (i100019 = i100059) and (i100035 = i100062)) GROUP BY i100020, i100036;. plan de la consulta SELECT STATEMENT WINDOW BUFFER SORT GROUP BY NESTED LOOPS NESTED LOOPS TABLE ACCESS FULL CBENJUM.MOD1_PERSONA TABLE ACCESS BY INDEX ROWID CBENJUM.EDUCACION INDEX UNIQUE SCAN CBENJUM.EDUCACION_PK TABLE ACCESS BY INDEX ROWID CBENJUM.ANO INDEX UNIQUE SCAN CBENJUM.ANO_PK. consulta 13: SELECT i100020 as E100020,i100036 as E100036,RANK() OVER(PARTITION BY i100020 ORDER BY ( COUNT(i100056) ) DESC ) as E_1464 FROM ( SELECT LLAVE_ANO AS i100019, ANO AS i100020 FROM CBENJUM.ANO ) o100018, ( SELECT LLAVE_EDUCACION AS i100035, NIVEL_EDUCACION AS i100036 FROM CBENJUM.EDUCACION ) o100034, ( SELECT LLAVE_MOD1_PERSONA AS i100056, LLAVE_ESTADO_CIVIL AS i100057, LLAVE_SEXO AS i100058, LLAVE_ANO AS i100059, LLAVE_CLASE_TRABAJADOR AS i100060, LLAVE_CIUDADANIA AS i100061, LLAVE_EDUCACION AS i100062, LLAVE_INDUSTRIA AS i100063, LLAVE_OCUPACION AS i100064, LLAVE_ESTATUS_TRABAJO AS i100065, LLAVE_EDAD AS i100066, LLAVE_ORIGEN_HISPANO AS i100067, LLAVE_ORIGEN_MADRE AS i100068, LLAVE_ORIGEN_PADRE AS i100069, LLAVE_ORIGEN_PERSONA AS i100070, INGRESOS_TOTALES AS i100071, GANANCIAS_CAPITAL AS i100072, PERDIDAS_CAPITAL AS i100073, DIVIDENDOS_ACCIONES AS i100074, TOTAL_GANANCIAS AS i100075, TOTAL_INGRESOS AS i100076, NUMERO_SEMANAS_TRABAJADAS AS i100077, MIEMBRO_SINDICATO AS i100078, BENEFICIOS_VETERANO AS i100079, DISCAPACITADO AS i100080, RAZON_DESEMPLEO AS i100081 FROM CBENJUM.MOD1_PERSONA ) o100055 WHERE ( (i100019 = i100059).

(62) ISC-2002-2-9. 55. and (i100035 = i100062)) GROUP BY i100020, i100036 ORDER BY i100020 ASC , E_1464 ASC;. plan de la consulta SELECT STATEMENT WINDOW SORT SORT GROUP BY NESTED LOOPS NESTED LOOPS TABLE ACCESS FULL CBENJUM.MOD1_PERSONA TABLE ACCESS BY INDEX ROWID CBENJUM.EDUCACION INDEX UNIQUE SCAN CBENJUM.EDUCACION_PK TABLE ACCESS BY INDEX ROWID CBENJUM.ANO INDEX UNIQUE SCAN CBENJUM.ANO_PK. consulta 14: SELECT ANO.ANO, COUNT(MOD1_PERSONA.LLAVE_MOD1_PERSONA) FROM CBENJUM.ANO ANO, CBENJUM.MOD1_PERSONA MOD1_PERSONA WHERE ( ( ANO.LLAVE_ANO = MOD1_PERSONA.LLAVE_ANO ) ) AND ( MOD1_PERSONA.DISCAPACITADO = 'Yes' AND 1 = 1 ) GROUP BY ANO.ANO;. plan de la consulta SELECT STATEMENT SORT GROUP BY FILTER NESTED LOOPS TABLE ACCESS FULL CBENJUM.MOD1_PERSONA TABLE ACCESS BY INDEX ROWID CBENJUM.ANO INDEX UNIQUE SCAN CBENJUM.ANO_PK. consulta 15: SELECT ANO.ANO, COUNT(MOD1_PERSONA.LLAVE_MOD1_PERSONA) FROM CBENJUM.ANO ANO, CBENJUM.MOD1_PERSONA MOD1_PERSONA WHERE ( ( ANO.LLAVE_ANO = MOD1_PERSONA.LLAVE_ANO ) ) AND ( MOD1_PERSONA.MIEMBRO_SINDICATO = 'Yes' ) AND ( MOD1_PERSONA.RAZON_DESEMPLEO = 'Not in universe' ) AND ( MOD1_PERSONA.NUMERO_SEMANAS_TRABAJADAS > 0 ) GROUP BY ANO.ANO;. plan de la consulta SELECT STATEMENT SORT GROUP BY NESTED LOOPS TABLE ACCESS FULL CBENJUM.MOD1_PERSONA TABLE ACCESS BY INDEX ROWID CBENJUM.ANO INDEX UNIQUE SCAN CBENJUM.ANO_PK. consulta 16: SELECT i100020 as E100020,i100053 as E100053,RATIO_TO_REPORT(( COUNT(i100056) )) OVER(PARTITION BY i100020 )*100 as E_1418,COUNT(i100056) as E100056_COUNT FROM ( SELECT LLAVE_ANO AS i100019, ANO AS i100020 FROM CBENJUM.ANO ) o100018, ( SELECT LLAVE_INDUSTRIA AS i100052, INDUSTRIA AS i100053 FROM CBENJUM.INDUSTRIA ) o100051, ( SELECT LLAVE_MOD1_PERSONA AS i100056, LLAVE_ESTADO_CIVIL AS i100057, LLAVE_SEXO AS i100058, LLAVE_ANO AS i100059, LLAVE_CLASE_TRABAJADOR AS i100060, LLAVE_CIUDADANIA AS i100061, LLAVE_EDUCACION AS i100062, LLAVE_INDUSTRIA AS i100063, LLAVE_OCUPACION AS i100064,.

(63) ISC-2002-2-9. 56. LLAVE_ESTATUS_TRABAJO AS i100065, LLAVE_EDAD AS i100066, LLAVE_ORIGEN_HISPANO AS i100067, LLAVE_ORIGEN_MADRE AS i100068, LLAVE_ORIGEN_PADRE AS i100069, LLAVE_ORIGEN_PERSONA AS i100070, INGRESOS_TOTALES AS i100071, GANANCIAS_CAPITAL AS i100072, PERDIDAS_CAPITAL AS i100073, DIVIDENDOS_ACCIONES AS i100074, TOTAL_GANANCIAS AS i100075, TOTAL_INGRESOS AS i100076, NUMERO_SEMANAS_TRABAJADAS AS i100077, MIEMBRO_SINDICATO AS i100078, BENEFICIOS_VETERANO AS i100079, DISCAPACITADO AS i100080, RAZON_DESEMPLEO AS i100081 FROM CBENJUM.MOD1_PERSONA ) o100055 WHERE ( (i100019 = i100059) and (i100052 = i100063)) AND (o100055.i100078 = 'Yes') GROUP BY i100020, i100053;. plan de la consulta SELECT STATEMENT WINDOW BUFFER SORT GROUP BY NESTED LOOPS NESTED LOOPS TABLE ACCESS FULL CBENJUM.MOD1_PERSONA TABLE ACCESS BY INDEX ROWID CBENJUM.INDUSTRIA INDEX UNIQUE SCAN CBENJUM.INDUSTRIA_PK TABLE ACCESS BY INDEX ROWID CBENJUM.ANO INDEX UNIQUE SCAN CBENJUM.ANO_PK. consulta 17: SELECT ANO.ANO, COUNT(MOD1_PERSONA.LLAVE_MOD1_PERSONA) FROM CBENJUM.ANO ANO, CBENJUM.MOD1_PERSONA MOD1_PERSONA WHERE ( ( ANO.LLAVE_ANO = MOD1_PERSONA.LLAVE_ANO ) ) AND ( MOD1_PERSONA.BENEFICIOS_VETERANO = 'Yes' AND 1 = 1 ) GROUP BY ANO.ANO;. plan de la consulta SELECT STATEMENT SORT GROUP BY FILTER NESTED LOOPS TABLE ACCESS FULL CBENJUM.MOD1_PERSONA TABLE ACCESS BY INDEX ROWID CBENJUM.ANO INDEX UNIQUE SCAN CBENJUM.ANO_PK. consulta 18: SELECT ANO.ANO, ESTADO_CIVIL.ESTADO_CIVIL, COUNT(MOD1_PERSONA.LLAVE_MOD1_PERSONA) FROM CBENJUM.ANO ANO, CBENJUM.ESTADO_CIVIL ESTADO_CIVIL, CBENJUM.MOD1_PERSONA MOD1_PERSONA WHERE ( ( ANO.LLAVE_ANO = MOD1_PERSONA.LLAVE_ANO ) AND ( ESTADO_CIVIL.LLAVE_ESTADO_CIVIL = MOD1_PERSONA.LLAVE_ESTADO_CIVIL ) ) GROUP BY ANO.ANO, ESTADO_CIVIL.ESTADO_CIVIL;. plan de la consulta SELECT STATEMENT SORT GROUP BY NESTED LOOPS NESTED LOOPS TABLE ACCESS FULL CBENJUM.MOD1_PERSONA TABLE ACCESS BY INDEX ROWID CBENJUM.ESTADO_CIVIL INDEX UNIQUE SCAN CBENJUM.ESTADO_CIVIL_PK TABLE ACCESS BY INDEX ROWID CBENJUM.ANO INDEX UNIQUE SCAN CBENJUM.ANO_PK.

(64) ISC-2002-2-9. 57. consulta 19: SELECT ANO.ANO, CIUDADANIA.CIUDADANIA, COUNT(MOD1_PERSONA.LLAVE_MOD1_PERSONA) FROM CBENJUM.ANO ANO, CBENJUM.CIUDADANIA CIUDADANIA, CBENJUM.MOD1_PERSONA MOD1_PERSONA WHERE ( ( ANO.LLAVE_ANO = MOD1_PERSONA.LLAVE_ANO ) AND ( CIUDADANIA.LLAVE_CIUDADANIA = MOD1_PERSONA.LLAVE_CIUDADANIA ) ) GROUP BY ANO.ANO, CIUDADANIA.CIUDADANIA;. plan de la consulta SELECT STATEMENT SORT GROUP BY NESTED LOOPS NESTED LOOPS TABLE ACCESS FULL CBENJUM.MOD1_PERSONA TABLE ACCESS BY INDEX ROWID CBENJUM.CIUDADANIA INDEX UNIQUE SCAN CBENJUM.CIUDADANIA_PK TABLE ACCESS BY INDEX ROWID CBENJUM.ANO INDEX UNIQUE SCAN CBENJUM.ANO_PK. consulta 20: SELECT i100020 as E100020,i100048 as E100048,i100049 as E100049,RANK() OVER(PARTITION BY i100020 ORDER BY ( COUNT(i100056) ) DESC ) as E_21,COUNT(i100056) as E100056_COUNT FROM ( SELECT LLAVE_ANO AS i100019, ANO AS i100020 FROM CBENJUM.ANO ) o100018, ( SELECT LLAVE_GEOGRAFIA AS i100047, PAIS AS i100048, ESTADO AS i100049 FROM CBENJUM.GEOGRAFIA ) o100046, ( SELECT LLAVE_MOD1_PERSONA AS i100056, LLAVE_ESTADO_CIVIL AS i100057, LLAVE_SEXO AS i100058, LLAVE_ANO AS i100059, LLAVE_CLASE_TRABAJADOR AS i100060, LLAVE_CIUDADANIA AS i100061, LLAVE_EDUCACION AS i100062, LLAVE_INDUSTRIA AS i100063, LLAVE_OCUPACION AS i100064, LLAVE_ESTATUS_TRABAJO AS i100065, LLAVE_EDAD AS i100066, LLAVE_ORIGEN_HISPANO AS i100067, LLAVE_ORIGEN_MADRE AS i100068, LLAVE_ORIGEN_PADRE AS i100069, LLAVE_ORIGEN_PERSONA AS i100070, INGRESOS_TOTALES AS i100071, GANANCIAS_CAPITAL AS i100072, PERDIDAS_CAPITAL AS i100073, DIVIDENDOS_ACCIONES AS i100074, TOTAL_GANANCIAS AS i100075, TOTAL_INGRESOS AS i100076, NUMERO_SEMANAS_TRABAJADAS AS i100077, MIEMBRO_SINDICATO AS i100078, BENEFICIOS_VETERANO AS i100079, DISCAPACITADO AS i100080, RAZON_DESEMPLEO AS i100081 FROM CBENJUM.MOD1_PERSONA ) o100055 WHERE ( (i100019 = i100059) and (i100047 = i100070)) AND (o100046.i100048 <> 'United States') AND (o100018.i100020 <> '1992') AND (o100018.i100020 <> '1993') GROUP BY i100020, i100048, i100049;. plan de la consulta SELECT STATEMENT WINDOW SORT SORT GROUP BY NESTED LOOPS NESTED LOOPS TABLE ACCESS FULL CBENJUM.MOD1_PERSONA TABLE ACCESS BY INDEX ROWID CBENJUM.GEOGRAFIA INDEX UNIQUE SCAN CBENJUM.GEOGRAFIA_PK TABLE ACCESS BY INDEX ROWID CBENJUM.ANO INDEX UNIQUE SCAN CBENJUM.ANO_PK. consulta 21: SELECT i100081 as E100081,RANK() OVER(ORDER BY ( COUNT(i100081) ) DESC ) as E_1515 FROM ( SELECT LLAVE_MOD1_PERSONA AS i100056, LLAVE_ESTADO_CIVIL AS i100057, LLAVE_SEXO AS i100058, LLAVE_ANO AS i100059, LLAVE_CLASE_TRABAJADOR AS i100060, LLAVE_CIUDADANIA AS i100061, LLAVE_EDUCACION AS i100062, LLAVE_INDUSTRIA AS i100063, LLAVE_OCUPACION AS i100064,.

Figure

Actualización...

Referencias

Actualización...

Related subjects :