TGViewer
Дмитрий Кузьмин | Инженерия данных Дмитрий Кузьмин | Инженерия данных @kuzmin_dmitry91 · 1.75K subscribers
Post #219 1.2K
🟡5 SQL-проверок перед тем, как верить витрине

Хочу поделиться привычкой, которую я бы очень советовал прокачивать всем, кто работает с данными: не верить витрине сразу после того, как запрос или DAG отработал.

Довольно легко увидеть результат, не обратить должного внимания и пойти дальше. Но часто в результате будет проблема: строки размножились после JOIN, дата уехала, NULL отрезал часть данных, grain поменялся, но вот итоговая цифра будет выглядеть очень правдоподобно.

Можно начать с простых проверок.

1️⃣ Сначала посмотреть количество строк, чтобы объём примерно совпадал с ожиданием. Если вчера было 120 тысяч строк, а сегодня внезапно 3 тысячи, это повод остановиться.

select count(*) as rows_cnt
from mart.sales_daily;


2️⃣ Потом проверить период. Очень часто данные есть, но лежат не за ту дату, которую ты открываешь в витрине или BI.

select
min(dt) as min_dt,
max(dt) as max_dt
from mart.sales_daily;


3️⃣ Дальше посмотреть ключевые поля. Если в ключе появились NULL, дальше могут поехать JOIN, агрегации и связь с другими слоями.

select
count(*) as rows_cnt,
count(order_id) as order_id_cnt,
count(dt) as dt_cnt
from mart.sales_daily;


4️⃣ Отдельно стоит проверить дубли на том уровне, на котором должна жить витрина. Если одна строка должна быть “один заказ за день”, значит это и нужно проверять. Если после JOIN строк стало больше, не всегда это ошибка, но это точно нужно понимать.

select
order_id,
dt,
count(*) as cnt
from mart.sales_daily
group by order_id, dt
having count(*) > 1;


5️⃣ И уже после этого посмотреть контрольные суммы, не потерян ли большой кусок данных между слоями.

select
sum(amount) as total_amount
from mart.sales_daily;


В итоге получился короткий чек-лист: строк стало ожидаемо, период правильный, ключевые поля не пустые, grain не сломан, суммы выглядят адекватно относительно предыдущего слоя.

Это занимает несколько минут, но сильно экономит время, когда потом приходится разбираться, почему пайплайн отработал, но данные поехали.

📍 Сохраняй себе. Такие проверки скучные ровно до первого случая, когда они спасают несколько часов разбора.

#материалы
  • 👍 17
  • 🔥 3
  • ❤ 2
More from @kuzmin_dmitry91
  1. Sep 25, 2026Можно отдельно изучить SQL, Spark и Airflow, а потом всё равно не понимать, как связать их…
  2. Sep 22, 2026Почему RAG-бот иногда отвечает «не знаю» ✍️ В августе я только начинал погружаться в RAG и…
  3. Sep 18, 2026У блога появился свой герой 🐻 В последнее время здесь много пайплайнов, проверок качества…
  4. Sep 15, 2026💬 Какой результат SQL отправить бизнесу? Ребят, одна из частых ошибок в SQL-задачах состо…
  5. Sep 11, 2026Когда пайплайн упал в пятницу в 18:30, но дежуришь не ты. С пятницей! Пусть выходные пройд…
  6. Sep 10, 2026Сначала выучу весь DE-стек У меня переход в Data Engineering тормозился примерно на этой м…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →