You are on page 1of 8

PRACTICA: GLOBAL COMPUTING COMPANY

La compañía Global Computing, nacida en 1990, distribuye componentes software y hardware a clientes
en todo el mundo, mediante venta directa, catálogo e internet. Las ventas han sido históricamente
estacionales, siendo el primer trimestre el más fuerte y el tercero el más pobre. La compañía ha tenido
un crecimiento saludable a lo largo de los años.
Problemas de negocio
Sin motivo aparente, la compañía ha tenido un primer trimestre de ventas más bajo que en otros años.
Los márgenes se han reducido, las ventas han empezado a descender y los beneficios han bajado.
Recientemente, la compañía ha empezado a utilizar internet como un nuevo canal de ventas, pero los
beneficios han seguido decreciendo.
GCC quiere analizar las tendencias de ventas recientes, qué componentes de su negocio generan
beneficios y cuales podrían generar más. En cualquier caso, la información que ha llegado del director de
departamento dice que los sistemas actuales de reporting no proporciona la información necesaria para
comprender que está ocurriendo. Esta carencia de información está llevando a tomar decisiones
basadas en la intuición más que en los datos actuales.
Recomendaciones del equipo directivo
El equipo directivo de GCC recomienda que el departamento de IT diseñe y construya un Data
Warehouse, de forma que proporcione respuestas a las cuestiones críticas. La implementación inicial
debe realizarse en 120 días.
Resultados del análisis estratégico de GCC
De las entrevistas con los miembros del equipo directivo corporativo se han extraído dos procesos
principales como candidatos para el Data Wareouse: Ventas y Gestión de Inventario.

Ventas: El departamento de ventas y marketing no tiene acceso a información en tiempo de qué
se está vendiendo (y que no), quién lo está vendiendo y como se está vendiendo.
Específicamente necesitan saber:
o Que productos se venden por cada canal de venta
o Que productos están contribuyendo más a las ventas y los beneficios, y cuál es la
tendencia de los dos últimos años, incluyendo información del margen para comprender
la contribución económica para cada familia de productos y cada clase de producto.
o Qué segmentos de cliente producen el mayor volumen de ventas, y los productos que
más se venden
Gestión de Inventario: El departamento de canal no dispone de importantes detalles sobre
costes de numerosos minoristas de productos. No pueden:
o Comparar acuerdos con diferentes minoristas sobre la misma categoría de producto
o Identificar qué minorista son los mejores y peores desde el punto de vista de la
disponibilidad de producto y los tiempos de entrega.
o Analizar los costes de mantenimiento del almacén de inventario por minorista

Toda esta información permitirá a GCC a reducir costes e incrementar beneficios, negociando mejor los
acuerdos con minoristas.
Objetivos de negocio para el Data Warehouse
El equipo de dirección decide implementar el proceso de negocio de ventas, donde se encuentran tres
objetivos de negocio principales.
GCC quiere incrementar ventas y beneficios:

   Identificando y asegurando los canales de venta más beneficiosos Identificando las tendencias de venta de productos para una mejor planificación Identificar los mayores crecimientos y más rentables segmentos del mercado de clientes Requerimientos de información del negocio A través de entrevistas con el Departamento de Ventas y Marketing se detecta las siguientes carencias de información:      La identificación de los mejores y peores productos se mide en Euros vendidos. unidades vendidas. almacén. cuenta de cliente. Analizar los canales de ventas y la manera de aumentar las ganancias a través de los mismos. origen del producto (nacional o extranjero). consulting. etc. El sistema OLTP fuente de datos es el siguiente: *ID_ELEMENTO *FECHA_EFECTO COSTE_ UNITARIO PRECIO_UNITARIO *ID_ELEMENTO FECHA_EFECTO COSTE_ UNITARIO PRECIO_UNITARIO *ID_FAMILIA DESC_FAMILIA ID_CLASE *ID_ELEMENTO PAQUETE DESCRIPCIÓN FUENTE ID_FAMILIA ID_CLASE *ID_ORDEN *NUM_LIN_ORDEN ID_ELEMENTO UNIDADES VENTAS COSTE *ID_CANAL DESC_CANAL *ID_SEGMENTO DESC_SEGMENTO *ID_ORDEN ID_CANAL ID_ENTREGA FECHA_ORDEN ID_COMERCIAL ID_PAGO VENTAS_TOTAL IMPUESTOS *ID_CUENTA CU_NOMBRE CU_DIRECCIÓN CU_CIUDAD CU_PROVINCIA CU_C_AUTÓNOMA CU_COD_POSTAL CU_TASA_IMPUESTO ID_SEGMENTO *ID_COMERCIAL NOMBRE ID_JEFE *ID_PAGO DESCRIPCION_PAG *ID_ENTREGA ID_CUENTA ID_ALMACEN DIRECCIÓN CIUDAD PROVINCIA C_AUTÓNOMA COD_POSTAL TASA_IMPUESTO DESCRIPCIÓN DESC_TIPO_DIR *ID_CLASE DESC_CLASE Se pide realizar el modelado del DWH completando. incluyendo: oferta de paquete personalizado. el Departamento de Ventas y Marketing debe (Objetivos de negocio):    Analizar las tendencias de la industria y los segmentos específicos del mercado de destino. incrementándose los beneficios de la compañía. en los diferentes pasos. Identificar las tendencias de producto ofertados por la compañía y crear una estrategia para el desarrollo de los canales adecuados. Para alcanzar el objetivo anterior. o tipo de dirección de entrega (oficinas centrales. Informe de ventas por una combinación de atributos específicos de usuario por producto y cliente. . El objetivo global que deducimos de la lectura del planteamiento es que la compañía Global Computing desea aumentar sus ganancias incrementando de las ventas de productos. Los mejores y peores canales de distribución por familia de producto Tendencias de venta mensual. trimestral y anual por: o Canal de distribución o Producto. las siguientes tablas y generando una memoria con toda la documentación relevante del proceso. segmento de mercado del cliente. educación. familia de producto y clase de producto o Segmento de cliente (como manufacturación.) Información de cuenta de cliente por dirección de entrega (un cliente puede tener más de una dirección de entrega). y beneficio (euros de margen y porcentaje de margen). sede.). etc.

cambio del año anterior Unidades vendidas. Identificación de los hechos de negocio:                Ventas Unidades Variación de las ventas respecto al período anterior Variación porcentual de las ventas al período anterior Cantidad de ventas del año anterior Porcentaje de ventas del año anterior Cuota de producto Canales de ventas Cuota de mercado Coste total de cada producto Margen de beneficio Unidades vendidas. cambiar de período anterior Unidades vendidas. Tiempo muestra cómo los datos varían con el tiempo. Canal muestra cómo los datos varían según cada canal de distribución.Los Procesos de negocios son:  Ventas  Gestión de inventario Pero sólo se va a implementar el primero: Ventas. Las cuatro dimensiones que utilizaré para organizar los hechos en la base de datos:     Producto muestra cómo los datos varían según el producto. extraigo cuatro hechos (medidas) de la base de datos transaccional:    Euros Vendidos Unidades Vendidas Beneficio: o Euros de Margen o Porcentaje de margen . variación porcentual del año anterior Del listado anterior. Cliente muestra cómo los datos varían por segmento y zona geográfica. variación porcentual del periodo anterior Unidades vendidas.

P RODUCTO CANAL Key_Producto Coste_Unitario Key_Familia Desc_Familia Key_Clase Desc_Clase Paquete Fuente Key_Total Desc_Total Precio_Unidad Key_Canal Desc_Canal Key_Total Desc_Total VENT AS Key_Canal (FK) Key_Direccion_Entrega (FK) Key_Mes (FK) Key_Producto (FK) Euros_Margen Unidades_Vendidas Euros_Vendidos Porcentaje_Margen T IEMPO Key_Mes Key_Año Desc_Año Key_Trimestre Desc_Trimestre Desc_Mes Key_Total Desc_Total Medida Euros Vendidos Unidades Vendidas Euros Margen Porcentaje de Margen CLIENT E Key_Direccion_Entrega Key_Cuenta Key_Segmento Desc_Segmento Desc_Cuenta Key_C_Autonoma Desc_C_Autonoma Key_Provincia Desc_Provincia Key_Ciudad Desc_Ciudad Cod_Postal Tasa_Impuesto Dimensión Negocio Elemento Dimensión Producto Producto Familia Clase Paquete Fuente Precio_Unidad Coste_Unidad Cuenta Segmento C_Autonoma Provincia Ciudad Direccion_Entrega Tasa_Impuesto Canal Año Trimestre Mes Cliente Canal Tiempo .

