(+351) 21 24 10006  ·  info@bconcepts.pt
Carnaxide, Lisboa
Modelação de Dados (Kimball)
Modelação de Dados (Kimball) 1 min

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.

Compartir: