76
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

EVALUACIÓN DE MODELOS DIMENSIONALES ... - Uniandes

  • Upload
    others

  • View
    3

  • Download
    0

Embed Size (px)

Citation preview

Page 1: EVALUACIÓN DE MODELOS DIMENSIONALES ... - Uniandes

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

Page 2: EVALUACIÓN DE MODELOS DIMENSIONALES ... - Uniandes

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

Page 3: EVALUACIÓN DE MODELOS DIMENSIONALES ... - Uniandes

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

Page 4: EVALUACIÓN DE MODELOS DIMENSIONALES ... - Uniandes

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

Page 5: EVALUACIÓN DE MODELOS DIMENSIONALES ... - Uniandes

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

Page 6: EVALUACIÓN DE MODELOS DIMENSIONALES ... - Uniandes

LISTA DE FIGURAS

Pág

Figura 1. Diagrama modelo 1 18

Figura 2. Diagrama modelo 2 25

Page 7: EVALUACIÓN DE MODELOS DIMENSIONALES ... - Uniandes

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. 48

Anexo C. Código SQL y Plan de Ejecución de las Consultas 50

Page 8: EVALUACIÓN DE MODELOS DIMENSIONALES ... - Uniandes

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.

Page 9: EVALUACIÓN DE MODELOS DIMENSIONALES ... - Uniandes

ISC-2002-2-9

2

OBJETIVO GENERAL

El objetivo general del presente proyecto es evaluar diferentes alternativas de

modelaje dimensional para datos estadísticos.

Page 10: EVALUACIÓN DE MODELOS DIMENSIONALES ... - Uniandes

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.

Page 11: EVALUACIÓN DE MODELOS DIMENSIONALES ... - Uniandes

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.

Page 12: EVALUACIÓN DE MODELOS DIMENSIONALES ... - Uniandes

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

Page 13: EVALUACIÓN DE MODELOS DIMENSIONALES ... - Uniandes

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.

Page 14: EVALUACIÓN DE MODELOS DIMENSIONALES ... - Uniandes

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.

Page 15: EVALUACIÓN DE MODELOS DIMENSIONALES ... - Uniandes

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.

Page 16: EVALUACIÓN DE MODELOS DIMENSIONALES ... - Uniandes

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

Page 17: EVALUACIÓN DE MODELOS DIMENSIONALES ... - Uniandes

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.

Page 18: EVALUACIÓN DE MODELOS DIMENSIONALES ... - Uniandes

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.

Page 19: EVALUACIÓN DE MODELOS DIMENSIONALES ... - Uniandes

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:

Page 20: EVALUACIÓN DE MODELOS DIMENSIONALES ... - Uniandes

ISC-2002-2-9

13

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

Page 21: EVALUACIÓN DE MODELOS DIMENSIONALES ... - Uniandes

ISC-2002-2-9

14

• 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

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

Page 22: EVALUACIÓN DE MODELOS DIMENSIONALES ... - Uniandes

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

Page 23: EVALUACIÓN DE MODELOS DIMENSIONALES ... - Uniandes

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

Page 24: EVALUACIÓN DE MODELOS DIMENSIONALES ... - Uniandes

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.

Page 25: EVALUACIÓN DE MODELOS DIMENSIONALES ... - Uniandes

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 Descripción del Atributo Cardinalidad Política de Actualización Ejemplo de Valores

Año El año en que se realizó la encuesta 1 No se actualiza 1992

Dim Estado Civil

Nombre De Atributo Descripción del Atributo Cardinalidad Política de Actualización Ejemplo de Valores

Estado Civil Estado civil 7 No se Actualiza Nunca Casado

Dim Sexo

Nombre De Atributo Descripción del Atributo Cardinalidad Política de Actualización Ejemplo de Valores

Sexo Género del encuestado 2 No se Actualiza Masculino

Dim País de Origen

Nombre De Atributo Descripción del Atributo Cardinalidad Política de Actualización Ejemplo de Valores

Page 26: EVALUACIÓN DE MODELOS DIMENSIONALES ... - Uniandes

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

Dim País de Origen del Padre

Nombre De Atributo 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

Dim País de Origen de la Madre

Nombre De Atributo Descripción del Atributo Cardinalidad Política de Actualización Ejemplo de Valores

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

Dim Residencia Anterior

Nombre De Atributo Descripción del Atributo Cardinalidad Política de Actualización Ejemplo de Valores

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

Dim Clase de Trabajador

Nombre De Atributo Descripción del Atributo Cardinalidad Política de Actualización Ejemplo de Valores

Clase de Trabajador Para qué tipo de organización trabaja 9 No se Actualiza Gobierno Local

Dim Ciudadanía

Nombre De Atributo Descripción del Atributo Cardinalidad Política de Actualización Ejemplo de Valores

Ciudadanía 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

Page 27: EVALUACIÓN DE MODELOS DIMENSIONALES ... - Uniandes

ISC-2002-2-9

20

Dim Industria

Nombre De Atributo Descripción del Atributo Cardinalidad Política de Actualización Ejemplo de Valores

Nombre Industria en la que trabaja 24 No se Actualiza Minería

Dim Ocupación

Nombre De Atributo Descripción del Atributo Cardinalidad Política de Actualización Ejemplo de Valores

Ocupación Ocupación en la que trabaja la persona encuestada 16 No se Actualiza Ejecutivo

Dim Educación

Nombre De Atributo Descripción del Atributo Cardinalidad Política de Actualización Ejemplo de Valores

Educación Nivel educativo 17 No se Actualiza Graduado de Maestría

Dim Edad

Nombre De Atributo Descripción del Atributo Cardinalidad Política de Actualización Ejemplo de Valores

Rango edad Rango de edades 6 No se Actualiza 21-25

Dim Origen Hispano

Nombre De Atributo Descripción del Atributo Cardinalidad Política de Actualización Ejemplo de Valores

Origen Hispano Que tipo de origen hispano tiene la persona 10 No se Actualiza Chicano

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:

Page 28: EVALUACIÓN DE MODELOS DIMENSIONALES ... - Uniandes

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

Page 29: EVALUACIÓN DE MODELOS DIMENSIONALES ... - Uniandes

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

Page 30: EVALUACIÓN DE MODELOS DIMENSIONALES ... - Uniandes

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

Page 31: EVALUACIÓN DE MODELOS DIMENSIONALES ... - Uniandes

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.

Page 32: EVALUACIÓN DE MODELOS DIMENSIONALES ... - Uniandes

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 Descripción del Atributo Cardinalidad Política de Actualización Ejemplo de Valores

Año El año en que se realizó la encuesta 1 No se actualiza 1992

Dim Demográfica

Nombre De Atributo Descripción del Atributo Cardinalidad Política de Actualización Ejemplo de Valores

