Un almacén de datos permite reunir información de distintos sistemas para comparar periodos, calcular indicadores y analizar una organización. Una cadena de tiendas, una biblioteca o una empresa de transporte pueden usarlo para responder preguntas que sus registros separados no resuelven fácilmente.
Un data warehouse es un sistema de datos organizado para consultas y análisis, normalmente con información integrada e histórica. Puede apoyarse en tablas relacionales; no necesita ser, por definición, una base multidimensional ni un cubo. [1]
10 ejemplos de almacenes de datos
Todos los datos siguientes son ficticios. En cada caso se indica qué representa una fila: ese nivel de detalle, llamado granularidad, determina qué se puede contar, sumar o comparar. [4]
EJEMPLO 01 · Medidas aditivas y devoluciones
Ventas de varias tiendas
Fuentes: Tickets de dos tiendas y catálogo de productos.
Qué representa una fila: Una línea de venta o devolución, con fecha, tienda y producto.
Cómo se prepara: Unificar los códigos de producto y registrar las devoluciones con signo negativo según una regla común.
Resultado: En el conjunto desarrollado abajo, las ventas suman 190 € y una devolución resta 40 €: el importe neto es 150 €. Norte aporta 80 € y Sur, 70 €.
Para qué sirve: Comparar ventas netas por tienda y periodo para orientar la reposición. El importe vendido no es beneficio: faltan costes y otras partidas.
EJEMPLO 02 · Identidad de origen y cargas repetidas
Pedidos web y de mostrador sin duplicados
Fuentes: Exportaciones de la web y del sistema de mostrador.
Qué representa una fila: Un pedido completo, identificado por sistema de origen y número de pedido.
Cómo se prepara: La web envía dos veces el pedido 17 por 30 €, además del pedido 18 por 20 €. Mostrador envía su propio pedido 17 por 50 €. Rechazar la repetición exacta web/17 y conservar mostrador/17.
Resultado: Cuatro filas de entrada pasan a tres pedidos únicos: 30 + 20 + 50 = 100 €. Sumar las cuatro filas daría 130 €.
Para qué sirve: Medir pedidos e importes sin inflarlos al repetir una carga. Si el mismo pedido llega con cambios, hay que gestionar la actualización; no descartarlo como una repetición idéntica.
EJEMPLO 03 · Homogeneización de unidades
Compras registradas en unidades diferentes
Fuentes: Albaranes de dos proveedores para un mismo material.
Qué representa una fila: Una línea de recepción con material, cantidad y unidad.
Cómo se prepara: Un proveedor registra 2,5 kg y otro 0,8 toneladas. Convertir ambas cantidades a kilogramos y conservar la unidad de procedencia.
Resultado: 0,8 toneladas equivalen a 800 kg; la cantidad conjunta es 802,5 kg. Sumar 2,5 + 0,8 sin convertir produciría un valor sin unidad coherente.
Para qué sirve: Comparar volúmenes recibidos. Si también se comparan precios en monedas distintas, hace falta una regla de conversión con moneda, tipo de cambio y fecha definidos.
EJEMPLO 04 · Saldos y medidas no sumables en el tiempo
Existencias al cierre de cada día
Fuentes: Recuentos diarios de un almacén y su catálogo.
Qué representa una fila: Un producto en un almacén al cierre de un día.
Cómo se prepara: Guardar una fotografía del saldo de cada fecha. Para el mismo producto y almacén se registran 100 unidades el lunes y 80 el martes.
Resultado: El saldo del martes es 80 unidades; no 180. La diferencia entre ambos cierres es −20, pero por sí sola no indica cuántas unidades se vendieron: pudo haber entradas, devoluciones o ajustes.
Para qué sirve: Detectar productos que requieren revisión de existencias. Los saldos pueden sumarse entre almacenes para la misma fecha, pero no entre fechas como si fueran ventas.
Fuentes: Matrículas y resultados finales de dos cursos.
Qué representa una fila: Una matrícula en una edición de un curso, con su resultado final.
Cómo se prepara: Usar el mismo criterio de aprobado y el mismo cierre de evaluación. Un curso tiene 90 aprobados entre 100 matrículas; otro, 1 entre 10.
Resultado: El porcentaje conjunto es 91 / 110 × 100 = 82,73 %, redondeado a dos decimales. Promediar directamente 90 % y 10 % daría 50 %, que no representa al conjunto de matrículas.
Para qué sirve: Comparar resultados con denominadores explícitos. Se cuentan matrículas, no personas únicas: alguien podría estar inscrito en ambos cursos.
EJEMPLO 06 · Recuento de operaciones frente a valores distintos
Préstamos de una biblioteca
Fuentes: Registro de préstamos y catálogo de ejemplares.
Qué representa una fila: Un préstamo de un ejemplar, identificado por su operación.
Cómo se prepara: Relacionar cada préstamo con su ejemplar y fecha. El ejemplar A se presta dos veces y el B, una; cada operación conserva su identificador.
Resultado: Hay tres préstamos y dos ejemplares distintos prestados. Las dos cifras responden a preguntas diferentes.
Para qué sirve: Estudiar circulación por colección y mes. Unir préstamos a una tabla que repite el mismo ejemplar puede multiplicar filas e inflar el recuento.
EJEMPLO 07 · Condiciones de un indicador y datos pendientes
Cumplimiento de entregas
Fuentes: Pedidos, fechas comprometidas y confirmaciones de entrega.
Qué representa una fila: Un envío con una fecha comprometida y una fecha real de entrega.
Cómo se prepara: Comparar las marcas de tiempo en la misma zona horaria y fijar el límite: en este ejemplo, entregar exactamente a la hora acordada cuenta como puntual.
Resultado: De doce envíos ya entregados, nueve llegaron a tiempo: 9 / 12 × 100 = 75 %. Los pendientes se muestran aparte y no desaparecen del informe.
Para qué sirve: Examinar retrasos por ruta. Hay que aclarar que este indicador describe los envíos entregados; no mide por sí solo todo el servicio, pues deja fuera los que todavía no llegaron.
EJEMPLO 08 · Dimensiones con historia
Ventas según la región vigente en cada fecha
Fuentes: Ventas y asignaciones territoriales del equipo comercial.
Qué representa una fila: Una venta vinculada a la versión de la asignación del vendedor válida en esa fecha.
Cómo se prepara: Una vendedora pertenece a Norte hasta el 31 de enero y a Sur desde el 1 de febrero. Conservar dos versiones con intervalos sin solaparse, en vez de sobrescribir toda su historia.
Resultado: Una venta de 30 € del 20 de enero queda en Norte; otra de 50 € del 10 de febrero, en Sur. Usar solo la región actual trasladaría ambas a Sur.
Para qué sirve: Comparar la actividad de cada región tal como estaba organizada. Si la pregunta exige reclasificar todo según la estructura actual, ese es otro informe y debe indicarse.
Este tratamiento se conoce como dimensión de cambio lento de tipo 2. [5]
EJEMPLO 09 · Correcciones y llegada tardía
Calidad de fabricación con una corrección tardía
Fuentes: Lotes terminados e inspecciones de calidad.
Qué representa una fila: Un lote inspeccionado, con fecha de producción y fecha de carga.
Cómo se prepara: Un lote de 200 piezas se registra con diez rechazadas. Una revisión corrige el rechazo a ocho. Actualizar el resultado vigente del mismo lote y dejar trazabilidad de la corrección.
Resultado: La tasa pasa de 10 / 200 = 5 % a 8 / 200 = 4 %. No hay dos lotes ni 400 piezas; sumar las dos versiones duplicaría la producción.
Para qué sirve: Revisar el informe del periodo afectado y señalar su fecha de actualización. Mantener historia no impide corregir errores de forma controlada.
EJEMPLO 10 · Acumulados, intervalos y reinicios
Consumo de energía a partir de un contador
Fuentes: Lecturas acumuladas y catálogo de contadores.
Qué representa una fila: Una lectura de un contador en un instante determinado.
Cómo se prepara: Tomar dos lecturas válidas del mismo contador: 1.000 kWh al inicio y 1.250 kWh al final del intervalo.
Resultado: El consumo entre lecturas es 250 kWh. Sumarlas para obtener 2.250 kWh confundiría un acumulado con un consumo del periodo.
Para qué sirve: Comparar consumos de intervalos equivalentes. Si el contador se reinicia o se sustituye, hay que tratar ese evento antes de calcular la diferencia.
Se han unificado las fechas, los códigos y la moneda. Cada ID identifica una línea dentro de su sistema de origen; Norte utiliza TPV-N y Sur, TPV-S. La última fila es una devolución de una unidad del producto B al mismo precio de venta.
Movimientos normalizados: todos los importes en euros
ID
Fecha
Tienda
Producto
Unidades
Precio unitario
Importe
N1
2026-01-10
Norte
A
2
10
20
N2
2026-01-10
Norte
B
1
40
40
S1
2026-01-10
Sur
A
3
10
30
S2
2026-01-10
Sur
B
2
40
80
N3
2026-01-11
Norte
C
1
20
20
S3
2026-01-11
Sur
B
-1
40
-40
Calcular cada importe: unidades × precio unitario. La devolución vale −1 × 40 = −40 €.
Agrupar por tienda: Norte suma 20 + 40 + 20 = 80 €; Sur suma 30 + 80 − 40 = 70 €.
Conciliar el total: 190 € de ventas − 40 € devueltos = 150 € netos. Las unidades netas son ocho.
Interpretar: es un conjunto de ejemplo sin impuestos ni descuentos. No basta para calcular beneficio ni para comparar la rentabilidad de las tiendas.
Una tabla de hechos puede guardar estos movimientos y relacionarlos con tablas de fecha, tienda y producto. Cambiar la agrupación permite comparar por día o por producto sin modificar el significado de una fila.
Ver el ejemplo SQL completo
Tabla simplificada para practicar la agregación, no una arquitectura completa de almacén de datos. El precio se guarda en céntimos enteros y se convierte a euros al presentar el resultado. La consulta filtra la moneda para no mezclar importes.
Comprobado con SQLite 3.53.1. Debe ejecutarse en una base vacía; no se atribuye compatibilidad sin cambios con SQL Server u Oracle.
-- Ejecutar en una base vacía de SQLite.
-- Cada fila ya está normalizada y representa una línea de movimiento.
CREATE TABLE movimientos (
sistema TEXT NOT NULL,
id_movimiento TEXT NOT NULL,
fecha TEXT NOT NULL,
tienda TEXT NOT NULL,
producto TEXT NOT NULL,
unidades INTEGER NOT NULL CHECK (unidades <> 0),
precio_centimos INTEGER NOT NULL CHECK (precio_centimos >= 0),
moneda TEXT NOT NULL,
PRIMARY KEY (sistema, id_movimiento)
);
INSERT INTO movimientos VALUES
('TPV-N', 'N1', '2026-01-10', 'Norte', 'A', 2, 1000, 'EUR'),
('TPV-N', 'N2', '2026-01-10', 'Norte', 'B', 1, 4000, 'EUR'),
('TPV-S', 'S1', '2026-01-10', 'Sur', 'A', 3, 1000, 'EUR'),
('TPV-S', 'S2', '2026-01-10', 'Sur', 'B', 2, 4000, 'EUR'),
('TPV-N', 'N3', '2026-01-11', 'Norte', 'C', 1, 2000, 'EUR'),
('TPV-S', 'S3', '2026-01-11', 'Sur', 'B', -1, 4000, 'EUR');
SELECT tienda,
SUM(unidades) AS unidades_netas,
SUM(unidades * precio_centimos) / 100.0 AS importe_eur
FROM movimientos
WHERE moneda = 'EUR'
GROUP BY tienda
ORDER BY tienda;
Resultado esperado: Norte | 4 | 80.0; Sur | 4 | 70.0. Las columnas son tienda, unidades netas e importe en euros.
De las fuentes al análisis: ETL y ELT
Fuentes: tickets, pedidos, catálogos o lecturas.
Integración: identificar registros, validar campos, convertir unidades y resolver relaciones.
Almacén: guardar detalle e historia con reglas de actualización.
Análisis: consultar, resumir y presentar resultados con su fecha de corte.
En ETL se extraen los datos, se transforman y se cargan en el destino. En ELT se extraen y cargan primero, y se transforman utilizando el entorno de destino. La elección depende de la arquitectura y de sus controles. [2][3]
La minería de datos busca patrones en los datos; no es el nombre general de los programas que extraen o cargan información. Un proceso puede combinar extracción, análisis y otras tareas, pero cumplen funciones distintas.
Separar las consultas analíticas de la base operativa puede reducir la competencia por recursos. Aun así, extraer datos, replicarlos y transferirlos consume recursos: hay que planificar la carga y medir su impacto, sin prometer que será nulo.
Características y límites de un almacén de datos
Integración: una misma unidad, clave o definición debe tener un significado consistente entre fuentes.
Organización por temas: ventas, inventario o préstamos, según las preguntas de análisis.
Historia: distinguir fecha del evento, vigencia del dato y fecha de carga permite comparar periodos.
Estabilidad controlada: el almacén no se edita como una pantalla de caja; recibe cargas y puede requerir correcciones auditadas. «No volátil» no significa que jamás cambie ni que conserve todo para siempre.
Detalle y resumen: guardar solo un total mensual impide reconstruir tickets si el detalle no está disponible en otra parte.
Acceso definido: permisos, documentación de indicadores y controles de calidad ayudan a interpretar los resultados.
Por ejemplo, una carga que termina a las 02:00 con datos hasta las 00:00 no incluye necesariamente una operación de las 09:00. La fecha del informe no sustituye a la fecha de corte de los datos.
SQL Server, Excel y Oracle: qué papel cumple cada uno
SQL Server y sus servicios de análisis
Un almacén puede implementarse sobre el motor relacional de SQL Server. Integration Services (SSIS) permite construir flujos de integración, transformación y carga; Analysis Services (SSAS) proporciona modelos analíticos tabulares o multidimensionales. Son componentes con responsabilidades distintas. [6][7]
Ejemplo: reunir ventas en el almacén, preparar medidas por producto y fecha en un modelo analítico y consultarlas desde una aplicación de informes. Tener SQL Server instalado no crea por sí solo esa estructura.
Excel como herramienta de análisis
El modelo de datos de Excel permite relacionar tablas dentro de un libro y utilizarlas en tablas y gráficos dinámicos. Power Query ayuda a obtener y transformar datos. Su disponibilidad concreta depende de la versión y la plataforma. [8]
Ejemplo: relacionar una tabla de ventas con un catálogo y resumir importes por categoría. Ese libro puede ser útil para análisis personal; no equivale por sí mismo a un almacén empresarial con cargas coordinadas, historial y acceso compartido controlado. Excel también puede consumir modelos de Analysis Services. [7]
Oracle para almacenamiento e integración
Oracle documenta el uso de su base de datos para almacenes analíticos y técnicas para cargar y transformar información. Oracle Data Integrator es una herramienta de integración; la base de datos y el proceso de carga no son el mismo componente. [1][2]
Ejemplo: integrar pedidos de varias aplicaciones, conservar su historia en tablas y consultar totales por periodo. Elegir un producto no define automáticamente las claves, los controles de calidad ni los indicadores.
Almacén, cubo e informe no son lo mismo
Componente
Función
Ejemplo
Base operativa
Registrar operaciones diarias.
Guardar un ticket al cobrar.
Almacén de datos
Integrar datos e historia para análisis.
Reunir ventas de varias tiendas y periodos.
Modelo analítico
Definir medidas y relaciones para consultar.
Un cubo por fecha, tienda y producto, o un modelo tabular.
Informe
Mostrar resultados de una consulta.
Ventas netas por tienda en una tabla dinámica.
Un cubo es una forma de modelar el análisis multidimensional; no es un requisito universal del almacén. Cambiar de herramienta de presentación tampoco corrige datos duplicados o unidades incompatibles.
8 ejercicios para practicar
Un almacén conserva ventas en tablas relacionales. ¿Necesita un cubo para ser un data warehouse?
Se vuelve a cargar el mismo archivo de pedidos. ¿Qué evita duplicar importes?
¿Por qué 100 unidades el lunes y 80 el martes no suman un stock de 180?
¿Qué porcentaje representa 90 aprobados de 100 y 1 de 10 en conjunto?
Una vendedora cambia de región. ¿Cómo conservar las ventas en su región de entonces?
Un informe cargado a las 02:00 incluye datos hasta medianoche. ¿Una venta de las 09:00 tiene que aparecer?
¿Excel, un cubo y un almacén son tres nombres del mismo componente?
Una lectura pasa de 1.000 a 1.250 kWh. ¿Qué consumo hubo si no hubo reinicio?
Ver respuestas razonadas
No. El propósito analítico, la integración y la organización de los datos no obligan a usar un modelo multidimensional.
Identificar cada operación con una clave estable, comprobar origen y versión, y diseñar una carga que no inserte de nuevo las repeticiones exactas.
Son saldos del mismo producto en momentos diferentes. El cierre del martes es 80; los saldos no se acumulan en el tiempo como flujos.
91 de 110 matrículas: aproximadamente 82,73 %. Hay que sumar numeradores y denominadores antes de calcular la tasa.
Guardar versiones de su asignación con periodos de validez y relacionar cada venta con la versión que corresponda a su fecha.
No en esa carga. Hay que consultar la fecha de corte, la frecuencia de actualización y si la última carga terminó correctamente.
No. Excel es una aplicación de análisis; un cubo es un modelo analítico multidimensional; el almacén organiza datos integrados para consultas e historia.
250 kWh entre las lecturas. Hace falta verificar que pertenecen al mismo contador y a los extremos del intervalo.
Errores frecuentes
Llamar minería de datos a cualquier extracción. Buscar patrones y cargar registros son tareas distintas.
Mezclar niveles de detalle. Un ticket, una línea y un total mensual no representan la misma unidad.
Sumar monedas o unidades incompatibles. Normaliza o separa los grupos antes de agregar.
Sumar saldos de fechas diferentes. Diferencia existencias, flujos y lecturas acumuladas.
Promediar porcentajes sin sus denominadores. Calcula el indicador conjunto a partir de sus cantidades de base.
Sobrescribir la historia necesaria. Conserva las versiones que exija la pregunta de análisis.
Confundir carga reciente con datos completos. Comprueba el corte, los fallos y los registros tardíos.
Prometer impacto operativo nulo. La extracción y transferencia también utilizan recursos.