Warehousing: es un término utilizado para describir una forma. de integración de la información: copiar información de diversas

Documentos relacionados
Unidad 10. Almacenes de Datos

Procesamiento analítico en línea (OLAP) B.1 Qué es el procesamiento analítico en línea?

Arquitectura de un data warehouse Funcionamiento detallado de un data warehouse

Apoyo a la toma de Decisiones. Carlos A. Olarte Bases de Datos II

BASES DE DATOS AVANZADAS. Facultad de Estadística e Informática

Dirección General de Estudios de Postgrado Área de Ingeniería Programa: Maestría Sistemas de Información

1. DML. Las consultas de resumen

La herramienta OLAP genera la correspondiente consulta y la envía al gestor de consultas del sistema (p.ej. mediante una sentencia SELECT).

Modulo II Data Warehouse y OLAP

EXPLOTACIÓN DE UN DW: HERRAMIENTAS OLAP OLAP EXPLOTACIÓN DE UN DW: HERRAMIENTAS OLAP EXPLOTACIÓN DE UN DW: HERRAMIENTAS OLAP

OLAP EXPLOTACIÓN DE UN DW: HERRAMIENTAS OLAP. SISTEMAS ROLAP Y MOLAP. SQL AMPLIADO. OLAP 1

Procedimientos para agrupar y resumir datos

Las empresas han comenzado a aprovechar los cada vez más numerosos datos en línea para tomar mejores decisiones sobre sus actividades.

Introducción 1 Recuperación de Datos mediante la Sentencia SQL SELECT

Anexo 3 COMPONENTES DE SQL SERVER. Los DDL (Data Definition Languaje) que permiten crear y definir nuevas

UNIVERSIDAD DON BOSCO FACULTAD DE ESTUDIOS TECNOLOGICOS ESCUELA DE COMPUTACION

GUIA DE CURSO: ELABORADO POR: ING. LUIS TAMAYO PARA: FECHA DE PRESENTACIÓN: INTELIGENCIA DE NEGOCIOS CON PENTAHO- Versión 1.0.

Resumen Inteligencia de Negocios

Consultas. Comparación Filtros vs Consultas Tipos de Consultas Crear, reutilizar y Ejecutar Consultas. Consultas Diapositiva 1.

CUBE, ROLLUP, GROUPING del SQL

Sistemas de ayuda a la toma de decisión

Un proyecto de IBM llamado Sistem/R construye un prototipo simple llamado SQUARE que después se transformó en SQL.

Grandes de Bases de Datos. Almacenes de Datos (DW) e Inteligencia de negocios IN (BI)

LENGUAJE DE CONSULTA ESTRUCTURADO (SQL)

Datawarehousing: Ciclo de vida y ETL. Jose Aguilar CEMISID, Escuela de Sistemas Facultad de Ingeniería Universidad de Los Andes Mérida, Venezuela

SQL: Lenguaje de Interrogación Estructurado

UMET : UNIVERSIDAD METROPOLITANA

Definición. Data Warehousing: almacenamiento, transformación y distribución de datos útiles para los responsables de tomar decisiones 9/29/2006 4

tanto, no pueden navegar por dicho modelo en busca de información.

Agrupamiento de registros. Elaboración de claúsulas avanzadas de selección. 31/12/2011. Unidad 9

Capítulo 3. Data Warehouse

Consultas. Consultas Diapositiva 1

Inteligencia de Negocios

Consultas SQL II. Diego Egüez. Universidad San Francisco de Quito (USFQ)

ÍNDICE INTRODUCCIÓN...17

Computación Web (Curso 2015/2016)

SQL. Amparo López Gaona. México, D.F. Noviembre 2003

Programa de Extensión Universitaria y Vinculación (PEUVI), Departamento de Matemáticas.

CI2355 Almacenes de datos y OLAP

Bases de Datos 1. Teórico: Structured Query Language

INTRODUCCIÓN MDX MDX. Jortilles.com

Tutorial de MySQL Lección IV Funciones de Agregación

Los DLL que permiten crear y definir nuevas bases de datos, campos e índices.

ÍNDICE. Introducción... Capítulo 1. Características, instalación, inicio y entorno de trabajo... 1

CEP GUÍA DE REFERENCIA

SQL DML Select. Ges$ón y Modelación de Datos. María Constanza Pabón

Inteligencia de Negocios. Modelado Multidimensional Lógico

