# Розробила пайплайн погодинної агрегації споживання електроенергії на Python / SQL / Bash + Jq, досягнувши 180 мс для наборів даних за 30 днів із різнорідних джерел JSONL.

2025

**Ситуація.** Компанія обробляє великі обсяги гетерогенних даних про електроенергію з кількох джерел, кожне з яких має власну частоту звітності — від погодинних інтервалів до інтервалів у 15 хвилин, а подекуди й нерегулярні часові мітки. Ця варіативність ускладнює створення узгодженого, порівнюваного набору даних. Для підтримки точної енергетичної аналітики ці дані потрібно нормалізувати до узгоджених погодинних значень споживання, агрегованих по зонах.

**Завдання.** Мета полягала в тому, щоб узяти сирі дані про події з історичного набору даних (у форматі JSONL) і перетворити їх на погодинно вирівняні показники споживання електроенергії, структуровані як один рядок на годину й на зону. Конкретно завдання включало:

- Вирівнювання даних із часовими мітками до строгих погодинних інтервалів,
- Агрегування загального виробництва електроенергії в межах кожного інтервалу шляхом підсумовування значень міксу,
- Врахування транскордонного обміну шляхом додавання імпорту та віднімання експорту,
- Виведення підсумкових значень у структурованому, масштабованому форматі, придатному для подальшого аналізу.
- Рішення також мало бути достатньо ефективним, щоб масштабуватися на великі часові вікна (30+ днів) і кілька країн/зон.

**Дія.** Для розв'язання цього завдання було реалізовано три різні варіанти рішення з використанням Python, JQ (для обробки JSON у командному рядку) та SQL, кожен оптимізований під свій контекст:

Python було обрано за його гнучкість, простоту роботи з даними та здатність ефективно виконувати трансформації в пам'яті. За допомогою чистих функцій Python було побудовано пайплайн, який:
- Парсив файли JSONL у структуровані датафрейми
- Ресемплював часові ряди до погодинних інтервалів
- Агрегував виробництво та обчислював чисте споживання електроенергії (виробництво + імпорт − експорт)
- Експортував результати у форматі CSV або завантажував їх у легку базу даних SQLite для перевірки.

JQ використовувався для створення швидкого рішення з мінімальними залежностями для середовищ командного рядка, побудованого як ланцюжок фільтрів JQ.

У PostgreSQL дані JSONL було імпортовано, створено нормалізовані таблиці та написано низку SQL‑запитів.

Для оцінки продуктивності кожне рішення було протестовано на історичних наборах даних за 1 день і за 30 днів.

**Результат.** Реалізація на Python виявилася найшвидшим і найбільш масштабованим рішенням, забезпечивши:

- обробку даних за 1 день лише за 34 мс
- набір даних за 30 днів — за 180 мс

Це підтвердило її придатність для роботи з більшими часовими вікнами при збереженні продуктивності на рівні до секунди. Рішення також пропонувало зрозумілий, підтримуваний код, який можна було легко розширити для обробки кількох зон або інтегрувати в ETL‑пайплайн.

Загалом підхід із використанням кількох інструментів продемонстрував гнучкість у виборі інструментів, потужну оптимізацію продуктивності та надійну обробку задач вирівнювання за часом і агрегування в реальних пайплайнах даних про електроенергію.

---

- Роль: Інженер платформи та даних
- Категорії: [Бази даних](https://engineer.company/uk/categories/databases/), [PostgreSQL](https://engineer.company/uk/categories/postgresql/), [SQL](https://engineer.company/uk/categories/sql/), [Інженерія даних](https://engineer.company/uk/categories/data-engineering/), [Пайплайни даних (ETL/ELT)](https://engineer.company/uk/categories/data-pipelines/), [Аналітика даних](https://engineer.company/uk/categories/data-analytics/), [Автоматизація та CI/CD](https://engineer.company/uk/categories/automation/), [Оптимізація продуктивності](https://engineer.company/uk/categories/performance/), [Python](https://engineer.company/uk/categories/python/)
- Послуги: [Оптимізація продуктивності баз даних](https://engineer.company/uk/services/database-performance/), [Розробка пайплайнів даних (ETL/ELT)](https://engineer.company/uk/services/data-pipeline-development/), [Аналітика даних та BI‑дашборди](https://engineer.company/uk/services/data-analytics-bi/)

<https://engineer.company/uk/portfolio/engineered-hourly-electricity-consumption-aggregation-pipeline-in-python-4/>
