# Utviklet en pipeline for timesaggregering av strømforbruk i Python / SQL / Bash + Jq som oppnådde 180 ms for datasett på 30 dager fra heterogene JSONL‑kilder.

2025

**Situasjon.** Selskapet behandler store mengder heterogene strømdata fra flere datakilder, hver med sin egen rapporteringsfrekvens — fra timesintervaller til 15‑minuttersintervaller, og i noen tilfeller uregelmessige tidsstempler. Denne variasjonen gjør det utfordrende å lage et sammenhengende, sammenlignbart datasett. For å støtte presise energianalyser må disse dataene normaliseres til konsistente forbruksverdier per time, aggregert per sone.

**Oppgave.** Målet var å ta rå hendelsesdata fra et historisk datasett (i JSONL‑format) og konvertere dem til strømforbrukstall justert til hele timer, strukturert som én rad per time og per sone. Konkret innebar oppgaven:

- Justere tidsstemplede data til strenge timesintervaller,
- Aggregere total strømproduksjon innenfor hvert intervall ved å summere mix‑verdiene,
- Ta med utveksling over landegrensene ved å legge til import og trekke fra eksport,
- Levere de endelige verdiene i et strukturert, skalerbart format egnet for videre analyse.
- Løsningen måtte også være effektiv nok til å skalere til store tidsvinduer (30+ dager) og på tvers av flere land/soner.

**Handling.** For å løse oppgaven ble tre ulike varianter av løsningen implementert med Python, JQ (for JSON‑behandling på kommandolinjen) og SQL, hver optimalisert for ulike bruksområder:

Python ble valgt for sin fleksibilitet, enkle datamanipulering og evne til å håndtere transformasjoner i minnet effektivt. Med rene Python‑funksjoner ble det bygget en pipeline som:
- Parset JSONL‑filene til strukturerte datarammer
- Samplet tidsseriedataene om til timesintervaller
- Aggregerte produksjonen og beregnet netto strømforbruk (produksjon + import − eksport)
- Eksporterte resultatene som CSV eller lastet dem inn i en lettvekts SQLite‑database for inspeksjon.

JQ ble brukt til å lage en rask løsning med minimale avhengigheter for kommandolinjemiljøer, bygget som en kjede av JQ‑filtre.

I PostgreSQL ble JSONL‑dataene importert, normaliserte tabeller opprettet og en serie SQL‑spørringer skrevet.

For å evaluere ytelsen ble hver løsning benchmarket med historiske datasett på både 1 dag og 30 dager.

**Resultat.** Python‑implementasjonen viste seg å være den raskeste og mest skalerbare løsningen, og fullførte:

- Behandling av data for 1 dag på bare 34 ms
- Datasettet for 30 dager på 180 ms

Dette bekreftet at den egnet seg til å håndtere lengre tidsrom og samtidig holde ytelsen under ett sekund. Den ga også tydelig, vedlikeholdbar kode som lett kunne utvides til behandling av flere soner eller integreres i en ETL‑pipeline.

Samlet sett viste tilnærmingen med flere verktøy fleksibilitet i verktøybruken, sterk ytelsesoptimalisering og robust håndtering av utfordringer med tidsjustering og aggregering i reelle datapipelines for strømdata.

---

- Rolle: Plattform- og dataingeniør
- Kategorier: [Databaser](https://engineer.company/nb/categories/databases/), [PostgreSQL](https://engineer.company/nb/categories/postgresql/), [SQL](https://engineer.company/nb/categories/sql/), [Data engineering](https://engineer.company/nb/categories/data-engineering/), [Datapipelines (ETL/ELT)](https://engineer.company/nb/categories/data-pipelines/), [Dataanalyse](https://engineer.company/nb/categories/data-analytics/), [Automatisering og CI/CD](https://engineer.company/nb/categories/automation/), [Ytelsesoptimalisering](https://engineer.company/nb/categories/performance/), [Python](https://engineer.company/nb/categories/python/)
- Tjenester: [Optimalisering av databaseytelse](https://engineer.company/nb/services/database-performance/), [Utvikling av datapipelines (ETL/ELT)](https://engineer.company/nb/services/data-pipeline-development/), [Dataanalyse og BI‑dashbord](https://engineer.company/nb/services/data-analytics-bi/)

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