Edad Rango de edades 6 No se Actualiza 21-25

Page 33: EVALUACIÓN DE MODELOS DIMENSIONALES ... - Uniandes

ISC-2002-2-9

26

Estado Civil Estado civil 7 No se Actualiza Nunca Casado Sexo Género del encuestado 2 No se Actualiza Masculino

Ciudadanía 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 Ocupación

Nombre De Atributo Descripción del Atributo Cardinalidad Política de Actualización Ejemplo de Valores

Nombre Ocupación en la que trabaja la persona encuestada 16 No se Actualiza Ejecutivo

Dim Industria

Nombre De Atributo Descripción del Atributo Cardinalidad Política de Actualización Ejemplo de Valores

Nombre Industria en la que trabaja 24 No se Actualiza Minería

Dim Educación

Nombre De Atributo Descripción del Atributo Cardinalidad Política de Actualización Ejemplo de Valores

Educación Nivel educativo 17 No se Actualiza Graduado de Maestría

Dim País de Origen

Nombre De Atributo Descripción del Atributo Cardinalidad Política de Actualización Ejemplo de Valores

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

Dim País de Origen del Padre

Nombre De Atributo 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

Dim País de Origen de la Madre

Nombre De Atributo Descripción del Atributo Cardinalidad Política de Actualización Ejemplo de Valores

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.

Page 34: EVALUACIÓN DE MODELOS DIMENSIONALES ... - Uniandes

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:

990015910936010390000029210410777108100402000210100001141481882921136777000057057057011002101 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

Page 35: EVALUACIÓN DE MODELOS DIMENSIONALES ... - Uniandes

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.

Page 36: EVALUACIÓN DE MODELOS DIMENSIONALES ... - Uniandes

ISC-2002-2-9

29

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;

Page 37: EVALUACIÓN DE MODELOS DIMENSIONALES ... - Uniandes

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

Page 38: EVALUACIÓN DE MODELOS DIMENSIONALES ... - Uniandes

ISC-2002-2-9

31

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;

Page 39: EVALUACIÓN DE MODELOS DIMENSIONALES ... - Uniandes

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.

Page 40: EVALUACIÓN DE MODELOS DIMENSIONALES ... - Uniandes

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.

Page 41: EVALUACIÓN DE MODELOS DIMENSIONALES ... - Uniandes

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

Page 42: EVALUACIÓN DE MODELOS DIMENSIONALES ... - Uniandes

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:

Tiempo de Ejecución Consultas Modelo 1 Modelo 2

consulta 1 00:00:08.63 00:00:09.19 consulta 2 00:00:08.45 00:00:09.16 consulta 3 00:00:13.79 00:00:09.42 consulta 4 00:00:14.57 00:00:13.95 consulta 5 00:00:14.78 00:00:13.79 consulta 6 00:00:06.01 00:00:13.02 consulta 7 00:00:05.00 00:00:10.67 consulta 8 00:00:06.04 00:00:10.23 consulta 9 00:00:05.03 00:00:11.01 consulta 10 00:01:06.00 00:00:50.77 consulta 11 00:00:05.34 00:00:11.17 consulta 12 00:00:14.88 00:00:13.98 consulta 13 00:00:14.02 00:00:13.13 consulta 14 00:00:03.94 00:00:02.06 consulta 15 00:00:03.59 00:00:05.78 consulta 16 00:00:04.79 00:00:05.07

Page 43: EVALUACIÓN DE MODELOS DIMENSIONALES ... - Uniandes

ISC-2002-2-9

36

consulta 17 00:00:02.53 00:00:02.50 consulta 18 00:00:14.17 00:00:14.11 consulta 19 00:00:13.04 00:00:14.11 consulta 20 00:00:32.96 00:00:12.26 consulta 21 00:00:02.87 00:00:00.57 consulta 22 00:00:05.10 00:00:10.41 consulta 23 00:00:03.31 00:00:06.57 consulta 24 00:00:14.73 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

Page 44: EVALUACIÓN DE MODELOS DIMENSIONALES ... - Uniandes

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

Page 45: EVALUACIÓN DE MODELOS DIMENSIONALES ... - Uniandes

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.

Page 46: EVALUACIÓN DE MODELOS DIMENSIONALES ... - Uniandes

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

Page 47: EVALUACIÓN DE MODELOS DIMENSIONALES ... - Uniandes

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,

Page 48: EVALUACIÓN DE MODELOS DIMENSIONALES ... - Uniandes

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.

Page 49: EVALUACIÓN DE MODELOS DIMENSIONALES ... - Uniandes

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.

Page 50: EVALUACIÓN DE MODELOS DIMENSIONALES ... - Uniandes

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.

Page 51: EVALUACIÓN DE MODELOS DIMENSIONALES ... - Uniandes

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

Page 52: EVALUACIÓN DE MODELOS DIMENSIONALES ... - Uniandes

ISC-2002-2-9

45

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

Page 53: EVALUACIÓN DE MODELOS DIMENSIONALES ... - Uniandes

ISC-2002-2-9

46

057 United States 072 Puerto Rico 096 Outlying U.S. (Guam, USVI, etc) 109 France 110 Germany 116 Greece 117 Hungary 119 Ireland/Eire 120 Italy 126 Holand and Netherlands 128 Poland 129 Portugal 139 England 140 Scotland 147 Yugoslavia 206 Cambodia 207 China 209 Hong Kong 210 India 212 Iran 215 Japan 218 South Korea 221 Laos 231 Philippines 238 Taiwan 239 Thailand 242 Vietnam 301 Canada 312 El Salvador 313 Guatemala 314 Honduras 315 Mexico 316 Nicaragua 317 Panama 337 Cuba 339 Dominican Republic 342 Haiti 343 Jamaica 351 Trinadad & Tobago 379 Colombia 380 Ecuador 385 Peru 999 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

Page 54: EVALUACIÓN DE MODELOS DIMENSIONALES ... - Uniandes

ISC-2002-2-9

47

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

Page 55: EVALUACIÓN DE MODELOS DIMENSIONALES ... - Uniandes

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

Page 56: EVALUACIÓN DE MODELOS DIMENSIONALES ... - Uniandes

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.

Page 57: EVALUACIÓN DE MODELOS DIMENSIONALES ... - Uniandes

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

Page 58: EVALUACIÓN DE MODELOS DIMENSIONALES ... - Uniandes

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

Page 59: EVALUACIÓN DE MODELOS DIMENSIONALES ... - Uniandes

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

Page 60: EVALUACIÓN DE MODELOS DIMENSIONALES ... - Uniandes

ISC-2002-2-9

53

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

Page 61: EVALUACIÓN DE MODELOS DIMENSIONALES ... - Uniandes

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)

Page 62: EVALUACIÓN DE MODELOS DIMENSIONALES ... - Uniandes

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,

