Skip to content

Formatkonvertierung von Zeitreihen-Daten

Die Formatkonvertierung wird durch eine INI-Datei mit Sektion [CONV] gesteuert. Dabei werden Dateien mit einem beliebigen Ausgangsformat (.csv, .txt, .xml, ...), welches durch die INI-Option REGEX definiert wird, zu einer ZRXP-Datei konvertiert. Die Dateien befinden sich zunächst im Ordner der INI-Option SPOOL und werden in den Ordner DEST konvertiert. Vor der Konvertierung werden die Dateien vom SPOOL Ordner in einen Archivordner (INI-Option ARCH) kopiert.

powershell
python prozessing.pyz conv_xxxx.ini

INI-Datei: conv

ini
[CONV]
FORMAT_SRC =
FORMAT_DEST =
REGEX =
SPOOL =
DEST =
ARCH =

Folgende Keys werden für die INI-Sektion [CONV] unterstützt. Pflichteinträge sind mit * markiert.

KeyBeispielBeschreibung
FORMAT_SRC *misBezeichnung des Quell-Datenformats
FORMAT_DEST *zrxpBezeichnung des Ziel-Datenformats
REGEX *.datRegulärer Ausdruck für Dateinamen-Muster
SPOOL *../Daten/spool/xyzQuellverzeichnis der Dateien (auch Angabe von mehreren Pfaden möglich)
DEST *../Daten/zrxp/xyzZielverzeichnis für konvertierte Dateien (auch Angabe von mehreren Pfaden möglich)
DEST_MKDIRFalse oder TrueZielverzeichnis automatisch erstellen
DEST_SUBDIRFalse oder True oder ^[re]Jede Datensammlernummer in eigenem Unterverzeichnis ablegen oder Bilder nach Nummern einordnen (regulärer Ausdruck, wenn ^ oder . oder | vorkommt)
ARCH *../Daten/arch/xyzArchivverzeichnis für originale Quelldateien (auch Angabe von mehreren Pfaden möglich)
ARCH_MKDIRFalse oder TrueArchivverzeichnis automatisch erstellen
ARCH_SUBDIRFalse oder TrueJede Datensammlernummer in eigenem Unterverzeichnis ablegen
FAILED../Daten/failed_conv/xyzVerzeichnis für fehlerhafte Quelldateien bzw. fehlgeschlagene Konvertierungen
FAILED_MKDIRFalse oder TrueVerzeichnis automatisch erstellen
STATS../Daten/proviVerzeichnis für HTML-Historie von konvertierten Daten
REXCHANGE{station}_{parameter}Muster für die Generierung der eindeutigen Austauschnummer
Je nach Konverter stehen zur Verfügung: {station}, {station_name}, {parameter}, {channel}
COMBINE_FILESFalse oder Truemit False (default) werden alle Quelldateien separat konvertiert
mit True werden pro SPOOL alle Quelldateien eingelesen und anschließend kombiniert geschrieben
DEST_PREFIX{now}Präfix für Dateinamen im Zielverzeichnis, vgl. Platzhalter von Datenabholung
MAX_GAPPT1H13M21SMaximale Lücke zwischen zwei Zeitstempeln, ab der ein zusätzlicher Header eingefügt wird. Format PyYmMwWdDThHmMsS
SEPARATE_FILES_PER_HEADERFalse oder Truemit False (default) werden alle Zeitreihen der Quelldatei in eine Zieldatei geschrieben
mit True wird für jede Zeitreihe eine separate Datei geschrieben
SEPARATE_HEADER_PER_LINEFalse oder Truemit True wird für jede Datenzeile ein separater ZRXP-Block ausgegeben
UNQFalse oder Truemit True (default) wird die Quelldatei eindeutig gemacht (für den Fall, dass der Lieferant immer den selben Dateinamen schickt)
min_size0 oder 64 oder 1024Minimale Dateigröße in Bytes
max_size0 oder 64 oder 1024Maximale Dateigröße in Bytes
min_mod_diff0 oder 10 oder 30Mindest-Wartezeit in Sekunden, wenn die Datei erst neu geschrieben wurde, um ein Abschneiden einer Datei zu vermeiden, die erst gerade geschrieben wird
flockFalse oder TrueFile-Locking mittels fcntl.flock(fh, fcntl.LOCK_EX + fcntl.LOCK_NB)
source_encodingutf-8Encoding der Quelldateien

