Инженерия данных

Analytical SQL

Аналитический SQL

актуальноТекущий рабочий стандарт

Направления: Инженерия ИИ · Инженерия данных

Оконные функции, агрегации и CTE — основной инструмент подготовки на больших данных.

Ключевые тезисы

  • Оконные функции считают лаги, скользящие суммы и ранги без выгрузки данных в память.
  • лучше считать в хранилище: это быстрее и воспроизводимо в проде.
  • QUALIFY, GROUPING SETS и семплирование экономят часы при работе с большими таблицами.

Подробный разбор

2 подтемы — объяснения, формулы, примеры и интерактивные графики.

SELECT user_id, ts, amount,
  LAG(amount, 1) OVER w                                   AS prev_amount,
  AVG(amount) OVER (w ROWS BETWEEN 6 PRECEDING AND 1 PRECEDING) AS avg_7,
  COUNT(*)    OVER (w RANGE BETWEEN INTERVAL '30' DAY PRECEDING AND CURRENT ROW) AS cnt_30d
FROM transactions
WINDOW w AS (PARTITION BY user_id ORDER BY ts)
Обратите внимание на `1 PRECEDING`: текущая строка исключена, иначе это утечка
На практике

Считать в хранилище выгоднее, чем в pandas: не нужно выгружать данные, и тот же запрос переиспользуется в проде.

  • SELECT * на широкой таблице — читаются все столбцы; перечисляйте нужные явно.
  • Джойн больших таблиц без фильтра по партиции.
  • DISTINCT и COUNT(DISTINCT ...) на миллиардах строк — используйте приближённые (HLL) варианты.
  • Перекос ключей в джойне: одна задача обрабатывает 90% данных.
Тема также относится к главам:ДанныеРазведка и визуализация

Видеолекции

Тайм-кода именно на эту тему в записях нет. Но глава «Инженерия данных» разобрана в курсе целиком — с той оговоркой, что место в записи придётся искать самому.

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

Платформа данных

Warehouse, Lake, Lakehouse80%

Хранилище, озеро, lakehouse · Инженерия данных

Три способа хранить аналитические данные: строгая схема, сырые файлы или гибрид с транзакциями поверх объектного хранилища.

File Formats80%

Форматы хранения · Инженерия данных

Колоночные форматы против строковых: почему Parquet почти всегда лучше CSV для аналитики.

Partitioning80%

Партиционирование · Инженерия данных

Разделение данных по ключу (обычно по дате), чтобы запрос читал минимум файлов.

ETL vs ELT80%

ETL и ELT · Инженерия данных

Преобразовывать данные до загрузки или уже внутри хранилища — и почему индустрия сместилась ко второму.

Batch and Streaming80%

Батч и стриминг · Инженерия данных

Обработка по расписанию против непрерывной обработки событий. Разные задержки, разные гарантии, разная стоимость.

Orchestration80%

Оркестрация пайплайнов · Инженерия данных

Планировщик, который знает зависимости между задачами, повторяет упавшие и не даёт запускать одно и то же дважды.

Spark80%

Spark · Инженерия данных

Распределённая обработка больших объёмов данных: тот случай, когда данные не помещаются на одну машину.

Kafka80%

Kafka · Инженерия данных

Распределённый журнал событий: основа потоковой архитектуры и источник данных для онлайн-признаков.

ML Pipelines80%

ML-пайплайны · MLOps

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

Data Versioning80%

Версионирование данных · MLOps

Данные меняются чаще кода — без их версий эксперимент не воспроизвести.

Кому эта тема нужна

Профильная компетенция для ролей: Аналитик данных, Data Engineer.

Усиливает профиль: Data Scientist, ML Engineer, MLOps-инженер, Продуктовый инженер.

Спрашивают на собеседовании: ВТБ — Данные и витрины.

Проверить себя

Тема встречается в тесте по направлениям — ошибки приведут обратно на эту страницу.

Следующий шагПроверить себя: SQL и инженерия данныхТема встречается в этом тесте 5 раза. Ошибка приведёт обратно на эту страницу — с объяснением, что именно не сошлось.Перейти →

Глава «Инженерия данных» последний раз правилась . Нашли ошибку — напишите.