Заметки о данных и инженерии

Аналитика, инфраструктура и всё, что между ними

Оконные функции: когда GROUP BY уже мало

Классическая задача: посчитать долю каждой строки от общего итога, не теряя детализацию. Через подзапросы получается громоздко, через OVER() — в одну строку. Разбираю на примерах, чем отличаются ROWS и RANGE, и почему второй иногда молча даёт не тот результат, которого ждёшь.

SQLаналитика

Идемпотентность в пайплайнах: скучно, но спасает

Любой регулярный джоб рано или поздно перезапустят — руками, ретраем или бэкфиллом. Если таск не идемпотентен, данные задваиваются тихо и всплывают через месяц в отчёте. Простое правило: сначала удаляем партицию, потом пишем. Дороже на пару секунд, дешевле на неделю разбирательств.

ETLAirflow

Индексы, которые не используются

Собрал у себя статистику по pg_stat_user_indexes и обнаружил, что треть индексов не прочитана ни разу за полгода. Каждый из них при этом честно замедляет вставку и занимает диск. Заметка о том, как найти такие и не удалить лишнего.

PostgreSQLпроизводительность

Дашборды, которые никто не открывает

Проверил логи открытий: из сорока с лишним дашбордов регулярно смотрят шесть. Остальные делались «на всякий случай» и теперь просто просят внимания при каждом изменении витрины. Немного о том, почему удалять отчёты полезнее, чем добавлять новые.

BIпроцессы

Домашний сервер: год спустя

Год назад поднял маленький сервер под домашние сервисы: бэкапы, DNS с фильтрацией рекламы, пара пет-проектов. Подвожу итоги — что реально пригодилось, что простаивает, и почему мониторинг стоит настраивать до того, как что-то упадёт, а не после.

self-hostedDocker