Каждый раз, когда кто-то строит дашборд на твоей таблице, у тебя по сути покупают продукт. Только большинство команд этот продукт никак не описывает.
Data contract — это простой документ, который отвечает на вопрос аналитика/продукта:
Что я могу ожидать от этой таблицы, чтобы не накосячить?
Минимальный набор, который уже делает магию:
1️⃣ Grain (зернистость)
Что означает ОДНА строка?
🔘"одна строка = одна позиция в заказе"
🔘"одна строка = дневной срез по пользователю"
2️⃣ SLA по доступности данных
🔘"данные за вчера будут готовы к 09:00 UTC"
🔘или "лаг до 15 минут"
3️⃣ Схема (колонки + типы)
Кратко и по делу, без воды.
4️⃣ Owner
Команда/человек, кто отвечает за таблицу + канал коммуникации.
5️⃣ Встроенные проверки качества (DQ)
🔘что именно контролируем (уникальность, not null, допустимые значения…)
🔘где смотреть алерты.
Важно: data contract — это документ, а не тулза.
Фактическое соблюдение (валидации, алерты) — это уже вопрос инструментов.
Что меняется, когда у таблицы есть контракт:
🟣 пользователи перестают додумывать семантику колонок
🟣 меньше "а чё у вас тут за цифры? вы нам бизнес сломали"
🟣 проще объяснить, почему вы не поддерживаете хаотичные запросы ("это вне контракта, давайте расширим его нормально")
〰️〰️〰️〰️〰️〰️〰️〰️
Порядок в DWH
#dev #de #dwh