Page 63: EVALUACIÓN DE MODELOS DIMENSIONALES ... - Uniandes

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

Page 64: EVALUACIÓN DE MODELOS DIMENSIONALES ... - Uniandes

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,

Page 65: EVALUACIÓN DE MODELOS DIMENSIONALES ... - Uniandes

ISC-2002-2-9

58

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 (o100055.i100081 <> 'Not in universe' AND 1 = 1 ) GROUP BY i100081; plan de la consulta SELECT STATEMENT WINDOW SORT SORT GROUP BY FILTER TABLE ACCESS FULL CBENJUM.MOD1_PERSONA

consulta 22:

SELECT i100020 as E100020,( ( AVG(i100071) )-( LAG(( AVG(i100071) ),1) OVER(ORDER BY i100020 ) ) )*100/( LAG(( AVG(i100071) ),1) OVER(ORDER BY i100020 ) ) as E_1455,LAG(( AVG(i100071) ),1) OVER(ORDER BY i100020 ) as E_1452,AVG(i100071) as E100071_AVG FROM ( SELECT LLAVE_ANO AS i100019, ANO AS i100020 FROM CBENJUM.ANO ) o100018, ( 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 (o100055.i100071 > 0) AND (o100055.i100081 = 'Not in universe') AND (o100055.i100077 > 0) GROUP BY 1, 1, 1, i100020; plan de la consulta SELECT STATEMENT WINDOW BUFFER 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 23:

SELECT i100020 as E100020,( ( AVG(i100072) )-( LAG(( AVG(i100072) ),1) OVER(ORDER BY i100020 ) ) )*100/( LAG(( AVG(i100072) ),1) OVER(ORDER BY i100020 ) ) as E_1447,LAG(( AVG(i100072) ),1) OVER(ORDER BY i100020 ) as E_1444,AVG(i100072) as E100072_AVG FROM ( SELECT LLAVE_ANO AS i100019, ANO AS i100020 FROM CBENJUM.ANO ) o100018, ( 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

Page 66: EVALUACIÓN DE MODELOS DIMENSIONALES ... - Uniandes

ISC-2002-2-9

59

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 (o100055.i100072 > 0) AND (o100055.i100081 = 'Not in universe') AND (o100055.i100077 > 0) GROUP BY 1, 1, 1, i100020; plan de la consulta SELECT STATEMENT WINDOW BUFFER 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 24:

SELECT i100020 as E100020,i100053 as E100053,( ( COUNT(i100056) )-( LAG(( COUNT(i100056) ),23) OVER(ORDER BY i100020 ) ) )*100/( LAG(( COUNT(i100056) ),23) OVER(ORDER BY i100020 ) ) as E_1434,LAG(( COUNT(i100056) ),23) OVER(ORDER BY i100020 ) as E_1431,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, 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 (o100051.i100053 <> 'Not in universe or children' AND 1 = 1 ) GROUP BY 23, 23, 23, i100020, i100053 ORDER BY i100020 ASC , i100053 ASC ;

plan de la consulta SELECT STATEMENT WINDOW SORT SORT GROUP BY FILTER 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

Modelo 2.

Page 67: EVALUACIÓN DE MODELOS DIMENSIONALES ... - Uniandes

ISC-2002-2-9

60

consulta 1:

SELECT PERFIL_DEMOGRAFICO.SEXO, COUNT('Llave Mod2 PersonaMod2') FROM CBENJUM.MOD2_PERSONA MOD2_PERSONA, CBENJUM.PERFIL_DEMOGRAFICO PERFIL_DEMOGRAFICO WHERE ( ( PERFIL_DEMOGRAFICO.LLAVE_PERFIL_DEMOGRAFICO = MOD2_PERSONA.LLAVE_PERFIL_DEMOGRAFICO ) ) AND ( MOD2_PERSONA.LLAVE_PERFIL_DEMOGRAFICO = PERFIL_DEMOGRAFICO.LLAVE_PERFIL_DEMOGRAFICO AND 1 = 1 ) GROUP BY PERFIL_DEMOGRAFICO.SEXO;

plan de la consulta SELECT STATEMENT SORT GROUP BY FILTER NESTED LOOPS TABLE ACCESS FULL CBENJUM.MOD2_PERSONA TABLE ACCESS BY INDEX ROWID CBENJUM.PERFIL_DEMOGRAFICO INDEX UNIQUE SCAN CBENJUM.PERFIL_DEMOGRAFICO_PK

consulta 2:

SELECT PERFIL_DEMOGRAFICO.EDAD, COUNT('Llave Mod2 PersonaMod2') FROM CBENJUM.MOD2_PERSONA MOD2_PERSONA, CBENJUM.PERFIL_DEMOGRAFICO PERFIL_DEMOGRAFICO WHERE ( ( PERFIL_DEMOGRAFICO.LLAVE_PERFIL_DEMOGRAFICO = MOD2_PERSONA.LLAVE_PERFIL_DEMOGRAFICO ) ) AND ( MOD2_PERSONA.LLAVE_PERFIL_DEMOGRAFICO = PERFIL_DEMOGRAFICO.LLAVE_PERFIL_DEMOGRAFICO AND 1 = 1 ) GROUP BY PERFIL_DEMOGRAFICO.EDAD ORDER BY COUNT('Llave Mod2 PersonaMod2') DESC;

plan de la consulta SELECT STATEMENT SORT ORDER BY SORT GROUP BY FILTER NESTED LOOPS TABLE ACCESS FULL CBENJUM.MOD2_PERSONA TABLE ACCESS BY INDEX ROWID CBENJUM.PERFIL_DEMOGRAFICO INDEX UNIQUE SCAN CBENJUM.PERFIL_DEMOGRAFICO_PK

consulta 3:

SELECT PERFIL_DEMOGRAFICO.EDAD, PERFIL_DEMOGRAFICO.SEXO, COUNT('Llave Mod2 PersonaMod2') FROM CBENJUM.MOD2_PERSONA MOD2_PERSONA, CBENJUM.PERFIL_DEMOGRAFICO PERFIL_DEMOGRAFICO WHERE ( ( PERFIL_DEMOGRAFICO.LLAVE_PERFIL_DEMOGRAFICO = MOD2_PERSONA.LLAVE_PERFIL_DEMOGRAFICO ) ) AND ( MOD2_PERSONA.LLAVE_PERFIL_DEMOGRAFICO = PERFIL_DEMOGRAFICO.LLAVE_PERFIL_DEMOGRAFICO AND 1 = 1 ) GROUP BY PERFIL_DEMOGRAFICO.EDAD, PERFIL_DEMOGRAFICO.SEXO;

plan de la consulta SELECT STATEMENT SORT GROUP BY FILTER NESTED LOOPS TABLE ACCESS FULL CBENJUM.MOD2_PERSONA TABLE ACCESS BY INDEX ROWID CBENJUM.PERFIL_DEMOGRAFICO INDEX UNIQUE SCAN CBENJUM.PERFIL_DEMOGRAFICO_PK

consulta 4:

Page 68: EVALUACIÓN DE MODELOS DIMENSIONALES ... - Uniandes

ISC-2002-2-9

61

SELECT i100471 as E100471,i100492 as E100492,RATIO_TO_REPORT(( COUNT('Llave Mod2 PersonaMod2') )) OVER(PARTITION BY i100471 )*100 as E_1955,COUNT('Llave Mod2 PersonaMod2') as E_1954 FROM ( SELECT LLAVE_ANO AS i100470, ANO AS i100471 FROM CBENJUM.ANO ) o100469, ( SELECT LLAVE_INDUSTRIA AS i100491, INDUSTRIA AS i100492 FROM CBENJUM.INDUSTRIA ) o100490, ( SELECT LLAVE_MOD2_PERSONA AS i100499, LLAVE_PERFIL_DEMOGRAFICO AS i100500, LLAVE_ANO AS i100501, LLAVE_EDUCACION AS i100502, LLAVE_OCUPACION AS i100503, LLAVE_INDUSTRIA AS i100504, LLAVE_ORIGEN_MADRE AS i100505, LLAVE_ORIGEN_PADRE AS i100506, LLAVE_ORIGEN_PERSONA AS i100507, LLAVE_MOD2_TRA_DES AS i100508, BENEFICIOS_VETERANO AS i100509, DISCAPACITADO AS i100510 FROM CBENJUM.MOD2_PERSONA ) o100498 WHERE ( (i100470 = i100501) and (i100491 = i100504)) GROUP BY i100471, i100492;

plan de la consulta SELECT STATEMENT WINDOW BUFFER SORT GROUP BY NESTED LOOPS NESTED LOOPS TABLE ACCESS FULL CBENJUM.MOD2_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 i100471 as E100471,i100525 as E100525,RATIO_TO_REPORT(( COUNT('Llave Mod2 PersonaMod2') )) OVER(PARTITION BY i100471 )*100 as E_1955,COUNT('Llave Mod2 PersonaMod2') as E_1954 FROM ( SELECT LLAVE_ANO AS i100470, ANO AS i100471 FROM CBENJUM.ANO ) o100469, ( SELECT LLAVE_MOD2_PERSONA AS i100499, LLAVE_PERFIL_DEMOGRAFICO AS i100500, LLAVE_ANO AS i100501, LLAVE_EDUCACION AS i100502, LLAVE_OCUPACION AS i100503, LLAVE_INDUSTRIA AS i100504, LLAVE_ORIGEN_MADRE AS i100505, LLAVE_ORIGEN_PADRE AS i100506, LLAVE_ORIGEN_PERSONA AS i100507, LLAVE_MOD2_TRA_DES AS i100508, BENEFICIOS_VETERANO AS i100509, DISCAPACITADO AS i100510 FROM CBENJUM.MOD2_PERSONA ) o100498, ( SELECT LLAVE_OCUPACION AS i100524, OCUPACION AS i100525 FROM CBENJUM.OCUPACION ) o100523 WHERE ( (i100470 = i100501) and (i100524 = i100503)) GROUP BY i100471, i100525;

plan de la consulta: SELECT STATEMENT WINDOW BUFFER SORT GROUP BY NESTED LOOPS NESTED LOOPS TABLE ACCESS FULL CBENJUM.MOD2_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 PERFIL_DEMOGRAFICO.EDAD, SUM(MOD2_TRABAJADOR.INGRESOS_TOTALES) FROM CBENJUM.MOD2_PERSONA MOD2_PERSONA, CBENJUM.MOD2_TRABAJADOR MOD2_TRABAJADOR, CBENJUM.PERFIL_DEMOGRAFICO PERFIL_DEMOGRAFICO WHERE ( ( PERFIL_DEMOGRAFICO.LLAVE_PERFIL_DEMOGRAFICO = MOD2_PERSONA.LLAVE_PERFIL_DEMOGRAFICO ) AND ( MOD2_PERSONA.LLAVE_MOD2_TRA_DES = MOD2_TRABAJADOR.LLAVE_MOD2_TRABAJADOR ) ) AND ( MOD2_PERSONA.LLAVE_MOD2_PERSONA = MOD2_TRABAJADOR.LLAVE_MOD2_TRABAJADOR AND 1 = 1 )

Page 69: EVALUACIÓN DE MODELOS DIMENSIONALES ... - Uniandes

ISC-2002-2-9

62

GROUP BY PERFIL_DEMOGRAFICO.EDAD ORDER BY SUM(MOD2_TRABAJADOR.INGRESOS_TOTALES) DESC;

plan de la consulta: SELECT STATEMENT SORT ORDER BY SORT GROUP BY FILTER NESTED LOOPS NESTED LOOPS TABLE ACCESS FULL CBENJUM.MOD2_TRABAJADOR TABLE ACCESS BY INDEX ROWID CBENJUM.MOD2_PERSONA INDEX UNIQUE SCAN CBENJUM.MOD2_PERS_UNIQUE TABLE ACCESS BY INDEX ROWID CBENJUM.PERFIL_DEMOGRAFICO INDEX UNIQUE SCAN CBENJUM.PERFIL_DEMOGRAFICO_PK

consulta 7:

SELECT PERFIL_DEMOGRAFICO.EDAD, AVG(MOD2_TRABAJADOR.INGRESOS_TOTALES) FROM CBENJUM.MOD2_PERSONA MOD2_PERSONA, CBENJUM.MOD2_TRABAJADOR MOD2_TRABAJADOR, CBENJUM.PERFIL_DEMOGRAFICO PERFIL_DEMOGRAFICO WHERE ( ( PERFIL_DEMOGRAFICO.LLAVE_PERFIL_DEMOGRAFICO = MOD2_PERSONA.LLAVE_PERFIL_DEMOGRAFICO ) AND ( MOD2_PERSONA.LLAVE_MOD2_TRA_DES = MOD2_TRABAJADOR.LLAVE_MOD2_TRABAJADOR ) ) AND ( MOD2_TRABAJADOR.INGRESOS_TOTALES > 0 ) AND ( MOD2_PERSONA.LLAVE_PERFIL_DEMOGRAFICO = PERFIL_DEMOGRAFICO.LLAVE_PERFIL_DEMOGRAFICO ) GROUP BY PERFIL_DEMOGRAFICO.EDAD ORDER BY AVG(MOD2_TRABAJADOR.INGRESOS_TOTALES) DESC;

plan de la consulta SELECT STATEMENT SORT ORDER BY SORT GROUP BY NESTED LOOPS NESTED LOOPS TABLE ACCESS FULL CBENJUM.MOD2_TRABAJADOR TABLE ACCESS BY INDEX ROWID CBENJUM.MOD2_PERSONA INDEX UNIQUE SCAN CBENJUM.MOD2_PERS_UNIQUE TABLE ACCESS BY INDEX ROWID CBENJUM.PERFIL_DEMOGRAFICO INDEX UNIQUE SCAN CBENJUM.PERFIL_DEMOGRAFICO_PK

consulta 8:

SELECT OCUPACION.OCUPACION, AVG(MOD2_TRABAJADOR.INGRESOS_TOTALES) FROM CBENJUM.MOD2_PERSONA MOD2_PERSONA, CBENJUM.MOD2_TRABAJADOR MOD2_TRABAJADOR, CBENJUM.OCUPACION OCUPACION WHERE ( ( OCUPACION.LLAVE_OCUPACION = MOD2_PERSONA.LLAVE_OCUPACION ) AND ( MOD2_PERSONA.LLAVE_MOD2_TRA_DES = MOD2_TRABAJADOR.LLAVE_MOD2_TRABAJADOR ) ) AND ( MOD2_TRABAJADOR.INGRESOS_TOTALES > 0 AND 1 = 1 ) GROUP BY OCUPACION.OCUPACION ORDER BY AVG(MOD2_TRABAJADOR.INGRESOS_TOTALES) DESC;

plan de la consulta SELECT STATEMENT SORT ORDER BY SORT GROUP BY FILTER NESTED LOOPS NESTED LOOPS TABLE ACCESS FULL CBENJUM.MOD2_TRABAJADOR TABLE ACCESS BY INDEX ROWID CBENJUM.MOD2_PERSONA INDEX UNIQUE SCAN CBENJUM.MOD2_PERS_UNIQUE TABLE ACCESS BY INDEX ROWID CBENJUM.OCUPACION INDEX UNIQUE SCAN CBENJUM.OCUPACION_PK

Page 70: EVALUACIÓN DE MODELOS DIMENSIONALES ... - Uniandes

ISC-2002-2-9

63

consulta 9:

SELECT INDUSTRIA.INDUSTRIA, AVG(MOD2_TRABAJADOR.INGRESOS_TOTALES) FROM CBENJUM.INDUSTRIA INDUSTRIA, CBENJUM.MOD2_PERSONA MOD2_PERSONA, CBENJUM.MOD2_TRABAJADOR MOD2_TRABAJADOR WHERE ( ( INDUSTRIA.LLAVE_INDUSTRIA = MOD2_PERSONA.LLAVE_INDUSTRIA ) AND ( MOD2_PERSONA.LLAVE_MOD2_TRA_DES = MOD2_TRABAJADOR.LLAVE_MOD2_TRABAJADOR ) ) AND ( MOD2_TRABAJADOR.INGRESOS_TOTALES > 0 AND 1 = 1 ) GROUP BY INDUSTRIA.INDUSTRIA ORDER BY AVG(MOD2_TRABAJADOR.INGRESOS_TOTALES) DESC;

plan de la consulta SELECT STATEMENT SORT ORDER BY SORT GROUP BY FILTER NESTED LOOPS NESTED LOOPS TABLE ACCESS FULL CBENJUM.MOD2_TRABAJADOR TABLE ACCESS BY INDEX ROWID CBENJUM.MOD2_PERSONA INDEX UNIQUE SCAN CBENJUM.MOD2_PERS_UNIQUE TABLE ACCESS BY INDEX ROWID CBENJUM.INDUSTRIA INDEX UNIQUE SCAN CBENJUM.INDUSTRIA_PK

consulta 10:

SELECT ANO.ANO, INDUSTRIA.INDUSTRIA, OCUPACION.OCUPACION, COUNT(MOD2_PERSONA.LLAVE_MOD2_PERSONA) FROM CBENJUM.ANO ANO, CBENJUM.INDUSTRIA INDUSTRIA, CBENJUM.MOD2_PERSONA MOD2_PERSONA, CBENJUM.OCUPACION OCUPACION WHERE ( ( ANO.LLAVE_ANO = MOD2_PERSONA.LLAVE_ANO ) AND ( INDUSTRIA.LLAVE_INDUSTRIA = MOD2_PERSONA.LLAVE_INDUSTRIA ) AND ( OCUPACION.LLAVE_OCUPACION = MOD2_PERSONA.LLAVE_OCUPACION ) ) AND ( OCUPACION.LLAVE_OCUPACION <> 0 AND 1 = 1 ) GROUP BY ANO.ANO, INDUSTRIA.INDUSTRIA, OCUPACION.OCUPACION;

plan de la consulta SELECT STATEMENT SORT GROUP BY FILTER NESTED LOOPS NESTED LOOPS NESTED LOOPS TABLE ACCESS FULL CBENJUM.MOD2_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 PERFIL_DEMOGRAFICO.ORIGEN_HISPANO, AVG(MOD2_TRABAJADOR.INGRESOS_TOTALES) FROM CBENJUM.MOD2_PERSONA MOD2_PERSONA, CBENJUM.MOD2_TRABAJADOR MOD2_TRABAJADOR, CBENJUM.PERFIL_DEMOGRAFICO PERFIL_DEMOGRAFICO WHERE ( ( PERFIL_DEMOGRAFICO.LLAVE_PERFIL_DEMOGRAFICO = MOD2_PERSONA.LLAVE_PERFIL_DEMOGRAFICO ) AND ( MOD2_PERSONA.LLAVE_MOD2_TRA_DES = MOD2_TRABAJADOR.LLAVE_MOD2_TRABAJADOR ) ) AND ( MOD2_TRABAJADOR.INGRESOS_TOTALES > 0 AND 1 = 1 ) GROUP BY PERFIL_DEMOGRAFICO.ORIGEN_HISPANO ORDER BY AVG(MOD2_TRABAJADOR.INGRESOS_TOTALES) DESC;

plan de la consulta

Page 71: EVALUACIÓN DE MODELOS DIMENSIONALES ... - Uniandes

ISC-2002-2-9

64

SELECT STATEMENT SORT ORDER BY SORT GROUP BY FILTER NESTED LOOPS NESTED LOOPS TABLE ACCESS FULL CBENJUM.MOD2_TRABAJADOR TABLE ACCESS BY INDEX ROWID CBENJUM.MOD2_PERSONA INDEX UNIQUE SCAN CBENJUM.MOD2_PERS_UNIQUE TABLE ACCESS BY INDEX ROWID CBENJUM.PERFIL_DEMOGRAFICO INDEX UNIQUE SCAN CBENJUM.PERFIL_DEMOGRAFICO_PK consulta 12:

SELECT i100471 as E100471,i100479 as E100479,RATIO_TO_REPORT(( COUNT(i100499) )) OVER(PARTITION BY i100471 )*100 as E_1951,COUNT(i100499) as E100499_COUNT FROM ( SELECT LLAVE_ANO AS i100470, ANO AS i100471 FROM CBENJUM.ANO ) o100469, ( SELECT LLAVE_EDUCACION AS i100478, NIVEL_EDUCACION AS i100479 FROM CBENJUM.EDUCACION ) o100477, ( SELECT LLAVE_MOD2_PERSONA AS i100499, LLAVE_PERFIL_DEMOGRAFICO AS i100500, LLAVE_ANO AS i100501, LLAVE_EDUCACION AS i100502, LLAVE_OCUPACION AS i100503, LLAVE_INDUSTRIA AS i100504, LLAVE_ORIGEN_MADRE AS i100505, LLAVE_ORIGEN_PADRE AS i100506, LLAVE_ORIGEN_PERSONA AS i100507, LLAVE_MOD2_TRA_DES AS i100508, BENEFICIOS_VETERANO AS i100509, DISCAPACITADO AS i100510 FROM CBENJUM.MOD2_PERSONA ) o100498 WHERE ( (i100470 = i100501) and (i100478 = i100502)) GROUP BY i100471, i100479;

plan de la consulta SELECT STATEMENT WINDOW BUFFER SORT GROUP BY NESTED LOOPS NESTED LOOPS TABLE ACCESS FULL CBENJUM.MOD2_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 i100471 as E100471,i100479 as E100479,RANK() OVER(PARTITION BY i100471 ORDER BY ( COUNT(i100499) ) DESC ) as E_1946 FROM ( SELECT LLAVE_ANO AS i100470, ANO AS i100471 FROM CBENJUM.ANO ) o100469, ( SELECT LLAVE_EDUCACION AS i100478, NIVEL_EDUCACION AS i100479 FROM CBENJUM.EDUCACION ) o100477, ( SELECT LLAVE_MOD2_PERSONA AS i100499, LLAVE_PERFIL_DEMOGRAFICO AS i100500, LLAVE_ANO AS i100501, LLAVE_EDUCACION AS i100502, LLAVE_OCUPACION AS i100503, LLAVE_INDUSTRIA AS i100504, LLAVE_ORIGEN_MADRE AS i100505, LLAVE_ORIGEN_PADRE AS i100506, LLAVE_ORIGEN_PERSONA AS i100507, LLAVE_MOD2_TRA_DES AS i100508, BENEFICIOS_VETERANO AS i100509, DISCAPACITADO AS i100510 FROM CBENJUM.MOD2_PERSONA ) o100498 WHERE ( (i100470 = i100501) and (i100478 = i100502)) GROUP BY i100471, i100479 ORDER BY i100471 ASC , E_1946 ASC ;

plan de la consulta SELECT STATEMENT WINDOW SORT SORT GROUP BY NESTED LOOPS NESTED LOOPS TABLE ACCESS FULL CBENJUM.MOD2_PERSONA

Page 72: EVALUACIÓN DE MODELOS DIMENSIONALES ... - Uniandes

ISC-2002-2-9

65

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(MOD2_PERSONA.LLAVE_MOD2_PERSONA) FROM CBENJUM.ANO ANO, CBENJUM.MOD2_PERSONA MOD2_PERSONA WHERE ( ( ANO.LLAVE_ANO = MOD2_PERSONA.LLAVE_ANO ) ) AND ( MOD2_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.MOD2_PERSONA TABLE ACCESS BY INDEX ROWID CBENJUM.ANO INDEX UNIQUE SCAN CBENJUM.ANO_PK consulta 15:

SELECT ANO.ANO, COUNT(MOD2_TRABAJADOR.LLAVE_MOD2_TRABAJADOR) FROM CBENJUM.ANO ANO, CBENJUM.MOD2_PERSONA MOD2_PERSONA, CBENJUM.MOD2_TRABAJADOR MOD2_TRABAJADOR WHERE ( ( ANO.LLAVE_ANO = MOD2_PERSONA.LLAVE_ANO ) AND ( MOD2_PERSONA.LLAVE_MOD2_TRA_DES = MOD2_TRABAJADOR.LLAVE_MOD2_TRABAJADOR ) ) AND ( MOD2_TRABAJADOR.MIEMBRO_SINDICATO = 'Yes' AND 1 = 1 ) GROUP BY ANO.ANO;

plan de la consulta SELECT STATEMENT SORT GROUP BY FILTER NESTED LOOPS NESTED LOOPS TABLE ACCESS FULL CBENJUM.MOD2_TRABAJADOR TABLE ACCESS BY INDEX ROWID CBENJUM.MOD2_PERSONA INDEX UNIQUE SCAN CBENJUM.MOD2_PERS_UNIQUE TABLE ACCESS BY INDEX ROWID CBENJUM.ANO INDEX UNIQUE SCAN CBENJUM.ANO_PK

consulta 16:

SELECT i100471 as E100471,i100492 as E100492,RATIO_TO_REPORT(( COUNT(i100513) )) OVER(PARTITION BY i100471 )*100 as E_1939,COUNT(i100513) as E100513_COUNT FROM ( SELECT LLAVE_ANO AS i100470, ANO AS i100471 FROM CBENJUM.ANO ) o100469, ( SELECT LLAVE_INDUSTRIA AS i100491, INDUSTRIA AS i100492 FROM CBENJUM.INDUSTRIA ) o100490, ( SELECT LLAVE_MOD2_PERSONA AS i100499, LLAVE_PERFIL_DEMOGRAFICO AS i100500, LLAVE_ANO AS i100501, LLAVE_EDUCACION AS i100502, LLAVE_OCUPACION AS i100503, LLAVE_INDUSTRIA AS i100504, LLAVE_ORIGEN_MADRE AS i100505, LLAVE_ORIGEN_PADRE AS i100506, LLAVE_ORIGEN_PERSONA AS i100507, LLAVE_MOD2_TRA_DES AS i100508, BENEFICIOS_VETERANO AS i100509, DISCAPACITADO AS i100510 FROM CBENJUM.MOD2_PERSONA ) o100498, ( SELECT LLAVE_MOD2_TRABAJADOR AS i100513, INGRESOS_TOTALES AS i100514, GANANCIAS_CAPITAL AS i100515, PERDIDAS_CAPITAL AS i100516, DIVIDENDOS_ACCIONES AS i100517, TOTAL_GANANCIAS AS i100518, TOTAL_INGRESOS AS i100519, NUMERO_SEMANAS_TRABAJADAS AS i100520, MIEMBRO_SINDICATO AS i100521 FROM CBENJUM.MOD2_TRABAJADOR ) o100512 WHERE ( (i100470 = i100501) and (i100491 = i100504) and (i100508 = i100513))

Page 73: EVALUACIÓN DE MODELOS DIMENSIONALES ... - Uniandes

ISC-2002-2-9

66

AND (o100512.i100521 = 'Yes' AND 1 = 1 ) GROUP BY i100471, i100492;

plan de la consulta SELECT STATEMENT WINDOW BUFFER SORT GROUP BY FILTER NESTED LOOPS NESTED LOOPS NESTED LOOPS TABLE ACCESS FULL CBENJUM.MOD2_TRABAJADOR TABLE ACCESS BY INDEX ROWID CBENJUM.MOD2_PERSONA INDEX UNIQUE SCAN CBENJUM.MOD2_PERS_UNIQUE 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(MOD2_PERSONA.LLAVE_MOD2_PERSONA) FROM CBENJUM.ANO ANO, CBENJUM.MOD2_PERSONA MOD2_PERSONA WHERE ( ( ANO.LLAVE_ANO = MOD2_PERSONA.LLAVE_ANO ) ) AND ( MOD2_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.MOD2_PERSONA TABLE ACCESS BY INDEX ROWID CBENJUM.ANO INDEX UNIQUE SCAN CBENJUM.ANO_PK

consulta 18:

SELECT ANO.ANO, PERFIL_DEMOGRAFICO.ESTADO_CIVIL, COUNT(MOD2_PERSONA.LLAVE_MOD2_PERSONA) FROM CBENJUM.ANO ANO, CBENJUM.MOD2_PERSONA MOD2_PERSONA, CBENJUM.PERFIL_DEMOGRAFICO PERFIL_DEMOGRAFICO WHERE ( ( ANO.LLAVE_ANO = MOD2_PERSONA.LLAVE_ANO ) AND ( PERFIL_DEMOGRAFICO.LLAVE_PERFIL_DEMOGRAFICO = MOD2_PERSONA.LLAVE_PERFIL_DEMOGRAFICO ) ) GROUP BY ANO.ANO, PERFIL_DEMOGRAFICO.ESTADO_CIVIL;

plan de la consulta SELECT STATEMENT SORT GROUP BY NESTED LOOPS NESTED LOOPS TABLE ACCESS FULL CBENJUM.MOD2_PERSONA TABLE ACCESS BY INDEX ROWID CBENJUM.PERFIL_DEMOGRAFICO INDEX UNIQUE SCAN CBENJUM.PERFIL_DEMOGRAFICO_PK TABLE ACCESS BY INDEX ROWID CBENJUM.ANO INDEX UNIQUE SCAN CBENJUM.ANO_PK

consulta 19:

SELECT ANO.ANO, PERFIL_DEMOGRAFICO.CIUDADANIA, COUNT(MOD2_PERSONA.LLAVE_MOD2_PERSONA) FROM CBENJUM.ANO ANO, CBENJUM.MOD2_PERSONA MOD2_PERSONA, CBENJUM.PERFIL_DEMOGRAFICO PERFIL_DEMOGRAFICO

Page 74: EVALUACIÓN DE MODELOS DIMENSIONALES ... - Uniandes

ISC-2002-2-9

67

WHERE ( ( ANO.LLAVE_ANO = MOD2_PERSONA.LLAVE_ANO ) AND ( PERFIL_DEMOGRAFICO.LLAVE_PERFIL_DEMOGRAFICO = MOD2_PERSONA.LLAVE_PERFIL_DEMOGRAFICO ) ) GROUP BY ANO.ANO, PERFIL_DEMOGRAFICO.CIUDADANIA;

plan de la consulta SELECT STATEMENT SORT GROUP BY NESTED LOOPS NESTED LOOPS TABLE ACCESS FULL CBENJUM.MOD2_PERSONA TABLE ACCESS BY INDEX ROWID CBENJUM.PERFIL_DEMOGRAFICO INDEX UNIQUE SCAN CBENJUM.PERFIL_DEMOGRAFICO_PK TABLE ACCESS BY INDEX ROWID CBENJUM.ANO INDEX UNIQUE SCAN CBENJUM.ANO_PK consulta 20:

SELECT i100471 as E100471,i100487 as E100487,i100488 as E100488,RANK() OVER(PARTITION BY i100471 ORDER BY ( COUNT(i100499) ) DESC ) as E_1928,COUNT(i100499) as E100499_COUNT FROM ( SELECT LLAVE_ANO AS i100470, ANO AS i100471 FROM CBENJUM.ANO ) o100469, ( SELECT LLAVE_GEOGRAFIA AS i100486, PAIS AS i100487, ESTADO AS i100488 FROM CBENJUM.GEOGRAFIA ) o100485, ( SELECT LLAVE_MOD2_PERSONA AS i100499, LLAVE_PERFIL_DEMOGRAFICO AS i100500, LLAVE_ANO AS i100501, LLAVE_EDUCACION AS i100502, LLAVE_OCUPACION AS i100503, LLAVE_INDUSTRIA AS i100504, LLAVE_ORIGEN_MADRE AS i100505, LLAVE_ORIGEN_PADRE AS i100506, LLAVE_ORIGEN_PERSONA AS i100507, LLAVE_MOD2_TRA_DES AS i100508, BENEFICIOS_VETERANO AS i100509, DISCAPACITADO AS i100510 FROM CBENJUM.MOD2_PERSONA ) o100498 WHERE ( (i100470 = i100501) and (i100486 = i100507)) AND (o100485.i100487 <> 'United States') AND (o100485.i100486 = o100498.i100507) AND (o100469.i100471 <> '1992') AND (o100469.i100471 <> '1993') GROUP BY i100471, i100487, i100488;

plan de la consulta SELECT STATEMENT WINDOW SORT SORT GROUP BY NESTED LOOPS NESTED LOOPS TABLE ACCESS FULL CBENJUM.MOD2_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 i100496 as E100496,RANK() OVER(ORDER BY ( COUNT(i100495) ) DESC ) as E_2992 FROM ( SELECT LLAVE_MOD2_DESEMPLEADO AS i100495, RAZON_DESEMPLEO AS i100496 FROM CBENJUM.MOD2_DESEMPLEADO ) o100494 GROUP BY i100496;

plan de la consulta SELECT STATEMENT WINDOW SORT SORT GROUP BY TABLE ACCESS FULL CBENJUM.MOD2_DESEMPLEADO

consulta 22:

Page 75: EVALUACIÓN DE MODELOS DIMENSIONALES ... - Uniandes

ISC-2002-2-9

68

SELECT i100471 as E100471,( ( AVG(i100514) )-( LAG(( AVG(i100514) ),1) OVER(ORDER BY i100471 ) ) )*100/( LAG(( AVG(i100514) ),1) OVER(ORDER BY i100471 ) ) as E_3582,LAG(( AVG(i100514) ),1) OVER(ORDER BY i100471 ) as E_3460,AVG(i100514) as E100514_AVG FROM ( SELECT LLAVE_ANO AS i100470, ANO AS i100471 FROM CBENJUM.ANO ) o100469, ( SELECT LLAVE_MOD2_PERSONA AS i100499, LLAVE_PERFIL_DEMOGRAFICO AS i100500, LLAVE_ANO AS i100501, LLAVE_EDUCACION AS i100502, LLAVE_OCUPACION AS i100503, LLAVE_INDUSTRIA AS i100504, LLAVE_ORIGEN_MADRE AS i100505, LLAVE_ORIGEN_PADRE AS i100506, LLAVE_ORIGEN_PERSONA AS i100507, LLAVE_MOD2_TRA_DES AS i100508, BENEFICIOS_VETERANO AS i100509, DISCAPACITADO AS i100510 FROM CBENJUM.MOD2_PERSONA ) o100498, ( SELECT LLAVE_MOD2_TRABAJADOR AS i100513, INGRESOS_TOTALES AS i100514, GANANCIAS_CAPITAL AS i100515, PERDIDAS_CAPITAL AS i100516, DIVIDENDOS_ACCIONES AS i100517, TOTAL_GANANCIAS AS i100518, TOTAL_INGRESOS AS i100519, NUMERO_SEMANAS_TRABAJADAS AS i100520, MIEMBRO_SINDICATO AS i100521 FROM CBENJUM.MOD2_TRABAJADOR ) o100512 WHERE ( (i100470 = i100501) and (i100508 = i100513)) AND (o100512.i100514 > 0 AND 1 = 1 ) GROUP BY 1, 1, 1, i100471;

plan de la consulta SELECT STATEMENT WINDOW BUFFER SORT GROUP BY FILTER NESTED LOOPS NESTED LOOPS TABLE ACCESS FULL CBENJUM.MOD2_TRABAJADOR TABLE ACCESS BY INDEX ROWID CBENJUM.MOD2_PERSONA INDEX UNIQUE SCAN CBENJUM.MOD2_PERS_UNIQUE TABLE ACCESS BY INDEX ROWID CBENJUM.ANO INDEX UNIQUE SCAN CBENJUM.ANO_PK consulta 23:

SELECT i100471 as E100471,( ( AVG(i100515) )-( LAG(( AVG(i100515) ),1) OVER(ORDER BY i100471 ) ) )*100/( LAG(( AVG(i100515) ),1) OVER(ORDER BY i100471 ) ) as E_4053,LAG(( AVG(i100515) ),1) OVER(ORDER BY i100471 ) as E_4045,AVG(i100515) as E100515_AVG FROM ( SELECT LLAVE_ANO AS i100470, ANO AS i100471 FROM CBENJUM.ANO ) o100469, ( SELECT LLAVE_MOD2_PERSONA AS i100499, LLAVE_PERFIL_DEMOGRAFICO AS i100500, LLAVE_ANO AS i100501, LLAVE_EDUCACION AS i100502, LLAVE_OCUPACION AS i100503, LLAVE_INDUSTRIA AS i100504, LLAVE_ORIGEN_MADRE AS i100505, LLAVE_ORIGEN_PADRE AS i100506, LLAVE_ORIGEN_PERSONA AS i100507, LLAVE_MOD2_TRA_DES AS i100508, BENEFICIOS_VETERANO AS i100509, DISCAPACITADO AS i100510 FROM CBENJUM.MOD2_PERSONA ) o100498, ( SELECT LLAVE_MOD2_TRABAJADOR AS i100513, INGRESOS_TOTALES AS i100514, GANANCIAS_CAPITAL AS i100515, PERDIDAS_CAPITAL AS i100516, DIVIDENDOS_ACCIONES AS i100517, TOTAL_GANANCIAS AS i100518, TOTAL_INGRESOS AS i100519, NUMERO_SEMANAS_TRABAJADAS AS i100520, MIEMBRO_SINDICATO AS i100521 FROM CBENJUM.MOD2_TRABAJADOR ) o100512 WHERE ( (i100470 = i100501) and (i100508 = i100513)) AND (o100512.i100515 > 0 AND 1 = 1 ) GROUP BY 1, 1, 1, i100471;

plan de la consulta SELECT STATEMENT WINDOW BUFFER SORT GROUP BY FILTER NESTED LOOPS NESTED LOOPS TABLE ACCESS FULL CBENJUM.MOD2_TRABAJADOR TABLE ACCESS BY INDEX ROWID CBENJUM.MOD2_PERSONA INDEX UNIQUE SCAN CBENJUM.MOD2_PERS_UNIQUE TABLE ACCESS BY INDEX ROWID CBENJUM.ANO INDEX UNIQUE SCAN CBENJUM.ANO_PK

Page 76: EVALUACIÓN DE MODELOS DIMENSIONALES ... - Uniandes

ISC-2002-2-9

69

consulta 24:

SELECT i100471 as E100471,i100492 as E100492,( ( COUNT(i100499) )-( LAG(( COUNT(i100499) ),23) OVER(ORDER BY i100471 ) ) )*100/( LAG(( COUNT(i100499) ),23) OVER(ORDER BY i100471 ) ) as E_4160,LAG(( COUNT(i100499) ),23) OVER(ORDER BY i100471 ) as E_4152,COUNT(i100499) as E100499_COUNT FROM ( SELECT LLAVE_ANO AS i100470, ANO AS i100471 FROM CBENJUM.ANO ) o100469, ( SELECT LLAVE_INDUSTRIA AS i100491, INDUSTRIA AS i100492 FROM CBENJUM.INDUSTRIA ) o100490, ( SELECT LLAVE_MOD2_PERSONA AS i100499, LLAVE_PERFIL_DEMOGRAFICO AS i100500, LLAVE_ANO AS i100501, LLAVE_EDUCACION AS i100502, LLAVE_OCUPACION AS i100503, LLAVE_INDUSTRIA AS i100504, LLAVE_ORIGEN_MADRE AS i100505, LLAVE_ORIGEN_PADRE AS i100506, LLAVE_ORIGEN_PERSONA AS i100507, LLAVE_MOD2_TRA_DES AS i100508, BENEFICIOS_VETERANO AS i100509, DISCAPACITADO AS i100510 FROM CBENJUM.MOD2_PERSONA ) o100498 WHERE ( (i100470 = i100501) and (i100491 = i100504)) AND (o100490.i100492 <> 'Not in universe or children' AND 1 = 1 ) GROUP BY 23, 23, 23, i100471, i100492 ORDER BY i100471 ASC ;

plan de la consulta SELECT STATEMENT WINDOW BUFFER SORT GROUP BY FILTER NESTED LOOPS NESTED LOOPS TABLE ACCESS FULL CBENJUM.MOD2_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