Medida DWH Euros Vendidos Unidades Vendidas Euros de Margen Porcentaje de Margen Dimensión Producto Cliente Jerarquía Producto Geográfica Canal Tiempo Canal_Ventas Temporal BASE Si Si DERIVADA Si Si Niveles Jeraquía TOTAL / CLASE / FAMILIA / PRODUCTO TOTAL / C_AUTONOMA / PROVINCIA / CIUDAD / DIRECCION_ENTREGA TOTAL / CANAL TOTAL / AÑO / TRIMESTRE / MES P RODUCT O Key_Producto Coste_Unitario Key_Familia Desc_Familia Key_Clase Desc_Clase Paquete Fuente Key_Total Desc_T otal Precio_Unidad Desc_Producto CANAL Key_Canal Desc_Canal VENTAS Key_Canal (FK) Key_Direccion_Entrega (FK) Key_Mes (FK) Key_Producto (FK) Euros_Margen Unidades_Vendidas Euros_Vendidos Porcentaje_Margen T IEMPO Key_Mes Key_Año Desc_Año Key_T rimestre Desc_Trimestre Desc_Mes Key_T otal Desc_Total CLIENTE Key_Direccion_Entrega Key_Cuenta Key_Segmento Desc_Segmento Desc_Cuenta Key_C_Autonoma Desc_C_Autonoma Key_Provincia Desc_Provincia Key_Ciudad Desc_Ciudad Cod_Postal Tasa_Impuesto Desc_Direccion_Entrega M e jores_Productos Cl a sificacion_Canales Key_Canal Desc_Canal Key_Producto Key_Familia Desc_Familia Unidades_Vendidas T e ndencias_Productos_Mensual Desc_Mes Key_Mes Key_Producto Unidades_Vendidas Desc_Producto Key_Producto Desc_Producto Euros_Vendidos Unidades_Vendidas Porcentaje_Margen Euros_Margen .

