Data Vault 2.0: flexibilidad y trazabilidad para warehouses modernos
João Barros
13 de August de 2025
1 min de lectura
Data Vault 2.0 es una metodología de modelado para raw data vaults que prioriza la auditabilidad, el paralelismo de carga y la adaptabilidad a los cambios de negocio. No sustituye a Kimball — ambos coexisten: Data Vault en la capa raw/silver, dimensional en la capa gold/presentación.
Los 3 tipos de tabla
HUB — identidad de negocio única
Contiene: hash key + business key + metadata de carga
Ej: HUB_Cliente (hk_cliente, nk_cliente_erp, load_dts, rec_src)
LINK — relaciones entre Hubs
Contiene: hash key del link + hk de cada Hub relacionado + metadata
Ej: LNK_Venta (hk_venta, hk_cliente, hk_producto, load_dts, rec_src)
SATELLITE — atributos descriptivos e histórico
Contiene: hk del padre + hash diff + atributos + metadata
Ej: SAT_Cliente_CRM (hk_cliente, load_dts, hash_diff, nombre, email, segmento)
Implementación del Hub
CREATE TABLE dbo.HUB_Cliente (
hk_cliente BINARY(16) NOT NULL PRIMARY KEY, -- MD5/SHA-1 de la business key
nk_cliente INT NOT NULL,
load_dts DATETIME2 NOT NULL DEFAULT SYSDATETIME(),
rec_src VARCHAR(50)NOT NULL -- sistema de origen
);
-- Insertar solo nuevos (sin updates — Data Vault es insert-only)
INSERT INTO dbo.HUB_Cliente (hk_cliente, nk_cliente, rec_src)
SELECT HASHBYTES('MD5', CAST(nk_cliente AS VARCHAR)), nk_cliente, 'ERP_SAP'
FROM stg.Clientes src
WHERE NOT EXISTS (SELECT 1 FROM dbo.HUB_Cliente WHERE hk_cliente = HASHBYTES('MD5', CAST(src.nk_cliente AS VARCHAR)));
Satellite con detección de cambios
-- Solo inserta cuando los atributos cambian (hash_diff)
INSERT INTO dbo.SAT_Cliente_CRM (hk_cliente, load_dts, hash_diff, nombre, email, segmento, rec_src)
SELECT
HASHBYTES('MD5', CAST(src.nk_cliente AS VARCHAR)) AS hk_cliente,
SYSDATETIME(),
HASHBYTES('MD5', CONCAT(src.nombre, '|', src.email, '|', src.segmento)) AS hash_diff,
src.nombre, src.email, src.segmento, 'CRM'
FROM stg.Clientes src
LEFT JOIN (SELECT hk_cliente, hash_diff FROM dbo.SAT_Cliente_CRM WHERE load_dts = (SELECT MAX(load_dts) FROM dbo.SAT_Cliente_CRM s2 WHERE s2.hk_cliente = dbo.SAT_Cliente_CRM.hk_cliente)) latest
ON HASHBYTES('MD5', CAST(src.nk_cliente AS VARCHAR)) = latest.hk_cliente
WHERE latest.hash_diff IS NULL OR latest.hash_diff <> HASHBYTES('MD5', CONCAT(src.nombre, '|', src.email, '|', src.segmento));
Conclusión
Data Vault 2.0 brilla en entornos con muchas fuentes, requisitos de auditoría fuertes y esquemas que cambian con frecuencia. El modelo insert-only con hash keys permite la carga paralela de cientos de tablas y una trazabilidad completa. Combínelo con una capa dimensional para el consumo por BI.