Fundamentos y Aplicaciones Prácticas del Descubrimiento de Conocimiento en Bases de Datos. - Sesión 5 -

Introducción: Data Mining

Uso de sentencias avanzadas

SQL SERVER Curso Teórico-Práctico

FUNDAMENTOS ORACLE 12C

FUNDAMENTOS DE INTELIGENCIA DE NEGOCIOS

SQL Básico. José Muñoz Jimeno Febrero 2015

Pero es que además, en ocasiones no hay otra forma de conseguir el resultado deseado que crear la consulta directamente en SQL.

Oracle Fundamentos. Programa de Estudio.

Oracle Fundamentos. Programa de Estudio.

TEMA 4.. CONSULTA DE DATOS I.

DESARROLLO APLICACIONES BUSINESS INTELLIGENCE CON MS SQL SERVER Big Data

Taller de Herramientas de Software : ST 213 Secc: V y W

Área Académica: Sistemas Computacionales. Tema: Explotación de un Almacén de Datos: Herramientas OLAP. Profesor: Mtro Felipe de Jesus Nuñez Cardenas

ÍNDICE. Introducción... XVII. Capítulo 1. Oracle 10g y el Grid Computing... 1

Capítulo 4. Realización de consultas

SELECT listadecampos FROM nombredetablas WHERE condicionesdebúsqueda;

Consultas SQL INNER JOIN

Sistemas de Información Gerencial

MANUAL BÁSICO DEL LENGUAJE SQL

Diseño multidimensional. Jordi Conesa i Caralt Isabel Guitart Hormigo M. Elena Rodríguez González

RESUMEN SQL. Tipo de coincidencia Modelo Planteado Coincide No coincide. Varios caracteres 'ab*' 'abcdefg', 'abc' 'cab', 'aab'

LENGUAJE DE MANIPULACIÓN DE DATOS (DML) CONSULTA DE DATOS

Capítulo 5. Construcción de un prototipo. Se implementó un prototipo basado en la arquitectura para análisis de información Zombi.

Consultas en JPA-QL. Sistemas de Persistencia de Objetos

Sistemas de Información 12/13 La organización de datos e información

El SQL es un lenguaje estándar de programación para el acceso a bases de datos.

Vistas en InformiX Sistemas de Bases de Datos II EMT CETP A/S Leonardo Carámbula

PONTIFICIA UNIVERSIDAD CATOLICA DEL ECUADOR TEMA: AUTOR: DIRECTOR:

Procesamiento Analítico en Línea IBARRA MARIA DE LOS ANGELES

20761 Querying Data with Transact-SQL

Lenguaje de manipulación de datos

Conceptos de Inteligencia Empresarial

Aux 2. Introducción a la Minería de Datos

SQL, Consultas. Son Importantes las Consultas? Cuál es el Resultado de SELECT? Andrés Moreno S.

Bases de Datos Relacionales III

CC BASES DE DATOS OTOÑO 2018

Modulo I: Introducción Gestores de Bases De Datos

CC BASES DE DATOS PRIMAVERA Clase 7: SQL (II) Aidan Hogan

CC BASES DE DATOS OTOÑO Clase 5: SQL (II) Aidan Hogan

UNIVERSIDAD DEL VALLE DE MÉXICO PROGRAMA DE ESTUDIO DE LICENCIATURA PRAXIS MES XXI

SUBCONSULTAS SQL. Cuando se ejecuta una consulta que contiene una subconsulta, la subconsulta se ejecuta por cada fila de la consulta principal.

Organización y Acceso a Datos

Oracle Database 12c SQL and PLSQL Fundamentals

Administración de las Bases de Datos

UNIVERSIDAD NACIONAL TECNOLÓGICA DE LIMA SUR CARRERA PROFESIONAL DE INGENIERÍA DE SISTEMAS

Operadores. Además se pueden emplear en sentencias SET.

DISEÑO FÍSICO. Tema 14. Diseño Físico

Práctica 2: CONSULTAS

Transcripción:

Datawarehousing Introducción DataWarehouse (almacén de datos) Warehousing: es un término utilizado para describir una forma de integración de la información: copiar información de diversas fuentes a una sola base de datos y tratar de mantenerla actualizada. Método usual: reconstrucción periódica del almacén, posiblemente durante la noche. Aspectos generales de los almacenes de datos: Momento y modo de la recogida de datos (arquitectura dirigida por las fuentes de datos, arquitectura dirigida por el destino) Selección del esquema Transformación y limpieza de los datos (purgar, evitar duplicados, transformar,..) Propagación de las actualizaciones Resúmenes de datos (uso de agregación) Los distintos pasos implicados en obtener datos a partir de una fuente de datos se denomina: ETL (Extraction, Transformation, Load).

