Die WATTbewerb-MaStR-DB ist eine periodisch aktualisierte Kopie des öffentlich abrufenbaren Markstammdatenregisters.
Dieses Repository umfasst Skripte zum Abruf, Reimport in eine lokale Datenbank, Auswertungn und (geplant) Datenprüfung.
Da derzeit keine regelmäßig aktualisierten Komplett-Exporte des Markstammdatenregisters angeboten werden, und der letzte veröffentlichte Komplett-Export den Stand vom 22.10.2020 wiedergibt, laden wir die MaStR-Daten initial vollständig ab.
Der Download erfolgt schrittweise durch Abrufe von jeweils 5000 Datensätzen (maximal mögliche Anzahl Datensätze je Abruf). Ein solcher paginierte Abruf setzt voraus, dass die Sortierreihenfolge der Anlagen über alle Abrufe hinweg gleich bleibt, und insbesondere keine Anlagen eingefügt oder gelöscht werden, wovon wir bei der erweiterten Einheitenübersicht ausgehen.
Um den Speicherbedarf zu reduzieren, werden einige Spalten vor Speicherung direkt gelöscht. Dies gilt insbesondere für Spalten, die aus anderen Spalten eindeutig abgeleitet werden können:
- Bundesland
- StandortAnonymisiert
- TechnologieStromerzeugung
- HauptausrichtungSolarModuleBezeichnung
- HauptbrennstoffNamen
- VollTeilEinspeisungBezeichnung
- BetriebsStatusName
- SystemStatusName
Der initiale Download erfordert eine lokale Python-Installation sowie die Installation von benötigten Bibliotheken anhand der requirements.txt-Datei:
pip install -r requirements.txt
Desweiteren wird eine existierende postgres-Instanz vorausgesetzt.
Über das Skript 01_create_schema.sh
wird das Datenbank-Schema (Schlüsseltabellen, Staging-Tabelle für den Import und die mastr-Tabelle angelegt, sowie Prüfungs- und Statistik-Views (teilweise als materialized Views) angelegt.
./01_create_schema.sh postgres://<connectstring>
Über das skript 02_download_and_import.sh wird die MaStR-Datenbank heruntergeladen, in die Datenbank importiert und alle materialized Views aktualisiert.
./02_download_and_import.sh postgres://<connectstring>
Über das Download-Skript lassen sich auch Datensätze ab einem bestimmten Änderungszeitpunkt herunterladen und mit dem upsert-Skript importieren.
python 03_download_mastr.py -s 15.03.2021
python 04_upsert_mastr_delta.py -i out/mastr_15.03.2021.csv -c 'postgresql://postgres:@localhost:25432/postgres'
Zum Import in eine Remote-Datenbank muss der Connectstring entsprechend angepasst werden.
python 04_upsert_teilnehmer.py -i data/mastr_15.03.2021.csv -c 'postgresql://postgres:@localhost:25432/postgres'
Zum Import in eine Remote-Datenbank muss der Connectstring entsprechend angepasst werden.
Mit dem initialen Import werden die folgenden (teils materialisierten) Views angelegt:
- statistik_start_per_ags
- statistik_heute_per_ags
- zuwachs_per_gemeinde
- zuwachs_per_landkreis
- zuwachs_per_bundesland
Um den Komplett-Abruf und Datenbankimport via Docker auszuführen, lässt sich via
docker build -t mfdz/wattbewerb-mastr .
docker run -v $PWD/out:/app/out/ mfdz/wattbewerb-mastr bash 02_download_and_import.sh <dbconnectstring1> [<dbconnectstring2>]
- Mit Version 22.2.98 des MaStR (veröffentlicht am 2.11.2022) werden statt der angefragten Anzahl Datensätze teilweise weniger zurückgeliefert. Zudem wurde die Eigenschaft
migriert
entfernt. Bestehende schemata müssen daher mit einemALTER TABLE mastr.mastr DROP COLUMN migriert; ALTER TABLE mastr.mastr DROP COLUMN statistik;
angepasst werden. Dazu Umbenennungen der Eigenschaften - Mit Version 24.1.135 des MaStR (veröffentlicht am 2.5.2024) entfiel das Feld GemeinsamerWechselrichter.Skript
scripts/sql/00_schema_changes.sql
entfernt dieses Feld aus dermastr
-Tabelle.