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

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

AirflowBIDockerETLPostgreSQLPythonself-hostedSQLаналитикаданныеинфраструктурапроизводительностьпроцессыстоимость

9 записей

DuckDB вместо ноутбука с pandas

Гигабайтные выгрузки перестали помещаться в память, и вместо чанков я попробовал считать прямо по файлам. Замеры на своей папке: те же агрегаты — 11 секунд вместо четырёх минут. Заодно про то, где DuckDB не заменяет ни pandas, ни базу.

Pythonаналитикапроизводительность

Счёт за хранилище вырос втрое

Данные росли ровно, а счёт скакнул. Виноваты оказались не они, а прошлые версии объектов и куски упавших загрузок, которые не видно в списке, но которые исправно тарифицируются. Разбор и три правила жизненного цикла, вернувшие счёт на место.

инфраструктурастоимость

Выгрузка в двух кодировках сразу

Файл, где половина колонок в UTF-8, а половина в CP1251 — так бывает после конкатенации из двух источников. Ни один флаг чтения тут не спасает. Приём, который работает, и почему порядок попыток декодирования принципиален.

данныеPython

Что показал медленный лог за неделю

Ждал тяжёлых аналитических выборок, а наверху оказался запрос на сорок миллисекунд — просто вызванный восемьдесят тысяч раз за сутки. Про то, почему сортировать надо по суммарному времени, и как ночной бэкап портил планы соседям.

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

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

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

SQLаналитика

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

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

ETLAirflow

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

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

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

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

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

BIпроцессы

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

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

self-hostedDocker