OLTP La mayoría de las operaciones en las bases de datos son del tipo: procesamiento de transacciones en línea (On-line Transaction Processing OLTP-) Consultas cortas y simples, y actualizaciones frecuentes involucrando una o un número pequeño de tuplas. Ejemplos: Responder a queries provenientes de una interface Web, registro de ventas en cajas registradoras, venta de boletos de avión, etc.. Data Marts Almacenes más pequeños Expande parte de la organización e.g., mercadotecnia (clientes, productos, ventas) No requiere consenso en toda la empresa Según el diseño pudiera presentar algunos problemas a largo plazo

OLAP De creciente importancia es el llamado procesamiento analítico en línea (Online Analytic Processing OLAP-): Pocas consultas, pero muy consumidoras de tiempo (pueden correr por horas). Las actualizaciones son menos frecuentes, y/o la respuesta a la consulta no depende del hecho de tener actualizada la base de datos. Ejemplo: Amazon analiza las compras que le hacen sus clientes para posteriormente mostrarles pantallas con productos que pudieran ser de su interés. Ejemplo: Analistas en Wal-Mart buscan artículos cuyas ventas vayan incrementándose (o disminuyendo) en algunos almacenes en regiones específicas Arquitecturas de uso Arquitectura más común: Una base de datos local, digamos una por sucursal utilizando OLTP, mientras que un almacén de datos integra información de todas las sucursales y utiliza OLAP. Al grupo de consultas más complejas que se emiten en OLAP la mayoría de veces se les conoce como minado de datos (data mining).

OLTP vs. OLAP OLTP Principalmente actualizaciones Muchas transacciones pequeñas Datos en el rango de Mb-Gb Datos directo de la fuente Usuarios cotidianos de oficina Datos al día Consistencia, recuperación criticas. OLAP Principalmente lecturas Consultas largas y complejas Datos en el rango Gb-Tb Datos consolidados, resumidos Usuarios tomadores de decisiones, analistas. Técnicas de implementación de OLAP ROLAP (Relational OLAP): sistema administrador de bases de datos relacional ajustado para esquemas estrella, e.g. utilizando estructuras especiales de índices tales como: Índices Bitmap (para cada llave de una tabla de dimensiones, e.g. nombre del bar, un vector de bits diciendo cuales tuplas de la tabla de hechos tienen ese valor). Vistas materializadas = respuestas a consultas generales desde las cuales más específicas consultas pueden ser respondidas con menos trabajo que si tuvieran que ser ejecutadas desde los datos originales. MOLAP (Multidimensional OLAP): Un modelo especializado basado en una vista de cubo de los datos. Utilizan arreglos de memoria multidimensional para almacenar los cubos. HOLAP (Hybrid OLAP): Sistemas híbridos, que almacenan algunos resúmenes en la memoria y los datos básicos y otros resúmenes en bases de datos relacionales.

Operaciones típicas: Corte (Slice) = seleccionar un valor sobre una dimensión, e.g. un bar en particular. Dice = lo mismo sobre otra dimensión, e.g. una cerveza en particular. Pivotaje = Operación de modificación de las dimensiones utilizadas en las tabulaciones cruzadas. Abstracción: Granularidad más gruesa Concreción: Granularidad más fina. Una consulta OLAP típica: Hará todo o parte de la reunión estrella Filtrará tuplas interesantes basándose en datos de hechos y/o dimensiones. Agrupará por una o varias dimensiones. Hará una agregación del resultado. Ejemplo: Para cada bar en cd. Victoria, encontrar la venta total de cada cerveza fabricada por cervecería modelo.

ROLAP Las consultas típicas empiezan con una reunión estrella completa, por ejemplo: SELECT * FROM Ventas, Bares, Cervezas, Consumidores WHERE Ventas.bar = Bares.bar AND Ventas.cerveza = Cerveza. Cerveza AND Ventas.consumidor = Consumidores.consumidor; Aspectos de eficiencia Si la tabla de hechos es grande, las consultas tomarán mucho más tiempo. Vistas materializadas pudieran ser una buena opción. Ejemplo: Para la consulta acerca de bares en cd. Victoria y cervezas fabricadas por cervecería modelo, podríamos ayudarnos con la siguiente vista materializada: CREATE VIEW BDCFV(bar, direccion, cerveza, fabricante, ventas) AS SELECT bar, direccion, cerveza, fabricante, SUM(precio) AS ventas FROM Ventas NATURAL JOIN Bares NATURAL JOIN Cervezas GROUP BY bar, direccion, cerveza, fabricante; Nota: Recordar que las vistas materializadas son actualizables

MOLAP Basado en cubo de datos : las llaves de las tablas de dimensiones forman los ejes del cubo. Ejemplo: Para nuestro ejemplo anterior, podríamos tener 4 dimensiones: bar, cerveza, consumidor y tiempo. Atributos dependientes (precio de la venta en nuestro ejemplo) aparecen en los puntos del cubo. Pero el cubo también incluye agregaciones (típicamente sumas) a lo largo de los márgenes. Ejemplo: En nuestro cubo de 4 dimensiones, tendríamos la suma sobre cada bar, cada cerveza, cada consumidor, y cada instante de tiempo (tal vez agrupado por día). También tendríamos agregaciones para todos los subconjuntos de las dimensiones, e.g. por cada bar y cerveza, o por cada cerveza, consumidor y día. Aspectos de eficiencia Al igual que en ROLAP, las vistas materializadas pudieran ser de ayuda. Los cubos de datos invitan a las vistas materializadas que son agregaciones en una o más dimensiones. Las dimensiones no necesitan ser agregadas completamente. Mejor, es posible agrupar por atributos de la tabla de dimensiones Ejemplo: una vista materializada podría agregar completamente por consumidor, por cerveza no del todo, por tiempo acorde al día, y por bar sólo acorde a la ciudad del bar. Ejemplo: el tiempo es una dimensión realmente interesante, ya que hay agrupamientos naturales, tales como semanas y meses, que no son de la misma proporción.

Warehouse: Modelos y Operadores Modelos de datos relaciones estrella y copo de nieve cubos Operadores slice & dice roll-up, drill down pivoteo otros Estrella product prodid name price p1 bolt 10 p2 nut 5 store storeid city c1 nyc c2 sfo c3 la sale oderid date custid prodid storeid qty amt o100 1/7/97 53 p1 c1 1 12 o102 2/7/97 53 p2 c1 2 11 105 3/8/97 111 p1 c3 5 50 customer custid name address city 53 joe 10 main sfo 81 fred 12 main sfo 111 sally 80 willow la

Esquema de estrella product prodid name price sale orderid date custid prodid storeid qty amt customer custid name address city store storeid city Esquema Estrella (Star) Típicamente los datos del almacén de datos son de dos tipos: Datos de hechos: Muy grandes, una acumulación de hechos tales como las ventas. A menudo sólo inserciones ; una vez ahí, la tupla permanece. Datos dimensionales: Más pequeños, generalmente estáticos, los cuales refieren a información acerca de las entidades envueltas en los hechos.

Esquema Estrella (Star) ejemplo Supongamos que deseamos registrar cada venta de cerveza en todos los bares: el bar, la cerveza, el consumidor quien compró la cerveza, el día y hora, el precio que se le cargo. Los datos que refieren a los hechos pudieran estar en una relación con esquema: Ventas(bar, cerveza, consumidor, dia, hora, precio) Los datos dimensionales pudieran incluir una relación para bares, una para cervezas, y una para consumidores: Bares(bar, direccion, licencia) Cervezas(cerveza, fabricante) Consumidores (consumidor, direccion, tel) Terminología Tabla de hechos (información que es objeto del análisis) Tabla de dimensiones (dimensiones del análisis) Medidas product prodid name price sale orderid date custid prodid storeid qty amt customer custid name address city store storeid city

Jerarquía de dimensiones store stype city store storeid cityid tid mgr s5 sfo t1 joe s7 sfo t2 fred s9 la t1 nancy region stype tid size location t1 small downtown t2 large suburbs city cityid pop regid sfo 1M north la 5M south region regid name north cold region south warm region Cubo Vista de la tabla de hechos: sale prodid storeid amt p1 c1 12 p2 c1 11 p1 c3 50 p2 c2 8 Cubo Bi-dimensional: c1 c2 c3 p1 12 50 p2 11 8 dimensiones = 2