DROP MATERIALIZED VIEW Clasificacion_Canales.6) NULL . ALTER TABLE CLIENTE ADD CONSTRAINT XPKCLIENTE PRIMARY KEY (Key_Direccion_Entrega). Desc_Segmento CHAR(150) NULL . DROP TABLE CLIENTE. Desc_Direccion_Entrega CHAR(150) NULL ). Fuente VARCHAR2(20) NULL . DROP TABLE TIEMPO. Key_C_Autonoma INTEGER NULL . Key_Segmento INTEGER) NULL . Desc_Cuenta CHAR(150) NULL . CREATE TABLE CANAL ( Key_Canal INTEGER NOT NULL . Desc_Provincia CHAR(150) NULL . DROP MATERIALIZED VIEW Tendencias_Productos_Mensual. CREATE UNIQUE INDEX XPKCLIENTE ON CLIENTE (Key_Direccion_Entrega ASC). ALTER TABLE CANAL ADD CONSTRAINT XPKCANAL PRIMARY KEY (Key_Canal). Key_Provincia INTEGER NULL . DROP DIMENSION DIM_TIEMPO. Desc_Total VARCHAR2(20) NULL . Desc_Clase CHAR(150) NULL . DROP TABLE PRODUCTO. Desc_Ciudad CHAR(150) NULL . DROP MATERIALIZED VIEW Mejores_Productos. Paquete VARCHAR2(20) NULL . Key_Clase INTEGER NOT NULL. Key_Cuenta INTEGER NULL . CREATE TABLE CLIENTE ( Key_Direccion_Entrega INTEGER NOT NULL . Desc_Familia CHAR(150) NULL . DROP TABLE CANAL. Desc_C_Autonoma CHAR(150) NULL . Key_Total INTEGER NOT NULL. DROP DIMENSION DIM_PRODUCTO. .SCRIPT DROP DIMENSION DIM_CLIENTE. CREATE TABLE PRODUCTO ( Key_Producto INTEGER NOT NULL . Tasa_Impuesto CHAR(4) NULL . DROP TABLE VENTAS. Desc_Canal CHAR(150) NULL ). CREATE UNIQUE INDEX XPKCANAL ON CANAL (Key_Canal ASC). Key_Familia INTEGER NOT NULL . Coste_Unitario DECIMAL(4. Key_Ciudad INTEGER NULL . DROP DIMENSION DIM_CANAL. Cod_Postal CHAR(5) NULL .

Desc_Mes DATE NULL . CREATE UNIQUE INDEX XPKVENTAS ON VENTAS (Key_Canal ASC.Key_Direccion_Entrega. Euros_Vendidos DECIMAL(5. Porcentaje_Margen CHAR(3) NULL . CREATE UNIQUE INDEX XPKTIEMPO ON TIEMPO (Key_Mes ASC). Key_Direccion_Entrega INTEGER NOT NULL.Key_Producto).Key_Producto ASC). Key_Producto INTEGER NOT NULL ).3) NULL .Key_Direccion_Entrega ASC.KEY_CIUDAD level provincia is DIM_CLIENTE. ALTER TABLE TIEMPO ADD CONSTRAINT XPKTIEMPO PRIMARY KEY (Key_Mes).KEY_C_AUTONOMA hierarchy CLIENTE (direccion child of ciudad child of provincia child of comunidad) attribute direccion determines DESC_DIRECCION_ENTREGA attribute ciudad determines DESC_CIUDAD .Precio_Unidad Desc_Producto DECIMAL(4. CREATE TABLE TIEMPO ( Key_Año INTEGER NOT NULL . ALTER TABLE VENTAS ADD (CONSTRAINT R_4 FOREIGN KEY (Key_Mes) REFERENCES TIEMPO (Key_Mes)). CREATE TABLE VENTAS ( Euros_Margen CHAR(18) NULL . Desc_Año DATE NULL . Key_Mes INTEGER NOT NULL.KEY_DIRECCION_ENTREGA level ciudad is DIM_CLIENTE. VARCHAR2(120) NULL ). Desc_Total DATE NULL ). ALTER TABLE VENTAS ADD CONSTRAINT (Key_Canal.Key_Mes ASC. CREATE UNIQUE INDEX XPKPRODUCTO ON PRODUCTO (Key_Producto ASC). XPKVENTAS PRIMARY KEY ALTER TABLE VENTAS ADD (CONSTRAINT R_2 FOREIGN KEY (Key_Canal) REFERENCES CANAL (Key_Canal)). Key_Trimestre INTEGER NOT NULL. Desc_Trimestre DATE NULL . ALTER TABLE VENTAS ADD (CONSTRAINT R_1 FOREIGN KEY (Key_Producto) REFERENCES PRODUCTO (Key_Producto)). Key_Mes INTEGER NOT NULL. CREATE DIMENSION DIM_CLIENTE level direccion is DIM_CLIENTE.Key_Mes.3) NULL .KEY_PROVINCIA level comunidad is DIM_CLIENTE. Unidades_Vendidas INTEGER NULL . ALTER TABLE PRODUCTO ADD CONSTRAINT XPKPRODUCTO PRIMARY KEY (Key_Producto). ALTER TABLE VENTAS ADD (CONSTRAINT R_3 FOREIGN KEY (Key_Direccion_Entrega) REFERENCES CLIENTE (Key_Direccion_Entrega)). Key_Canal INTEGER NOT NULL . Key_Total INTEGER NOT NULL.

TIEMPO .Key_Producto.Key_Mes AND Ventas. VENTAS.KEY_MES level trimestre is DIM_TIEMPO.Desc_Canal.Key_Familia.Key_Familia ORDER BY Ventas.PRODUCTO WHERE Ventas.ID_CANAL attribute canal determines DESC_CANAL.Desc_Producto FROM PRODUCTO .Key_Canal=Canal.VENTAS .Unidades_Vendidas.Key_Mes=Tiempo. PRODUCTO.Unidades_Vendidas.Key_Producto=Ventas.KEY_AÑO hierarchy TIEMPO (mes child of trimestre child of año) attribute mes determines DESC_MES attribute trimestre determines DESC_TRIMESTRE attribute año determines DESC_AÑO. VENTAS. CANAL.Key_Producto.Key_Producto AND SUM(Ventas. CREATE MATERIALIZED VIEW Tendencias_Productos_Mensual AS SELECT ALL TIEMPO.VENTAS WHERE Producto.Key_Prioducto=Ventas.Euros_Margen FROM PRODUCTO . CREATE DIMENSION DIM_TIEMPO level mes is DIM_TIEMPO. PRODUCTO.attribute provincia determines DESC_PROVINCIA attribute comunidad determines DESC_COMUNIDAD. PRODUCTO. VENTAS. VENTAS.Unidades_Vendidas.Unidades_Vendidas. PRODUCTO. CREATE MATERIALIZED VIEW Mejores_Productos AS SELECT PRODUCTO.Key_Canal.Key_Producto=Producto. CREATE DIMENSION DIM_CANAL level canal is DIM_CANAL. PRODUCTO.Key_Mes.Key_Producto GROUP BY Producto.Desc_Producto.Euros_Vendidos. CREATE DIMENSION DIM_PRODUCTO level producto is DIM_PRODUCTO. CREATE MATERIALIZED VIEW Clasificacion_Canales AS SELECT CANAL.Desc_Familia. / .Desc_Mes.KEY_CLASE hierarchy producto (elemento child of familia child of clase) attribute producto determines DESC_ELEMENTO attribute familia determines DESC_FAMILIA attribute clase determines DESC_CLASE.KEY_PRODUCTO level familia is DIM_PRODUCTO.Key_Mes AND Producto.Key_Canal AND Producto.Key_Producto GROUP BY Producto.KEY_TRIMESTRE level año is DIM_TIEMPO.Key_Producto.Unidades_Vendidas) ORDER BY Tiempo. VENTAS.Unidades_Vendidas FROM CANAL .Key_Familia ORDER BY Ventas. TIEMPO.Key_Producto.KEY_FAMILIA level clase is DIM_PRODUCTO.VENTAS WHERE Ventas. PRODUCTO.Porcentaje_Margen.Key_Producto GROUP BY Producto. VENTAS.