1.4Kпросмотров
91.6%от подписчиков
28 января 2026 г.
📷 ФотоScore: 1.5K
Что нужно знать по SQL для Data Engineer: 3 приёма, которые я использую постоянно. Я собрал 3 приёма, которые у меня почти всегда встречаются в рабочих запросах. Если их освоить — вход в DE становится сильно спокойнее, а ты - увереннее. 1️⃣ CTE (WITH) — защита от раздутия метрик при JOIN. Самая частая ошибка — соединить две таблицы и получить сумму в 2–3 раза больше.
Происходит потому что по одному id может быть несколько строк, отсюда JOIN размножает строки. Сначала схлопнуть правую таблицу до нужной гранулярности, потом джоинить. WITH pay AS ( SELECT order_id, SUM(paid_amount) AS paid_amount FROM payments GROUP BY order_id
)
SELECT o.order_id, o.amount, COALESCE(p.paid_amount, 0) AS paid_amount
FROM orders o
LEFT JOIN pay p ON o.order_id = p.order_id; 2️⃣ Оконные (ROW_NUMBER) — дедупликация или подготовка семплов данных. Часто в сырых данных или таблицах фактов есть повторы или обновления.
Тебе почти всегда нужно оставить последнюю версию записи по ключу. WITH ranked AS ( SELECT t., ROW_NUMBER() OVER ( PARTITION BY user_id ORDER BY updated_at DESC ) AS rn FROM stg_users t
)
SELECT FROM ranked
WHERE rn = 1; 3️⃣ CASE WHEN — быстрая проверка качества данных. Иногда нужно посчитать покрытие: сколько NULL, сколько мусора, сколько аномалий. Самый практичный шаблон — считать плохие строки через SUM(CASE ...). SELECT COUNT(*) AS total_rows, SUM(CASE WHEN product_id IS NULL THEN 1 ELSE 0 END) AS null_product_id_cnt
FROM order_items; Эти 3 приёма реально закрывают половину типовых задач DE — и не только на старте. Сохрани себе 📌 — пригодится, когда будешь писать витрины/проверки/разборы. #материалы