Оконные функции, агрегации и CTE — основной инструмент подготовки признаков на больших данных.
Ключевые тезисы
- Оконные функции считают лаги, скользящие суммы и ранги без выгрузки данных в память.
- Признаки лучше считать в хранилище: это быстрее и воспроизводимо в проде.
QUALIFY,GROUPING SETSи семплирование экономят часы при работе с большими таблицами.
Подробный разбор
2 подтем — раскройте любую, чтобы увидеть объяснение, формулы, примеры и интерактивные графики.
1Оконные функции для признаков
Лаги и скользящие агрегаты прямо в SQL.
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)Считать признаки в хранилище выгоднее, чем в pandas: не нужно выгружать данные, и тот же запрос переиспользуется в проде.
2Производительность запросов
Что чаще всего убивает время.
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Данные меняются чаще кода — без их версий эксперимент не воспроизвести.