INI-Datei: conv für Monitoring via Dokumentation und Datenflussdiagramme

KeyBeispielBeschreibung
EXPECT_INTERVAL3600 oder 3h oder 4dErwartungs-Intervall (in Sekunden) für Datenlieferungen in das Quellverzeichnis
SPOOL_MONITORINGFalse oder TrueMinimum für Monitoring der Quellverzeichnisse
DEST_MONITORINGFalse oder TrueMinimum für Monitoring der Zielverzeichnisse
FAILED_MONITORING0 oder 42 oder Minimum für Monitoring des Verzeichnis für fehlerhafte Quelldateien

INI-Datei: Filterung von Datenblöcken

Positivliste: Wenn [STATIONS] oder [PARAMETERS] oder [REXCHANGE] mit =1 angegeben, werden nur die genannten Stationen/Parameter konvertiert.

ini
[STATIONS]
sta1 = 1
sta2 = 1
[PARAMETERS]
par3 = 1
par4 = 1
[REXCHANGE]
rexchange5 = 1
rexchange6 = 1

Negativliste: Wenn [STATIONS] oder [PARAMETERS] oder [REXCHANGE] mit =0 angegeben, werden die genannten Stationen/Parameter nicht konvertiert.

ini
[STATIONS]
sta1 = 0
sta2 = 0
[PARAMETERS]
par3 = 0
par4 = 0
[REXCHANGE]
rexchange5 = 0
rexchange6 = 0

Mappingliste: Wenn [STATIONS] oder [PARAMETERS] oder [REXCHANGE] mit =[Zeichenkette] angegeben, werden die angegebenen Stationen/Parameter durch die Zeichenkette ersetzt.

ini
[STATIONS]
sta1 = station1
sta2 = station2
[PARAMETERS]
par3 = parameter3
par4 = parameter4
[REXCHANGE]
rexchange5 = foo5
rexchange6 = bar6

INI-Datei: Einheiten-Mapping

Statt #CUNITpH-Wert|*| wird #CUNIT−log(H⁺)|*| im ZRXP-Header ausgegeben.

ini
[UNITS]
pH-Wert = −log(H⁺)

INI-Beispiele

einfache Formatkonvertierung für Dateiendungen txt bzw. csv

ini
[CONV]
REGEX = (.txt)|(.csv)
FORMAT_SRC = hobo
FORMAT_DEST = zrxp
SPOOL = F:/Datenmanagement/spool/irr_hobo
DEST = F:/Datenmanagement/zrxp/irr_hobo
ARCH = F:/Datenmanagement/arch/irr_hobo
UNQ = 1
SEPARATE_FILES_PER_HEADER = 1
WIKI = https://link.zur.dokumentation/hobo_konvertierung

mehrere Verzeichnisse

ini
[CONV]
REGEX = .csv
FORMAT_SRC = gprssommer
FORMAT_DEST = zrxp
SPOOL =
    F:/Datenmanagement/spool/irr_gprssommer
    F:/Datenmanagement/spool/wlv_gprssommer
DEST =
    F:/Datenmanagement/zrxp/irr_gprssommer
    F:/Datenmanagement/zrxp/wlv_gprssommer
ARCH =
    F:/Datenmanagement/arch/irr_gprssommer
    F:/Datenmanagement/arch/wlv_gprssommer

einfache Konvertierung zum verschieben von Dateien

ini
[CONV]
REGEX = gz
FORMAT_SRC = general_move
FORMAT_DEST = zrxp
SPOOL = F:/Datenmanagement/spool/wlv_hd2wlv
DEST = F:/Datenmanagement/arch/wlv_hd2wlv
ARCH = F:/Datenmanagement/arch/wlv_hd2wlv

einfache Konvertierung zum Kopieren von Dateien, falls diese z.b. mehrere Datenwege gehen sollen

ini
[CONV]
REGEX = .csv|.prc
FORMAT_SRC = general_copy
FORMAT_DEST =
SPOOL = F:/Datenmanagement/spool/oebb_gprssommer_spulersee_in
DEST = F:/Datenmanagement/spool/oebb_gprssommer_spulersee_hdv_out
ARCH = F:/Datenmanagement/spool/oebb_gprssommer_spulersee
EXPECT_INTERVAL = 1800