Trabajo Final Arquitectura
Trabajo Final Arquitectura
Trabajo Final Arquitectura
CONSTRUCCIÓN DE UN DATA
WAREHOUSE
ARQUITECTURA DE DATOS
Un Data Warehouse no se hace en una sola iteración. Cada asunto tratado se descompone en un
grupo de iniciativas (las aplicaciones). perímetro de cada aplicación debería estar precisamente
determinado (actores afectados, frecuencia y periodicidad de los estudios, fines y naturaleza de
las vueltas conceder resultados «tangibles» en un plazo de menos de 6 meses, que
descomposición en aplicaciones aporta varias ventajas, empero crea problemas sobre ciertos
temas, como los involucrados con la infraestructura técnica y organizativa que requieren que se
imagine una perspectiva más universal. aplicación puede además ser un programa de elección.
• Contar con el IDE para la administración SQL EXPRESS, este se puede instalar a través del
siguiente enlace: https://docs.microsoft.com/en-us/sql/ssms/download-sql-server-
management-studio-ssms?view=sql-server-ver15
• Como primer paso abriremos SQL Management Studio donde nos conectaremos
Localhost y nuestra instancia SQL Express
• Luego de conectarmos, proceremos a crear el Data Warehouse, en este caso lo
llamaremos DW_Planta
• A continuación, generaremos una nueva tabla llamada: D_PRODUCTOS
Esta tabla tendrá un id de producto; de tipo nvarchar, nombre del producto; de tipo nvarchar,
y la categoría a la cual pertenece; también de tipo nvarchar. Además, pondremos id_producto
como nuestra llave primaria.
Esta tabla tendrá un id de sucursal; de tipo entero, un nombre de sucursal; de tipo nvarchar,
un nombre región; de tipo nvarchar, un nombre comuna; de tipo nvarchar y por último un
nombre ciudad; de tipo nvarchar. Además, pondremos id_sucursal como nuestra llave
primaria
Esta tabla tendrá un id de cliente; de tipo nvarchar, un nombre de cliente; de tipo nvarchar,
una edad; de tipo entero y un estado civil; de tipo nvarchar. Además, pondremos id_cliente
como nuestra llave primaria
Esta tabla tendrá un id de tiempo; de tipo nvarchar, un mes; de tipo entero y un año; de tipo
entero. Además, pondremos id_tiempo como nuestra llave primaria.
CREATE TABLE D_TIEMPO ( id_tiempo nvarchar(50), mes int NULL, anio int NULL, CONSTRAINT
PK_D_TIEMPO PRIMARY KEY (id_tiempo) );
Para nuestro primer campo id_venta, iremos a las propiedades y seleccionamos la opción:
identify specification y en el campo Is identify lo cambiamos por sí.
Esto hace que nuestra id_venta sea una variable incremental.
• Luego de esto, crearemos las relaciones entre tablas. Para este, nos dirigimos a la
tabla de hechos y creamos todas las llaves foráneas para hacer relación a otras
entidades o tablas.
Ahí se desplegará un menú donde se relacionarán las tablas.
• Seleccionamos cada una de las llaves correspondientes a las tablas
Esta tabla o entidad almacenará los datos de ciudades donde se encuentran ubicadas las comunas
• Agregamos la tabla D_COMUNA
Esta tabla o entidad almacenará los datos de las comunas donde se encuentran ubicadas las
sucursales
Para poblar las tablas, ejecutamos los siguientes querys desde las bases de datos anteriormente
restaurada PlantAndHealth:
USE PlantAndHealth;
INSERT INTO DW_Planta.dbo.D_REGION
SELECT REGION_ID, REGION FROM REGION;
Verificamos que los datos fueron insertados con éxito.
• Left Join
Este Query nos trae como resultado un reporte de las ventas con sus respectivas sucursales,
incluyendo qué producto se está vendiendo, la cantidad de productos vendidos y el monto total de
la venta. Las tablas que se relacionan son H_Venta, D_Sucursal, D_producto
• Right Join
Este Query nos trae como resultado un reporte de los empleados junto a las capacitaciones que
tendrán. Las tablas que se relacionan son D_Vendedor y D_tipodecapacitacion
• Inner Join
Este Query nos trae como resultado un reporte de ciudades y sus respectivas comunas. Las tablas
que se relacionan son D_ciudad y D_comuna
• Full Join
Este Query nos trae como resultado un reporte de las ventas realizadas en comunas, en sucursales,
con sus respectivos productos la cantidad vendida y por último su monto de venta. Las tablas que se
relacionan son H_Venta,D_sucursal, D_producto y D_comuna
• Consulta vista materializada
Una VM no es más que una vista, con la diferencia de que además de almacenarse su definición se
almacenan los datos que retorna.
La contra es que salvo que se defina como actualizable al hacer commit en las tablas referenciadas
(poco común) una vez creada la VM los datos van a ser estáticos hasta su actualización, que puede
ser tanto manual como automática.
Hay muchos casos en que no hace falta tener el contenido actualizado, por ejemplo cuando se
desean ver datos consolidados al día anterior (en algunos tipos de dashboard).
Es decir, el negocio y la aplicación definirá si nos sirve utilizar una VM, en cuyo caso se va a ganar
muchísimo a nivel performance.
Como alternativa esta utilizar una VM que se actualice a nivel datos con cada commit realizado a
las tablas referenciadas, hay que tener cuidado en este caso que no genere un inconveniente en la
operación cuando se dispara el refresh.
Referencias
https://es.stackoverflow.com/questions/36/cu%C3%A1l-es-la-diferencia-entre-un-inner-y-un-
outer-join
https://mode.com/sql-tutorial/sql-outer-joins/
https://www.youtube.com/watch?v=WAOs7E0xXZk