Data Vault 2.0 deep dive на собеседовании Data Engineer

Готовься к собесу аналитика как в Duolingo
10 минут в день — SQL, Python, A/B, метрики. 1700+ вопросов в Telegram
Открыть Карьерник в Telegram

Карьерник — Duolingo для аналитиков: 10 минут в день тренируй SQL, Python, A/B, статистику, метрики и ещё 3 темы собеса. 1500+ вопросов в Telegram-боте. Бесплатно.

Three layers

Raw Vault. Direct ingestion. Insert-only, append-only.

Business Vault. Computed / derived. Soft business rules applied.

Information Mart. Star schema / denormalized для consumption. BI-ready.

Каждый layer — own concerns.

Hashes

DV uses hash keys везде:

  • Hash of business key — primary keys.
  • Hash diff — checks if record changed.
hub_customer:
  customer_hk = MD5(customer_id)
  customer_id (business key)
  load_dt
  record_source
sat_customer:
  customer_hk
  load_dt
  hashdiff = MD5(name + email + phone)  ← если изменился, новая запись.
  name, email, phone

Point-in-time

Querying current state — joining many satellites slow. PIT table — pre-joined snapshot.

CREATE TABLE pit_customer (
  customer_hk,
  load_dt,
  sat_personal_dt,
  sat_address_dt,
  sat_account_dt,
  ...
);

Pre-computed pointers к specific satellite versions per timestamp. Fast queries.

Готовься к собесу аналитика как в Duolingo
10 минут в день — SQL, Python, A/B, метрики. 1700+ вопросов в Telegram
Открыть Карьерник в Telegram

Bridge tables

Cross-link many-to-many между hubs / linkings.

Often pre-aggregated paths для performance.

Ghost / unknown

Some satellites нет records — load process inserts «unknown / not-applicable» record.

ghost_satellite:
  customer_hk = '00000000...'
  hashdiff = '00000000...'
  ...

Avoids NULL joins, simplifies queries.

Связанные темы

FAQ

Это официальная информация?

Нет. Статья основана на работах Дэна Линштедта.


Тренируйте Data Engineering — откройте тренажёр с 1500+ вопросами для собесов.