Cubo en 3-D Vista de la tabla de hechos: sale prodid storeid date amt p1 c1 1 12 p2 c1 1 11 p1 c3 1 50 p2 c2 1 8 p1 c1 2 44 p1 c2 2 4 Cubo Multi-dimensional: día 2 día 1 c1 c2 c3 p1 44 4 p2 c1 c2 c3 p1 12 50 p2 11 8 dimensiones = 3 Agregaciones/funciones de totales Sumar las cantidades para el día 1 En SQL: SELECT sum(amt) FROM SALE WHERE date = 1 sale prodid storeid date amt p1 c1 1 12 p2 c1 1 11 p1 c3 1 50 p2 c2 1 8 p1 c1 2 44 p1 c2 2 4 81

Agregaciones/funciones de totales Sumar montos por día En SQL: SELECT date, sum(amt) FROM SALE GROUP BY date sale prodid storeid date amt p1 c1 1 12 p2 c1 1 11 p1 c3 1 50 p2 c2 1 8 p1 c1 2 44 p1 c2 2 4 ans date sum 1 81 2 48 Otro ejemplo Sumar montos por día y producto En SQL: SELECT date, sum(amt) FROM SALE GROUP BY date, prodid sale prodid storeid date amt p1 c1 1 12 p2 c1 1 11 p1 c3 1 50 p2 c2 1 8 p1 c1 2 44 p1 c2 2 4 rollup drill-down sale prodid date amt p1 1 62 p2 1 19 p1 2 48

Agregaciones/funciones de totales Operadores: sum, count, max, min, median, avg Clausula Having Utilizando jerarquía de dimensiones Promedio por región (dentro de ciertas tiendas) Máximo por mes (dentro de ciertas fechas) Agregación en Cubo día 2 día 1 c1 c2 c3 p1 44 4 p2 c1 c2 c3 p1 12 50 p2 11 8 Ejemplo: procesar sumas... c1 c2 c3 p1 56 4 50 p2 11 8 rollup drill-down c1 c2 c3 sum 67 12 50 sum p1 110 p2 19 129

Drill-Down y Roll-Up Drill-down = desagregar = romper una agregación en sus partes constituyentes. Ejemplo: Habiendo determinado cuantos contratos por trimestre tenemos con nuestros clientes, desmembrar por tipo de cliente. Roll-up = agregar sobre una dimensión. Ejemplo: Queremos los totales de contratos en todo el año. Drill-down

Roll-Up Operadores con Cubo día 2 día 1 c1 c2 c3 p1 44 4 p2 c1 c2 c3 p1 12 50 p2 11 8... sale(c1,*,*) c1 c2 c3 p1 56 4 50 p2 11 8 sale(c2,p2,*) c1 c2 c3 sum 67 12 50 sum p1 110 p2 19 129 sale(*,*,*)

Cubo extendido * c1 c2 c3 * p1 56 4 50 110 p2 11 8 19 día 2 c1* c267 c3 12 * 50 129 p1 44 4 48 día 1 c1 p2 c2 c3 * p1 12* 44 50 4 62 48 p2 11 8 19 * 23 8 50 81 sale(*,p2,*) Agregaciones utilizando jerarquías día 2 día 1 c1 c2 c3 p1 44 4 p2 c1 c2 c3 p1 12 50 p2 11 8 cliente región país region A region B p1 56 54 p2 11 8 (Cliente c1 en Region A; Clientes c2, c3 en Region B)

Jerarquías de las dimensiones Año Trimestre Región País Día de la semana Mes Hora del día Fecha Estado FechaHora Ciudad Jerarquía de tiempo Jerarquía de ubicación Pivotaje Vista de la tabla de hechos: Cubo Multi-dimensional: sale prodid storeid date amt p1 c1 1 12 p2 c1 1 11 p1 c3 1 50 p2 c2 1 8 p1 c1 2 44 p1 c2 2 4 día 2 día 1 c1 c2 c3 p1 44 4 p2 c1 c2 c3 p1 12 50 p2 11 8 c1 c2 c3 p1 56 4 50 p2 11 8

Herramientas de Consulta y Análisis Constructores de consultas Reporteadores (comparaciones, crecimientos, gráficas, ) Systemas de hoja de cálculo Interfaces Web Data Mining Otras operaciones Funciones para tiempo e.g., tiempo promedio Atributos calculados e.g., comisión = ventas * índice de ganancia Consultas en textos e.g., encontrar palabras con letras X y B e.g., clasificar documentos por frecuencia de palabras X, Y, Z

Agregaciones extendidas en SQL99 Nuevas funciones de agregación para un sólo atributo (e.g. desviación estándar stddev-, varianza variance -) Funciones de agregación binarias (e.g. correlación, covarianzas, curvas de regresión) Generalizaciones de la estructura group by mediante estructuras cube y rollup. Ejemplo: select nombre_articulo, color, talla, sum(numero) from ventas group by cube(nombre_articulo, color, talla) Esta consulta calcula la unión de ocho agrupaciones diferentes de la relación ventas: { (nombre_articulo, color, talla), (nombre_articulo, color), (nombre_articulo, talla), (color, talla), (nombre_articulo), (color), (talla), () } Lista vacía Nombre_articulo Color Talla cantidad falda oscuro All 8 falda Pastel All 35 falda Blanco All 10 falda null All 53 vestido oscuro All 20 vestido Pastel All 10 select nombre_articulo, color, talla,sum(cantidad) from ventas vestido Blanco All 5 group by cube(nombre_articulo, color,talla) vestido null All 35 camisa oscuro All 14 camisa Pastel All 7 camisa Blanco All 28 camisa null All 49 pantalon oscuro All 20 pantalon Pastel All 2 pantalon Blanco All 5 pantalon null All 27 null oscuro All 62 null Pastel All 54 null Blanco All 48 null null All 164

Ejemplo utilizando rollup select nombre_articulo, color, talla, sum(cantidad) from ventas group by rollup (nombre_articulo, color, talla) En este caso sólo se generan cuatro agrupaciones diferentes de la relación ventas: { (nombre_articulo, color, talla), (nombre_articulo, color), (nombre_articulo), () } Otras funciones: Supongamos la relación estudiante_calificacion(id_estudiante, calif) : select id_estudiante, rank() over (order by (calif) desc) as clasificacion_est from estudiante_calificacion order by clasificacion_est SQL99 utiliza el valor null tanto para indicar el sentido habitual del nulo, así como el valor de all. Se puede aplicar la función de grouping a un atributo; devuelve 1 si el valor es un valor nulo que represente a all, y devuelve 0 en los demás casos. select nombre_articulo, color, talla, sum(cantidad) grouping (nombre_articulo) as indicador_nombre_articulo, grouping (color) as indicador_color grouping (talla) as indicador_talla from ventas group by cube (nombre_articulo, color, talla) función cume_dist (cumulative distribution): define la función de distribución acumulativa, para una tupla se define como p/n, donde p es el número de tuplas de la partición con valores de ordenación que preceden o son iguales al valor de ordenación de la tupla, y n es el número de tuplas de la partición. Función ntile(n): toma las tuplas de cada partición en el orden especificado y las divide en n cajones con igual número de tuplas. select tercil, sum(sueldo) from ( select sueldo, ntile(3) over (order by (sueldo)) as tercil from empleado) as s group by tercil Los valores nulos pueden complicar la definición de una clasificación, dado que no está claro si deben colocarse antes en el orden. SQL:1999 permite que el usuario especifique dónde deben aparecer mediante nulls first o nulls last: select id_estudiante, rank() over (order by calif desc nulls last ) as clasificacion_est from estudiante_calificacion

Consultas del tipo ventana Un ejemplo de una consulta ventana es una consulta que, dados los valores de ventas para cada fecha, calcula para cada fecha el promedio de ventas de ese día, del día anterior y del día siguiente; esas consultas de media móvil se utilizan para suavizar la variación aleatoria. SQL:1999 ofrece una característica de ventanas para soportar esas consultas. A diferencia del group by, la misma tupla puede estar en varias ventanas. Consultas del tipo ventana Ejemplo: supóngase la relación transaccion(numero_cuenta, fecha_hora, valor), donde valor es positivo para los depósitos de fondos y negativos para los retiros. Se da por supuesto que hay como máximo una transacción por cada valor fecha_hora. La consulta: select numero_cuenta, fecha_hora, sum(valor) over (partition by numero_cuenta order by fecha_hora from transaccion order by numero_cuenta, fecha_hora rows unbounded preceding) as saldo Proporciona los saldos acumulados de cada cuenta justo antes de cada transacción en esa cuenta; el saldo acumulado de una cuenta es la suma de valores de todas las transacciones anteriores de la cuenta. La cláusula partition by separa las tuplas por número_cuenta, de modo que para cada fila sólo se consideran las tuplas de su partición. Se crea una ventana para cada tupla. La palabra clave rows unbounded preceding especifican que la ventana de cada tupla consiste en todas las tuplas de la partición que la preceden en el orden especificado (en este caso, orden creciente de fecha_hora). La función sum(valor) se aplica a todas las tuplas de la ventana. Nótese que la consulta no necesita ninguna cláusula group by, ya que hay una tupla de resultado por cada tupla de la relación transaccion.

