Académique Documents
Professionnel Documents
Culture Documents
2008/09
2008/09
Data Area
Relational Database Engine (OLTP) ETL processes ETL processes Staging Area ROLAP Cubes Star schemas
Ad-hoc solution
ERP
. . .
SCM
Web log,..
OLAP cubes
MOLAP Cubes
Qu es una solucin BI/DW? Recoger los datos de la organizacin y transformarlos en informacin til.
Estudiar la naturaleza del negocio
Indicadores, medidas, dimensiones (perspectivas de anlisis)
Disear la estructura de datos dimensional Recuperar los datos de los sistemas operacionales, transformarlos y cargarlos en la estructura de datos diseada Usar herramientas para el anlisis de los datos y la toma de decisiones
2008/09
Modelo de procesos
Business Requirements
Dimensional Modelling
Maintenance Plan
2008/09
Diseo Diseo Arquitectura Arquitectura Definicin Definicin de de Requisitos Requisitos del del negocio negocio
Diseo Diseo Arquitectura Arquitectura Definicin Definicin de de Requisitos Requisitos del del negocio negocio
Desarrollo Desarrollo
Acometer la realizacin de un proyecto global ha conducido al fracaso. Mejor ir por reas de negocio. A tener en cuenta: Hacer partcipes a usuarios operacionales, tcnicos IT y analistas.
Es importante hacer labor de mentalizacin antes de comenzar, creando expectativas realistas Expertos y analistas de negocio aseguran la calidad del producto final Usuarios aseguran la calidad de los datos Tcnicos dan soporte al sistema
Construir prototipos rpida y frecuentemente Reportar activamente y publicar los casos exitosos Herramientas para visualizar los datos fciles de usar
Marta Zorrilla - Universidad de Cantabria 2008/09 8
Definicin de requisitos
Diseo Diseo Arquitectura Arquitectura Definicin Definicin de de Requisitos Requisitos del del negocio negocio
Desarrollo Desarrollo
2008/09
Desarrollo Desarrollo
2008/09
10
Evaluacin de herramientas
Existen varias herramientas que permiten implementar un Data Warehouse. Todas con parecidas prestaciones, su diferencia est en el precio por nmero de licencias y la plataforma de trabajo. Su eleccin depender, sobre todo, del software/hardware ya disponible. La suite comercial ms econmica: BI SQL Server 2005 de Microsoft. Herramientas EIS son bastantes caras. Excel Add-ins, la alternativa de cliente ms sencilla.
PivotTable de Excel no suficiente XLCubed, IntelligentApps, MIS AG: comerciales, muy potentes PALO: open source, menos prestaciones
2008/09
11
2008/09
Los datos se conciben agrupados en forma de tablas Cada fila establece una relacin entre un conjunto de valores Operadores generan nuevas tablas
2008/09
15
Toda tabla tiene una columna o conjunto de columnas que permiten identificar cada una de sus filas; stas componen la llamada clave principal de la tabla. Los valores de la clave principal no se pueden repetir.
Facturas
Unas tablas se refieren a otras mediante vnculos de tipo jerrquico. Este vnculo de referencia entre dos tablas se establece mediante columnas con idntico tipo de dato.
Codigo_cliente A-741 A-562 A-741 Fecha 22-6-2004 22-6-2004 24-6-2004 Tipo_IVA 16 16 16 Numero_factura 3421 3422 3423
La referencia de una fila de una tabla a otra de la otra tabla se produce cuando ambas tienen el mismo valor.
2008/09 16
Clientes Clientes
Codigo_cliente Codigo_cliente Nombre Nombre Direccion Direccion Codigo_empresa Codigo_empresa
Lineas_factura Lineas_factura
Numero_factura Numero_factura Numero_linea Numero_linea Codigo_articulo Codigo_articulo Unidades Unidades Precio_unitario Precio_unitario Coste_unitario Coste_unitario
Articulos Articulos
Codigo_articulo Codigo_articulo Cod_tipo_artic Cod_tipo_artic Descripcion Descripcion Ult_coste_unitario Ult_coste_unitario
Empresas Empresas
Codigo_empresa Codigo_empresa Nombre_empresa Nombre_empresa Pais Pais Direccion_central Direccion_central
Paises Paises
Pais Pais
Tipos_articulos Tipos_articulos
Cod_tipo_artic Cod_tipo_artic Descripcion_tipo Descripcion_tipo
Facturas Facturas
Numero_factura Numero_factura Codigo_cliente Codigo_cliente Fecha Fecha Tipo_IVA Tipo_IVA
Lineas_factura Lineas_factura
Numero_factura Numero_factura Numero_linea Numero_linea Codigo_articulo Codigo_articulo Unidades Unidades Precio_unitario Precio_unitario Coste_unitario Coste_unitario
Articulos Articulos
Codigo_articulo Codigo_articulo Cod_tipo_artic Cod_tipo_artic Descripcion Descripcion Ult_coste_unitario Ult_coste_unitario
Empresas Empresas
Codigo_empresa Codigo_empresa Nombre_empresa Nombre_empresa Pais Pais Direccion_central Direccion_central
Paises Paises
Pais Pais
Tipos_articulos Tipos_articulos
Cod_tipo_artic Cod_tipo_artic Descripcion_tipo Descripcion_tipo
SELECT SUM(Unidades*(Precio_unitario Coste_unitario)), Cod_tipo_artic FROM Empresas INNER JOIN (Clientes INNER JOIN (Facturas INNER JOIN (Lineas_factura INNER JOIN Articulos ON Lineas_factura.Codigo_articulo=Articulos.Codigo_articulo) ON Facturas.Numero_factura=Lineas_factura.Numero_factura) ON Clientes.Codigo_cliente=Factura.Codigo_cliente) ON Empresas.Codigo_empresa=Clientes.Cdigo_empresa WHERE Fecha BETWEEN 1/1/2004 AND 31/12/2004 AND Pais=Francia GROUP BY Cod_tipo_artic
Marta Zorrilla - Universidad de Cantabria 2008/09 18
Ventas Ventas
Fecha Fecha Codigo_articulo Codigo_articulo Codigo_cliente Codigo_cliente Unidades Unidades Importe Importe Coste Coste Beneficio Beneficio
Articulos Articulos
Codigo_articulo Codigo_articulo Descripcin Descripcin Tipo_articulo Tipo_articulo
Medida Hecho
Clientes Clientes
Codigo_cliente Codigo_cliente Empresa Empresa Nombre Nombre Pais Pais Direccin Direccin
Tabla de hechos:
Cada fila corresponde a una medida Igual grado de detalle (grano) en todos los hechos Los hechos ms tiles son los numricos y aditivos
Tablas de dimensin:
Contienen descriptores textuales Son los puntos de entrada en la tabla de hechos
2008/09 19
An no es el modelo dimensional
Cubos e hipercubos
Una estructura de datos como la anterior admite una representacin espacial en tres dimensiones. Articulos Cada cubo elemental representa una ocurrencia (fila) en la tabla de hechos.
s te
n ie l
Fechas
2008/09
20
Articulos
Las medidas (como el beneficio) tiene la propiedad de ser aditivas. Es decir, tiene sentido la suma segn todas las dimensiones (beneficios en una fecha, o con un artculo o con relacin a un cliente). Adems de almacenar los valores elementales de las medidas, se pueden tambin guardar los acumulados segn las dimensiones.
n ie l
s te
Fechas
2008/09
21
Articulos
n ie l
s te
Fechas
2008/09
22
Articulos
n ie l
s te
Fechas
2008/09
23
2008/09
24
Articulos
n ie l
s te
Fechas
Marta Zorrilla - Universidad de Cantabria 2008/09 25
Ventas Ventas
Fecha Fecha Codigo_articulo Codigo_articulo Codigo_cliente Codigo_cliente Unidades Unidades Importe Importe Coste Coste Beneficio Beneficio
Articulos Articulos
Codigo_articulo Codigo_articulo Descripcin Descripcin Tipo_articulo Tipo_articulo
Tablas de dimensin:
Claves de gestin Atributos [criterios de agregacin] Claves simples (autonumricas)
Ventas Ventas
Id_venta Id_venta Id_fecha Id_fecha Id_articulo Id_articulo Id_cliente Id_cliente Unidades Unidades Importe Importe Coste Coste Beneficio Beneficio
Clientes Clientes
Codigo_cliente Codigo_cliente Empresa Empresa Nombre Nombre Pais Pais Direccin Direccin
Fechas Fechas
Id_fecha Id_fecha Fecha Fecha Ao Ao Mes Mes Dia Dia
Tabla de hechos:
Atributos (hechos) [aditividad] Claves de referencia Clave simple (autonumrica) Claves propias sin significado Independencia ante cambios de claves de produccin
Marta Zorrilla - Universidad de Cantabria
Articulos Articulos
Id_articulo Id_articulo Codigo_articulo Codigo_articulo Descripcin Descripcin Tipo_articulo Tipo_articulo
Clientes Clientes
Id_cliente Id_cliente Codigo_cliente Codigo_cliente Empresa Empresa Nombre Nombre Pais Pais Direccin Direccin
Facturas Facturas
Numero_factura Numero_factura Codigo_cliente Codigo_cliente Fecha Fecha Tipo_IVA Tipo_IVA
Lineas_factura Lineas_factura
Numero_factura Numero_factura Numero_linea Numero_linea Codigo_articulo Codigo_articulo Unidades Unidades Precio_unitario Precio_unitario Coste_unitario Coste_unitario
Articulos Articulos
Codigo_articulo Codigo_articulo Cod_tipo_artic Cod_tipo_artic Descripcion Descripcion Ult_coste_unitario Ult_coste_unitario
Empresas Empresas
Esquema relacional
Paises Paises
Pais Pais
Tipos_articulos Tipos_articulos
Cod_tipo_artic Cod_tipo_artic Descripcion_tipo Descripcion_tipo
Fechas Fechas
Id_fecha Id_fecha Fecha Fecha Ao Ao Mes Mes Dia Dia
Articulos Articulos
Id_articulo Id_articulo Codigo_articulo Codigo_articulo Descripcin Descripcin Tipo_articulo Tipo_articulo
Clientes Clientes
Id_cliente Id_cliente Codigo_cliente Codigo_cliente Empresa Empresa Nombre Nombre Pais Pais Direccin Direccin
2008/09
Las medidas no aditivas pueden agregarse calculando valores medios Hay casos en que interesa valorar la ocurrencia o no de un suceso, su aditividad puede conseguirse mediante los valores 1 0
Ejemplos: comunicacin (SI NO), supervisin (SI NO)
2008/09
29
Es normal que una dimensin tenga 50 o ms atributos descriptivos Generalmente, una estrella no tiene ms de 15 tablas de dimensin
Un exceso de dimensiones (ms de 25) denota que varias no son independientes En este caso, deben combinarse en dimensiones ms simples
Marta Zorrilla - Universidad de Cantabria 2008/09 30
Dan lugar a nuevas columnas en la tabla de dimensin Si los nuevos atributos slo estn disponibles a partir de una fecha, en las anteriores deben figurar como no disponibles Hay que aadir una nueva clave de referencia en la tabla de hechos Y cargar los nuevos valores de la tabla de hechos Nuevas columnas en la tabla de hechos Hay que rellenar de valor las filas anteriores al cambio
Nuevas dimensiones:
Nuevas medidas:
2008/09
31
Ventas Ventas
Id_venta Id_venta Id_fecha Id_fecha Id_articulo Id_articulo Id_cliente Id_cliente Id_promocion Id_promocion Unidades Unidades Importe Importe Coste Coste Beneficio Beneficio
Articulos Articulos
Id_articulo Id_articulo Codigo_articulo Codigo_articulo Descripcin Descripcin Tipo_articulo Tipo_articulo
Clientes Clientes
Id_cliente Id_cliente Codigo_cliente Codigo_cliente Empresa Empresa Nombre Nombre Pais Pais Direccin Direccin
Promocion Promocion
Id_promocion Id_promocion Nombre_prom Nombre_prom Tipo_prom Tipo_prom Fecha_ini_prom Fecha_ini_prom Fecha_fin_prom Fecha_fin_prom
Hay que evitar claves nulas en la tabla de hechos Para ello, deber haber una fila en la dimensin que indique que no es aplicable Ejemplo: ventas sin promocin
Marta Zorrilla - Universidad de Cantabria 2008/09 32
Ventas Ventas
Id_venta Id_venta Id_fecha Id_fecha Id_articulo Id_articulo Id_cliente Id_cliente Id_promocion Id_promocion Unidades Unidades Importe Importe Coste Coste Beneficio Beneficio
Articulos Articulos
Id_articulo Id_articulo Codigo_articulo Codigo_articulo Descripcin Descripcin Tipo_articulo Tipo_articulo
Promocion Promocion
Id_promocion Id_promocion Nombre_prom Nombre_prom Tipo_prom Tipo_prom Fecha_ini_prom Fecha_ini_prom Fecha_fin_prom Fecha_fin_prom
Algunas dimensiones se jerarquizan en varias tablas (normalizacin). Esquema en copo de nieve (snowflake) El nombre de los atributos y valores debera ser nico en las dimensiones jerarquizadas
Marta Zorrilla - Universidad de Cantabria 2008/09 34
Clientes Clientes Fechas Fechas Ventas Ventas [transacciones] Inventario Inventario (snapshot snapshot)] [fotos (snapshot)] Compras Compras [transacciones]
Promocion Promocion
Empleados Empleados
Proveedores Proveedores
2008/09
35
Snapshot
Cada fila representa un instante en el tiempo Generalmente los snapshots se toman a intervalos predefinidos
Ejemplos: diarios, semanales
Suministran una visin acumulativa Se utilizan para procesos continuos y medidas de intensidad
Ejemplos:
Balance bancario Inventario Temperaturas de una habitacin
2008/09
36
Fecha Fecha
Fecha_ID Fecha_ID Atributos derivados Atributos derivados
2008/09
37
2008/09
Data marts
Data mart:
subconjunto de la informacin de un data warehouse, generalmente de un solo proceso de negocio, que se dirige a un determinado departamento/grupo de usuarios
Ejemplos: data mart sobre ventas para dpto comercial y dpto de marketing
Normalmente contiene la informacin de un diagrama en estrella por lo que se suelen utilizar como sinnimos, aunque conceptualmente son diferentes El grano de un data mart puede ser ms grueso que en el data warehouse o del mismo detalle
2008/09
50
Los data marts son necesarios cuando las herramientas de acceso de los usuarios tiene sus propias estructuras internas
Marta Zorrilla - Universidad de Cantabria 2008/09 51
2008/09
Objetivo
Fuentes de datos internas
Compras
BD Relacional (OLTP)
Contabilidad
. . .
RR/HH
Staging Area
Web log,..
Integracin
Identificar la mejor fuente de datos para cada registro
Transformacin
Transformar los datos al contexto del DW: Estandarizar cdigos y formatos de representacin, definir dominios, usar conversiones y combinaciones para generar nuevos campos, corregir datos
Carga de datos
Definir procesos de carga y sincronizacin
2008/09
90
2008/09
91
Incorrectos debido a
Error humano o del programa al introducir los datos. Modelos de datos poco robustos. Errores en la transmisin de datos
Inconsistentes porque
Provienen de diferentes fuentes de datos Modelo de datos no normalizados (incumplen las FN)
2008/09
92
Data warehouse integracin consistente de datos con calidad ETL supone el 70% de la carga de trabajo del desarrollo de un data warehouse
2008/09
93
2008/09
94
Tareas
Identificar y corregir outliers y errores (tipogrficos, de dominio,) Corregir datos inconsistentes (fecha de nacimiento > hoy) Rellenar valores perdidos (missing data)
qu soluciones?
Etiquetarle con una constante global desconocido Asignarle la media del conjunto total o de los de su clase A veces, stos deben ser inferidos por medio de una frmula Bayesiana o un rbol de decisin
2008/09
96
Integracin de datos
El problema de la redundancia:
Aparece cuando se integran mltiples bases de datos
Identificacin de objetos: el mismo atributo u objeto puede tener diferentes nombres en cada base de datos, e incluso, el dominio puede variar Datos derivados: un atributo puede aparecer como dato derivado en otra tabla ( ej. Renta anual)
Identificar la fuente de datos ms fiable para cada dato Una integracin cuidadosa ayuda a evitar/reducir las redundancias y las inconsistencias
2008/09
97
Transformacin
Estandarizar cdigos y formatos de representacin
Pasar la informacin EBCDIC a ASCII o Unicode Convertir nmeros cardinales a ordinales Separar fecha y hora Poner textos descriptivos Unificar cdigos ( hombre-mujer, varn-hembra, 0-1). Unificar estndares: unidades de medida, de tiempo, moneda, etc.
Transformacin (y 2)
Poltica de resolucin de claves (cuando proceden datos de varias fuentes)
Uso de metadata
2008/09
99
Carga
Inicial
No suele plantear problemas. Puede requerir bastante tiempo. Realizar en horas de baja carga de los sistemas.
Staging
Se ha de prestar atencin a la variable temporal si los datos proceden de distintas fuentes (p. ej. datos de bolsa Madrid y Nueva York).
Marta Zorrilla - Universidad de Cantabria 2008/09 100
Cubos OLAP
2008/09
Definicin cubos OLAP Estructura de almacenamiento que permite Estructura de almacenamiento que permite realizar diferentes combinaciones de datos para realizar diferentes combinaciones de datos para visualizar los resultados de una organizacin visualizar los resultados de una organizacin (indicadores) hasta un determinado grado de (indicadores) hasta un determinado grado de detalle, permitiendo navegar por sus detalle, permitiendo navegar por sus dimensiones y analizar sus datos desde dimensiones y analizar sus datos desde distintos puntos de vista. distintos puntos de vista.
2008/09
112
VENTAS
e nt lie
P r o d u c t o
Tiempo
Marta Zorrilla - Universidad de Cantabria 2008/09
113
Informe OLAP
rea geogrfica (cliente) Producto Ao
ME OR NF
2008/09
114
Componentes de un cubo
VENTAS ()
Cliente Miembro
Argentina Blgica Canad Francia Italia
Producto
Camembert Gorgonzola Chocolate Pat Chinoise Ravioli
Tiempo
Definir dimensiones
Identificar las columnas de las tablas que participan en la dimensin Definir los niveles y las propiedades Pueden ser:
balanceada (producto) no balanceada (empleado) desigual (el padre de un miembro no se encuentra en el nivel que est por encima inmediatamente de ste, cliente)
2008/09
116
Dimensin equilibrada
2008/09
117
Dimensin no equilibrada
2008/09
118
Dimensin desigual
2008/09
119
Definir cubos
Identificar la tabla de hechos
Elegir las medidas
Aditivas y no aditivas Mtricas calculadas
Mtricas calculadas:
La diferencia entre medida derivada y miembro calculado es cundo se realiza el clculo. Una medida derivada se calcula antes que las agregaciones sean creadas y los valores son almacenados en el cubo. Beneficio = venta coste Los miembros calculados no son almacenados en el cubo y se calculan las agregaciones antes que se efecte la operacin. Margen ud. Prod. = suma(beneficio_linea) / suma(unidades_linea
Marta Zorrilla - Universidad de Cantabria 2008/09 120
Capacidad
ROLAP ROLAP
Base Datos Relacional
HOLAP HOLAP
Sistema hbrido
DOLAP DOLAP
Desktop OLAP
Marta Zorrilla - Universidad de Cantabria
2008/09
121
Herramientas OLAP
Lo interesante no es poder realizar consultas que, en cierto modo, se pueden hacer con selecciones, proyecciones, concatenaciones y agrupamientos tradicionales. Lo realmente interesante de las herramientas OLAP son sus operadores de refinamiento o manipulacin de consultas.
DRILL ROLL SLICE & DICE PIVOT
Marta Zorrilla - Universidad de Cantabria 2008/09 128
Pivot (rotar):
Reorientar el cubo
Drill:
Se utilizan las coordenadas dimensionales especificadas por un usuario para una celda en un cubo para moverse a otro cubo a ver informacin relacionada
drill across: implica utilizar ms de una tabla de hechos drill through: Ir desde el nivel de mximo detalle del cubo a sus tablas relacionales (utilizando SQL)
2008/09
129
Learner
France 100 50 Italy 200 150
Course Course
Programming Databases
Slice and Dice (learners from France or Italy in Q1 and Q2 of 2005 and course Programming or Databases) Pivot
Date
Q1-05 Q2-05
France Italy
Q1-05 Q2-05
Date
Learner
Learner
Argentina 100 20 Belgium 250 25 80 75 Canada 100 50 France Italy 200 150 70 300 25
Course
Programming Foreign Language Operating Systems Databases Arts
Date Learner
Buenos Aires 100 20 Brussels 250 25 Toronto 80 75 Paris 75 20 Grenoble 25 30 Florence 100 75 Rome 200 150 70 300 25 100 75 70 300 25
Drill-down on Learner
Roll-up on Date
Learner
Argentina 120 Belgium 275 155 Canada 150 France Italy 350 370 25
Course
Programming Foreign Language Operating Systems Databases Arts
Date
Date 2008/09
130
Herramientas OLAP
Las herramientas de OLAP se caracterizan por:
ofrecer una visin multidimensional de los datos (matricial). no imponer restricciones sobre el nmero de dimensiones. ofrecer simetra para las dimensiones. permitir definir de forma flexible (sin limitaciones) sobre las dimensiones: restricciones, agregaciones y jerarquas entre ellas. ofrecer operadores intuitivos de manipulacin: drill-down, rollup, slice-and-dice, pivot. ser transparentes al tipo de tecnologa que soporta el almacn de datos (ROLAP o MOLAP).
2008/09
131
2008/09
SQL99 OLAP SQL extensions GROUP BY <grouping specification> <grouping specification>::= <grouping column reference list> | ROLLUP (<grouping column reference list>) | CUBE (<grouping column reference list>) | GROUPING SETS (<grouping set list>) | ()
2008/09
133
BD ejemplo
2008/09
134
2008/09
135
2008/09
136
ROLLUP
CUBE
2008/09
137
2008/09
139
2008/09
140
Grouping Function
Se utiliza para distinguir entre los valores NULL devueltos por CUBE o Se utiliza para distinguir entre los valores NULL devueltos por CUBE o ROLLUP yy los valores NULL normales. Permite conocer las filas con ROLLUP los valores NULL normales. Permite conocer las filas con subtotales. subtotales. Obtener el n de unidades pedidas por categora, ao y pas y el total, con los subtotales por categora SELECT CategoriaNombre, Pais, Ao, SUM(UnidadesLinea) AS suma, SELECT CategoriaNombre, Pais, Ao, SUM(UnidadesLinea) AS suma, grouping (ao) as GroupingAo,grouping (pais) as GroupingPais grouping (ao) as GroupingAo,grouping (pais) as GroupingPais FROM Ventas_Fact INNER JOIN Producto_Dim ON FROM Ventas_Fact INNER JOIN Producto_Dim ON Ventas_Fact.ProductoKey = Producto_Dim.ProductoKey INNER JOIN Ventas_Fact.ProductoKey = Producto_Dim.ProductoKey INNER JOIN Cliente_Dim ON Ventas_Fact.ClienteKey = Cliente_Dim.ClienteKey Cliente_Dim ON Ventas_Fact.ClienteKey = Cliente_Dim.ClienteKey INNER JOIN Tiempo_Dim ON Ventas_Fact.TiempoKey = INNER JOIN Tiempo_Dim ON Ventas_Fact.TiempoKey = Tiempo_Dim.TiempoKey Tiempo_Dim.TiempoKey GROUP BY ROLLUP (( GROUP BY ROLLUP CategoriaNombre, Pais, Ao) CategoriaNombre, Pais, Ao)
Marta Zorrilla - Universidad de Cantabria 2008/09 141
windowed table functions ofrecen capacidades para calcular promedios, desviaciones, correlaciones, etc.
2008/09
142
2008/09
143
Funciones incorporadas:
RANK () OVER DENSE_RANK () OVER PERCENT_RANK () OVER CUME_DIST () OVER ROW_NUMBER () OVER
2008/09
144
Comparacin
2008/09
145
Sintaxis estndar
Ventana se define con la clusula OVER
partition_clause: criterio para formar grupos, aunque las filas se mantienen. Si no se indica, slo hay una particin. order_clause: orden de las filas dentro de la particin frame_clause: especificacin del rango de filas relativa a la fila actual que participara en la funcin de evaluacin
2008/09
146
Ejemplo
Obtener el salario promedio de los empleados por cada localidad SELECT SELECT EmpleadoID, Localidad, Salario, EmpleadoID, Localidad, Salario, AVG(salario) over (partition by localidad) Salario_promed AVG(salario) over (partition by localidad) Salario_promed
2008/09
147
Funciones ventana
Las funciones ventana se computan despus de aplicar el FROM, WHERE, Las funciones ventana se computan despus de aplicar el FROM, WHERE, GROUP yyHAVING GROUP HAVING No se pueden utilizar en ninguna de estas clusulas No se pueden utilizar en ninguna de estas clusulas Se pueden utilizar funciones de agregacin en la definicin de la ventana Se pueden utilizar funciones de agregacin en la definicin de la ventana Si quieres referirte aaellas debes anidarlas oousar una expresin de tabla comn Si quieres referirte ellas debes anidarlas usar una expresin de tabla comn Clasificacin de las localidades en funcin de los salarios de sus empleados SELECT Localidad, sum(Salario), SELECT Localidad, sum(Salario), rank() over (order by sum(salario)) as posicin rank() over (order by sum(salario)) as posicin FROM Empleados FROM Empleados GROUP BY Localidad GROUP BY Localidad
2008/09
148
Ejemplo
Obtener el ranking de los empleados segn su salario, asignar un n de fila y distribuir los empleados en 4 grupos segn salario SELECT EmpleadoID, Localidad, Salario, SELECT EmpleadoID, Localidad, Salario, rank() over (order by salario ))as Posicin, rank() over (order by salario as Posicin, dense_rank() over (order by salario ))as Posicin_sinhuecos, dense_rank() over (order by salario as Posicin_sinhuecos, row_number() over (order by salario ))as Nro_fila, row_number() over (order by salario as Nro_fila, cume_dist() over (order by salario ))as Percentil_acum cume_dist() over (order by salario as Percentil_acum FROM Empleados FROM Empleados ORDER BY salario ORDER BY salario
2008/09
149
sin especificacin window frame el clculo se hace con todas las iguales filas o precedentes a la actual dentro de la misma particin (RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)
Marta Zorrilla - Universidad de Cantabria 2008/09 150
2008/09
151
Window frame
Refinan el conjunto de filas de una ventana cuando existe el order by. Permiten incluir/excluir rangos de valores o filas dentro de la ordenacin
2008/09
152
Ejemplo
Obtener para cada empleado su sueldo promedio con respecto al sueldo del anterior y el siguiente en su departamento SELECT department_id, employee_id,salary, SELECT department_id, employee_id,salary, avg(salary) OVER (PARTITION BY department_id ORDER BY salary ROWS avg(salary) OVER (PARTITION BY department_id ORDER BY salary ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING) promedio_especial BETWEEN 1 PRECEDING AND 1 FOLLOWING) promedio_especial FROM employees FROM employees
2008/09
153
2008/09
155
Ejemplo
Obtener la posicin que tendra un empleado con un salario de 2300 SELECT employee_id, job_id, salary, SELECT employee_id, job_id, salary, rank() over (order by salary ))as posicin FROM employees rank() over (order by salary as posicin FROM employees
SELECT SELECT rank(2300) within group (order by salary asc) rank(2300) within group (order by salary asc) FROM employees FROM employees order by salary order by salary
2008/09
156
Ejemplo
Obtener la posicin que tendra un empleado hipottico con 15500 y comisin del 5% SELECT DENSE_RANK(15500, .05) WITHIN GROUP SELECT DENSE_RANK(15500, .05) WITHIN GROUP (ORDER BY salary , ,commission_pct) "Dense Rank" (ORDER BY salary commission_pct) "Dense Rank" FROM employees; FROM employees;
2008/09
157
2008/09
158
Ejemplo
Computa el salario medio en cada departamento
SELECT department_id, SELECT department_id, PERCENTILE_CONT(0.5) WITHIN GROUP (ORDER BY salary DESC) PERCENTILE_CONT(0.5) WITHIN GROUP (ORDER BY salary DESC) "Median cont", "Median cont", PERCENTILE_DISC(0.5) WITHIN GROUP (ORDER BY salary DESC) PERCENTILE_DISC(0.5) WITHIN GROUP (ORDER BY salary DESC) "Median disc" "Median disc" FROM employees FROM employees GROUP BY department_id; GROUP BY department_id;
PERCENTILE_CONT devuelve el resultado despus de hacer la interpolacin lineal PERCENTILE_DISC devuelve un valor del conjunto de valores que son agregados Pueden no coincidir
Marta Zorrilla - Universidad de Cantabria 2008/09 159