Sabes que es un almacén de datos? Por qué utilizarlo? Como crearlo? Que modelo utilizar, si normalizado o dimensional? Cual metodología, Kimball o Inmon? Que modelo de tablas? Almacén de datos o Data Mart. Infraestructura de Hardware. Big Data, la nueva moda empresarial. Durante esta sesión les explicare todas estas inquietudes.
How to use Redis with MuleSoft. A quick start presentation.
Introduccion a las Bodegas de Datos
1. Microsoft Data Platform
Avanet
Jose Redondo
Microsoft SQL Server MVP | CEO EntornoDB | DPA SolidQ
redondoj@gmail.com | @redondoj | redondoj.wordpress.com
2.
3.
4.
5.
6.
7.
8.
9.
10. Acceso a datos con solo dos operaciones: “Carga inicial de datos” y “Acceso a datos”
12. OLTP OLAP
USUARIOS Empleado de oficina, Profesional IT Analista de decisiones
FUNCIÓN Operaciones de día a día Soporte de decisiones
DISEÑO DE BASE DE DATOS Orientado a la aplicación Orientado a temas
DATOS Actual, A la fecha
Detallado, Completamente relacional
Aislado
Histórico
Resumido, Multidimensional
Integrado, Consolidado
USO Repetitivo AD HOC
ACCESO Lectura y Escritura; Índice / Hash en clave
primaria
Cantidades de exploraciones / escaneos
GRUPO DE TRABAJO Corto, Transacciones sencillas / simple Consultas complejas
No. DE REGISTROS ACCESADOS Decenas Millones
No. DE USUARIOS Miles Cientos
TAMAÑO DE LA BASE DE DATOS 100 MB-GB 100GB-TB
METRICA Rendimiento de transacciones Rendimiento de las consultas, Respuestas
OLTP vs. OLAP
22. LENGUAJE DE CONSULTA DE MINERIA DE DATOS - DMQL
Escenario de Análisis de datos
(Minería de Datos)
• Cube Definition (Fact Table)
define cube <cube_name> [<dimension_list>]:
<measure_list>
• Dimension Definition ( Dimension Table )
define dimension <dimension_name> as
(<attribute_or_subdimension_list>)
• Special Case (Shared Dimension Tables)
o First time as “cube definition”
o define dimension <dimension_name> as
<dimension_name_first_time> in cube
<cube_name_first_time>
23. DEFINIENDO UN ESQUEMA ESTRELLA EN DMQL
Escenario de Análisis de datos
(Minería de Datos)
define cube sales_star [time, item, branch, location]:
dollars_sold = sum(sales_in_dollars), avg_sales =
avg(sales_in_dollars), units_sold = count(*)
define dimension time as (time_key, day, day_of_week, month, quarter,
year)
define dimension item as (item_key, item_name, brand, type,
supplier_type)
define dimension branch as (branch_key, branch_name, branch_type)
define dimension location as (location_key, street, city, province_or_state,
country)
24. DEFINIENDO UN ESQUEMA COPO DE NIEVE EN DMQL
Escenario de Análisis de datos
(Minería de Datos)
define cube sales_snowflake [time, item, branch, location]:
dollars_sold = sum(sales_in_dollars), avg_sales =
avg(sales_in_dollars), units_sold = count(*)
define dimension time as (time_key, day, day_of_week, month, quarter,
year)
define dimension item as (item_key, item_name, brand, type,
supplier(supplier_key, supplier_type))
define dimension branch as (branch_key, branch_name, branch_type)
define dimension location as (location_key, street, city(city_key,
province_or_state, country))
25. DEFINIENDO UN CONJUNTO DE HECHOS EN DMQL
Escenario de Análisis de datos
(Minería de Datos)
define cube sales [time, item, branch, location]:
dollars_sold = sum(sales_in_dollars), avg_sales = avg(sales_in_dollars),
units_sold = count(*)
define dimension time as (time_key, day, day_of_week, month, quarter, year)
define dimension item as (item_key, item_name, brand, type, supplier_type)
define dimension branch as (branch_key, branch_name, branch_type)
define dimension location as (location_key, street, city, province_or_state, country)
define cube shipping [time, item, shipper, from_location, to_location]:
dollar_cost = sum(cost_in_dollars), unit_shipped = count(*)
define dimension time as time in cube sales
define dimension item as item in cube sales
define dimension shipper as (shipper_key, shipper_name, location as location
in cube sales, shipper_type)
define dimension from_location as location in cube sales
define dimension to_location as location in cube sales
27. CONCEPTO DE JERARQUÍAS: DIMENSIONES (LOCALIZACIÓN)
Componentes
All
Europa Norte America
MéxicoCanadáEspañaAlemania
Vancouver
DowntownNorth East
...
......
... ...
...
All
Región
Oficina
País
TorontoFrankfurtCiudad
28. VISTA DE UN ALMACÉN DE DATOS Y JERARQUÍAS
Componentes
Especificación de
Jerarquías
Esquema Jerarquía
day <
{month <
quarter;
week} <
year
Jerarquía Set_grouping
{1..10} <
inexpensive
31. NIVELES DE NAVEGACIÓN EN EL CUBO
Modelo de datos
All
Productos Tiempo País
Productos, Tiempo
Productos, País
Tiempo, País
Productos, Tiempo, País
0-D (Ápice) Cuboides
1-D cuboides
2-D cuboides
3-D (Base) cuboide
34. EJEMPLO DE MODELO DE CONSULTA ESQUEMA ESTRELLA
Modelo de datos
Método de envío
AIR-EXPRESS
CAMIONES
ORDEN DE COMPRA
Pedidos
CONTRATOS
Clientes
Productos
GRUPO DE PRODUCTO
LINEA DE PRODUCTO
ARTÍCULO
VENDEDOR
ÁREA
DIVISIÓN
OrganizaciónPromoción
CIUDAD
PAÍS
REGIÓN
Ubicación
DIARIO
TRIMESTRALANUAL
Tiempo
Cadacirculoesdenominadoun“Footprint”
42. Define un Alto nivel corporativo de Modelos de Datos
Data
Mart
Data
Mart
Data Marts
Distribuidos
Almacén de Datos
Multi-Tier
Almacén de
Datos
Empresarial
Modelo de
Refinamiento
Modelo de
refinamiento
50. La presente exposición no se encuentra en ningún libro en el
mercado actualmente, el texto proviene de un trabajo de
investigación por parte de estudiantes del MIT (Massachusetts
Institute of Technology)
51. A
B
29 30 31 32
1 2 3 4
5
9
13 14 15 16
64636261
48474645
a1a0
c3
c2
c1
c0
b3
b2
b1
b0
a2 a3
C
B
44
28 56
40
24 52
36
20
60
¿Cuál es el mejor orden de escaneo
para hacer la agregación
“Multiway"?
54. CLIENTE REGIÓN TIPO
C1 ASIA VENTA DETALLADA
C2 EUROPA DISTRIBUIDOR
C3 ASIA DISTRIBUIDOR
C4 AMERICA VENTA DETALLADA
C5 EUROPA DISTRIBUIDOR
REGID ASIA EUROPA AMERICA
1 1 0 0
2 0 1 0
3 1 0 0
4 0 0 1
5 0 1 0
REGID VENTA DETALLADA DISTRIBUIDOR
1 1 0
2 0 1
3 0 1
4 1 0
5 0 1
TABLA BASE ÍNDICE EN REGIÓN ÍNDICE EN TIPO
66. CREATE CUBE Ventas_Argentina AS
SELECT Mes, Ciudad, Clientes,
AVG(Valor), COUNT(*)
FROM Ventas_Generales
CUBE BY Mes, Ciudad, Clientes
HAVING AVG(Valor) >= 800 AND
COUNT(*) >= 50
67. CREATE CUBE Ventas_Argentina AS
SELECT Mes, Ciudad, Clientes,
AVG(Valor), COUNT(*)
FROM Ventas_Generales
CUBE BY Mes, Ciudad, Clientes
HAVING AVG(Valor) >= 800 AND
COUNT(*) >= 50
MES CIUDAD CLIENTES PRODUCTOS VALOR NETO VALOR BRUTO
Jan Toronto Edu Printer 500 485
Jan Toronto Hld TV 800 1200
Jan Toronto Edu Camera 1160 1280
Feb Montreal Bus Laptop 1500 2500
Mar Vancouver Edu HD 540 520
… … … … … …
70. Range Sum Count
Over 800 28000 20
600~800 10600 15
400~600 15200 30
… … …
Top 50
Aproximado AVG50()=
(28000+10600+600*15)/50=952
Se supondría que (*, Vancouver, *) nosotros tendríamos
MES CIUDAD CLIENTES PRODUCTOS VALOR NETO VALOR BRUTO
… … … … … …
La celda puede ejecutar el comando HAVING
71. Aproximado AVG50()
Anti Monotonico, puede
ser computado
eficientemente
Real AVG50()
Anti Monotonico, pero
computadamente
costoso
AVG()
No Anti
Monotonico
strongestweakest
72.
73. MES CIUDAD CLIENTES PRODUCTOS VR. NETO VR. BRUTO
Jan Toronto Edu Printer 500 485
Jan Toronto Hhd TV 800 1200
Jan Toronto Edu Camera 1160 1280
Feb Montreal Bus Laptop 1500 2500
Mar Vancouver Edu HD 540 520
… … … … … …
Root
Edu Hhd Bus
Jan Mar Jan Feb
Toronto Vancouver Toronto Montreal
Q.I.Q.I. Q.I.Quant-Info
Sum: 1765
Cuenta: 2
Contendores
Attr. Val. Quant-Info Side-link
Edu Sum:2285 …
Hhd …
Bus …
… …
Jan …
Feb …
… …
Toronto …
Vancouver …
Montreal …
… …
EncabezadodeTabla
74.
75. Root
Edu Hhd Bus
Jan Mar Jan Feb
Toronto Vancouver Toronto Montreal
Q.I.Q.I. Q.I.
Quant-Info
Sum: 1765
Cnt: 2
Contenedores
Attr. Val. Quant-Info Side-link
Edu Sum:2285 …
Hhd …
Bus …
… …
Jan …
Feb …
… …
Tor …
Van …
Mon …
… …
Attr. Val. Q.I. Side-link
Edu …
Hhd …
Bus …
… …
Jan …
Feb …
… …
EncabezadodeTabla
HTor
Desde (*, *, Toronto) hasta (*, Jan, Toronto)
76. Root
Edu. Hhd. Bus.
Jan. Mar. Jan. Feb.
Toronto Vancouver Toronto Montreal
Q.I.Q.I. Q.I.
Attr. Val. Quant-Info Side-link
Edu. Sum:2285 …
Hhd. …
Bus. …
… …
Jan. …
Feb. …
Mar. …
… …
Tor. …
Van. …
Mont. …
… …
1. Roll-Up Quant-Info
2. Computando celdas involucrando Fechas PERO
no Ciudades
Q.I.
Asignación correcta Top-K: Si Q.I. en la inferior tupla
promedio Top-K accede, igual que su superior
inmediato. No es necesario un intervalo!
77. Root
edu hhd bus
Jan Mar Jan Feb
Toronto Vancouver Toronto
Montreal
Q.I.Q.I. Q.I.
Attr. Val. Quant-Info Side-link
Edu Sum:2285 …
Hhd …
Bus …
… …
Jan …
Feb …
Mar …
… …
Tor …
Van …
Mon …
… …
Comprueba el encabezado de la tabla directamente
Q.I.
89. Almacén de datos
Un modelo multidimensional de un data warehouse
Esquema en estrella, Esquema de copo de nieve, Conjuntos de tablas de Hechos
Un cubo de datos se compone de Dimensiones & Medidas
Las operaciones de OLAP: Drilling, Rolling, Slicing, Dicing y Pivoting
Los servidores OLAP: ROLAP, MOLAP, HOLAP
Cómputo eficiente de cubos de datos
Parcial vs. Full vs. No materialización
Agregación matricial multiway
Índice Bitmap y/o Implementaciones de Índice de uniones
Desarrollo de tecnología de cubo de datos
Camino al conocimiento y multi-funciones de cubos
Desde OLAP a OLAM (On-line Analytical Mining)
90.
91.
92. Jose Redondo
Microsoft SQL Server MVP | CEO EntornoDB | DPA SolidQ
redondoj@gmail.com | @redondoj | redondoj.wordpress.com