Consultas del tipo ventana Se pueden especificar otros tipos de ventanas. Por ejemplo, para obtener una ventana que contenga las 10 filas anteriores a cada fila, se puede especificar: rows 10 preceding Para obtener una ventana que contenga la fila actual, la anterior y la siguiente : between rows 1 preceding and 1 following Para obtener las filas siguientes y la fila actual: between rows unbounded preceding and current. Nótese que si la ordenación se realiza con un atributo que no sea clave el resultado no es determinista, ya que el orden no está definido. Se pueden especificar ventanas mediante rangos de valores, en lugar de hacerlo mediante número de filas. Ejemplo, si el valor de ordenación de una tupla es v; entonces range between 10 preceding and current row devolverá tuplas cuyo valor de ordenación se hallen entre v 10 y v (ambos incluidos). Al tratar con fechas de puede utilizar range interval 10 day preceding para obtener una ventana que contenga tuplas con los 10 días anteriores, pero sin incluir la fecha de la tupla. SQL1999 contiene muchas más funcionalidades que no son expuestas en esta presentación. DATAMINING (Mineria de Datos) Introducción

Data Mining Consultas a gran escala diseñadas para extraer patrones de los datos. Las aplicaciones más utilizadas son las que necesitan algún tipo de predicción. Fuertemente soportada por mecanismos de predicción: Árboles de decisión Clasificadores bayesianos Redes neuronales Regresión Reglas de asociación Agrupamiento Árboles de decisión Ejemplo: Un estudio dirigido para ver qué clientes estarían interesados en un nuevo modelo de coche. Se desea seleccionar clientes para campaña publicitaria sale custid car age city newcar c1 taurus 27 sf yes c2 van 35 la yes c3 van 40 sf yes c4 taurus 22 sf yes c5 merc 50 la no c6 taurus 25 la no Conjunto de entrenamiento

Una opción Y sale custid car age city newcar c1 taurus 27 sf yes c2 van 35 la yes c3 van 40 sf yes c4 taurus 22 sf yes c5 merc 50 la no age<30 c6 taurus 25 la no N Y probable city=sf N improbable car=van Y N probable improbable Otra opción sale custid car age city newcar c1 taurus 27 sf yes c2 van 35 la yes c3 van 40 sf yes c4 taurus 22 sf yes car=taurus c5 merc 50 la no Y c6 taurus 25 la no N Y city=sf N Y age<45 probable improbable probable improbable N

Algunas situaciones a considerar El árbol de decisión no puede ser muy profundo Se necesita seleccionar el árbol que más confiablemente predice la salidas. Encontrar las mejores particiones. Obtener mejor ganancia de información. Agrupación (Clustering) ingresos edad educación

Otro ejemplo: Manejo de textos Cada documento es un vector e.g., <100110...> contiene palabras 1,4,5,... Las agrupaciones contienen documentos similares Útil para entender, documentos de búsqueda Noticias internacionales negocios deportes Algunas situaciones a considerar cuál es el número de grupos deseado? Encontrar los mejores grupos Son los grupos semánticamente significativos? e.g., el grupo yuppies? Agrupamiento aglomerativo. Agrupamiento divisivo.

Reglas de asociación: el ejemplo de la canasta del mercado Una fuente importante de datos para las reglas de asociación está en la canasta del mercado. Cuando un cliente pasa a través de la caja registradora, aprendemos qué artículos compra juntos, e.g. huevos y jamón. Sean datos con el esquema Canastas(can_id, articulo). Los comerciantes quisieran saber qué artículos la gente compra juntos. Ejemplo: si la gente tiende a comprar huevos y jamón juntos, porque no ponerlos cerca el uno del otro, con algún tocino en medio. Ejemplo: lanzar una gran venta de huevos y aumentar un poco el precio del jamón. El esquema básico: encontrar la pareja de artículos más frecuente Dado un umbral de soporte s, podríamos pedir: Encontrar los pares de artículos que aparecen juntos en al menos s canastas. SELECT can1.articulo, can2.articulo FROM canastas can1, canastas can2 WHERE can1.can_id = can2.can_id AND can1.articulo < can2.articulo GROUP BY can1.articulo, can2.articulo HAVING COUNT (*) >= s;

Haciendo un análisis a-priori La consulta anterior es prohibitivamente costosa para un monto de datos grande. Un algoritmo a-priori utiliza el hecho que un par (i, j) no puede tener soporte de s a menos que tanto i y j tengan soporte de s por sí mismos. Una implementación más eficiente utiliza una relación intermedia canastas1. INSERT INTO Canastas1 (can_id, articulo) SELECT * FROM Canastas WHERE articulo IN ( SELECT articulo FROM Canastas GROUP BY articulo HAVING COUNT (*) >= S ); Al obtener Canastas1 podemos volver a ejecutar la consulta anterior utilizando canastas1 en lugar de canastas Ejemplo: reglas de asociación registro de ventas: tran1 cust33 p2, p5, p8 tran2 cust45 p5, p8, p11 tran3 cust12 p1, p9 tran4 cust40 p5, p8, p11 tran5 cust12 p2, p9 tran6 cust12 p9 canasta Tendencia: Productos p5, p8 a menudo comprados juntos Tendencia: Cliente 12 prefiere producto p9

Regla de asociación Regla: {p 1, p 3, p 8 } Soporte: número de canastes donde estos productos aparecen Conjunto con soporte-alto: soporte umbral s Problema: encontrar todos los conjuntos con alto soporte Encontrar pares con soporte alto Canastas(canasta, item) SELECT I.item, J.item, COUNT(I.canasta) FROM canastas I, canastas J WHERE I.canasta = J.canasta AND I.item < J.item GROUP BY I.item, J.item Porqué? HAVING COUNT(I.canasta) >= s;

Ejemplo canasta item t1 p2 t1 p5 t1 p8 t2 p5 t2 p8 t2 p11...... canasta item1 item2 t1 p2 p5 t1 p2 p8 t1 p5 p8 t2 p5 p8 t2 p5 p11 t2 p8 p11......... verificar si cantidad s Algunos aspectos a considerar Eficiencia para reglas de tamaño 2 grande basket item t1 p2 t1 p5 t1 p8 t2 p5 t2 p8 t2 p11...... basket item1 item2 t1 p2 p5 t1 p2 p8 t1 p5 p8 t2 p5 p8 t2 p5 p11 t2 p8 p11......... Aún más grande! Eficiencia para reglas de tamaño k

Conteo eficiente Una opción: umbral = 3 canasta I.item J.item t1 p5 p8 t2 p5 p8 t2 p8 p11 t3 p2 p3 t3 p5 p8 t3 p2 p8......... ordenar canasta I.item J.item t3 p2 p3 t3 p2 p8 t1 p5 p8 t2 p5 p8 t3 p5 p8 t2 p8 p11......... contar y quitar contar I.item J.item 3 p5 p8 5 p12 p18......... Conteo eficiente Otra opción: threshold = 3 canasta I.item J.item t1 p5 p8 escanear y contar t2 p5 p8 t2 p8 p11 t3 p2 p3 t3 p5 p8 t3 p2 p8......... contar I.item J.item 1 p2 p3 2 p2 p8 3 p5 p8 5 p12 p18 1 p21 p22 2 p21 p23......... quitar contar I.item J.item 3 p5 p8 5 p12 p18......... Mantener el arreglo de contadores en memoria

Otra opción más canasta I.item J.item t1 p5 p8 t2 p5 p8 t2 p8 p11 t3 p2 p3 t3 p5 p8 t3 p2 p8......... (2) escanear y quitar falso positivo (1) Escanear, hacer hash y contar contar bucket 1 A 5 B 2 C 1 D 8 E 1 F...... canasta I.item J.item t1 p5 p8 t2 p5 p8 t2 p8 p11 t3 p5 p8 t5 p12 p18 t8 p12 p18......... tabla hash en memoria threshold = 3 contadores en memoria contar I.item J.item 3 p5 p8 1 p8 p11 5 p12 p18......... contar I.item J.item 3 p5 p8 5 p12 p18......... (4) quitar (3) Escanear y contar Discusión Esquema usando dispersión (hash): 2 (o 3) escaneo de datos Esquema usando ordenamiento: requiere ordenar! El esquema de dispersión trabaja bien si aparecen pocos pares con soporte alto y muchos con soporte bajo frecuencia Consultas del tipo iceberg umbral Pares de items clasificados por frecuencia