Repository für den Bezug der Daten fürs Dekarbonisierungsmonitoring des Kantons Zürich.
Für jeden Datensatz im Monitoring werden drei Prozessschritte durchlaufen:
Import ➡️ Processing ➡️ Export
Diese drei Prozessschritte werden für jeden Indikator in einem separaten Skript definiert und ausgeführt.
Um den Prozess für einen neuen Indikator zu initialiseren sind die folgenden Vorbereitungen notwendig. Schritte 1. und 2. sind dabei nur beim erstmaligen Aufsetzen notwendig.
-
Dieses Code-Repo clonen. Entweder über den klassischen download des Repos oder einen direkten Download in der R-Studio Benutzeroberfläche.
-
Installation notwendiger Pakete innerhalb des R-Projekts:
install.packages("devtools")
devtools::load_all()
Beim erstmaligen ausführen müssen nun zusätzliche Pakete installiert werden. Dazu erscheint folgender Dialog:
ℹ The packages "data.table", "dplyr", "lubridate", "pxweb", "readxl", "rio", "rvest", and "tidyr" are required.
✖ Would you like to install them?
1: Yes
2: No
Hier mit 1
bestätigen.
- Nun kann die komplette Funktionalität des Pakets/Repos genutzt werden. Dazu einfach noch einmal folgenden Code ausführen:
devtools::load_all()
Die Bestätigung erfolgt:
ℹ Loading decarbmonitoring
- Ein neuer Indikator kann nun mittels der Funktion
decarbmonitoring::indicator_init()
angelegt werden.
#Achtung: Code unten wird einen Fehler ergeben, da schon ein Skript für den Indikator M1 exisitert.
decarbmonitoring::indicator_init("M1")
Exisitert der Indikator in der Parameter-Liste 2773 Monitoring.xlsx und es gibt noch KEIN Aufbereitungsskript, wird nun ein neues Aufbereitungsskript im Ordner scripts erstellt.
Jeder Datensatz ist in der Parameter-Liste 2773
Monitoring.xlsx
beschrieben. Die Parameter-Liste ist die Grundlage für den Import der
Daten. Der Import wird in Abhängigkeit von ausgewählten Parametern (über
Methoden) definiert und kann somit auch auf andere Datensätze mit den
gleichen Parameterangaben angewendet werden. Basierend auf der
DATASET_ID
, dem DATA_FORMAT
und der DATA_ORGANIZATION
erfolgt der
Datenimport in standardisierter Weise. Eine nähere Beschreibung der Parameter-Liste findet sich auch hier.
Nach erfolgreichem Aufruf von decarbmonitoring::indicator_init()
für einen neuen Indikator sind im jeweils neu erstellten Template schon die richtigen Parameter für den Import
eines Datensatzes hinterlegt.
Hier ein Beispiel für den Indikator LF1
(Anzahl Rindvieh):
# LF1 - Anzahl Rindvieh ----------------------------------------------------
# Import data -------------------------------------------------------------
# Schritt 1 : hier werden die Daten eingelesen
ds <- create_dataset('LF1')
ds <- download_data(ds)
# Dieses Objekt dient als Grundlage zur Weiterverarbeitung
LF1_data <- ds$data
Die Datenaufbereitung variiert von Datensatz zu Datensatz
(DATASET_ID
). Insbesondere was die Berechnungen anbelangt. Die
Berechnung werden spezifisch für jeden Datensatz gemacht. Falls in der Berechnung eines Indikators Bevölkerungszahlen (Schweiz/Kanton Zürich) benötigt werden, können diese einfach
mit der Funktion download_per_capita()
eingelesen werden. Diese lädt im Hintergrund den Indikator Q1
herunter.
Beispiel anhand Indikator LF1
# Einlesen von Populationsdaten für per_capita
LF1_pop <- decarbmonitoring::download_per_capita()
Für die weiteren Berechnungsschritte sind im Aufbereitungstemplate jeweils Hinweise gegeben. Es wird empfohlen, Code von schon erstellten Indikatoren wiederzuverwenden.
Die verarbeiteten Daten werden in einer harmonisierten Datenstruktur exportiert, die für alle Datensätze identisch ist. Die exportierten Daten bilden die Grundlage für die Visualisierungen.
Datenstruktur
Jahr | Gebiet | Indikator_ID | Indikator_Name | Variable | Datenquelle | Einheit | Wert |
---|---|---|---|---|---|---|---|
dimension attributes | dimension attributes | dimension attributes | dimension attributes | dimension attributes | dimension attributes | dimension attributes | fact |
Logik hinter der Datenstruktur
Die Tabelle besteht aus dimension attributes und facts. Wobei die facts durch die dimension attributes beschrieben werden.
-
dimension attributes liefern strukturierte Beschreibungsinformationen. Die Hauptfunktionen der dimension attributes sind: Filtern, Gruppieren und Bezeichnen.
-
facts stellen die messbaren Werte dar.
In unserer Tabelle entspricht alles links der Wert
-Spalte den
dimension attributes und die Wert
-Spalte ist der fact.
Sometimes (…), it is unclear whether a numeric data field from a data source is a measured fact or an attribute. Generally, if the numeric data field is a measurement that changes each time you sample it, the field is a fact. If field is a discretely valued description of something that is more or less constant, it is a dimension attribute.1
Sind die Daten nach der Verarbeitung in der richtigen Struktur, können Sie ganz einfach im Template in die Export-Funktionen gegeben werden. Hier wieder beispielhaft für den Indikator LF1
# Harmonisierung Datenstruktur / Bezeichnungen ----------------------------------------------------------
# Schritt 3 : Hier werden die Daten in die finale Form gebracht
# - Angleichung der Spaltennamen / Kategorien und Einheitslabels an die Konvention
# - Anreicherung mit Metadaten aus der Datensatzliste
LF1_export_data <- LF1_computed %>%
dplyr::mutate(Indikator_ID = ds$dataset_id,
Indikator_Name = ds$indicator_name,
Datenquelle = ds$data_source,
Variable = ds$dataset_name) %>%
dplyr::select(Jahr, Gebiet, Indikator_ID, Indikator_Name, Variable, Wert, Einheit, Datenquelle)
# assign data to be exported back to the initial ds object -> ready to export
ds$export_data <- LF1_export_data
# Export CSV --------------------------------------------------------------
# Daten werden in den /output - Ordner geschrieben
export_data(ds)
Die Funktion export_data(ds)
prüft dabei, ob der Datensatz schon einmal aufbereitet wurde. Wenn dies der Fall ist, muss aktiv bestätigt werden, dass man den Datensatz überschreiben möchte.
Ausserdem wirft die Funktion einen Fehler, wenn Variablen fehlen/überflüssig sind im Export-Datensatz.
Der Code läuft Stand Juli 2023 stabil auf einer Linux-Umgebung sowie der Windows-Umgebung des "Digitalen Arbeitsplatzes" (DAP). Da jeder Indikator externe Daten lädt und transfomiert, kann keine Garantie für das Funktionieren der Pipeline in Zukunft übernommen werden. Auch bei Aufnahmen eines neuen Indikators in der Excel-Liste können sich Fehler einschleichen. Deshalb findet sich hier eine Sammlung an Hinweisen, wie mögliche Probleme entstehen und behoben werden können.
Um zu überprüfen ob alle Indikatoren eingelesen und heruntergeladen werden können, kann man die Hilfsfunktion test_pipeline()
nutzen. Diese spielt eine Liste zurück, welche für jeden Indikator einen Eintrag samt Daten enthält. Bei einem Fehler empfiehlt es sich, zu überprüfen an welcher Stelle/welchem Indikator die Funktion stoppt. Dies erleichtert die Fehlersuche und somit Behebung.
list_of_indicators <- decarbmonitoring::test_pipeline()
Amt für Abfall, Wasser, Energie und Luft Luft, Klima und Strahlung Klima und Mobilität
Name | |
---|---|
Gian-Marco Alt | [email protected] |
Nathalie Hutter | [email protected] |
Cuno Bieler | [email protected] |
Name | |
---|---|
Corinna Grobe | [email protected] |
Philipp Bosch | [email protected] |
Thomas Lo Russo | [email protected] |
Footnotes
-
Dimension attributes. (o.D.). © Copyright IBM Corporation 2016. https://www.ibm.com/docs/en/informix-servers/12.10?topic=model-dimension-attributes ↩