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.

python prozessing.pyz conv_xxxx.ini

perl runConverter.pl -iniFile [file]

perl runConverter.pl -iniFile [file] -logLevel [DEBUG|INFO|WARN|ERROR] -logDir [logs]

perl runConverter.pl -converter [converter] -i [spool] -o [target] -archive [archive]

perl runConverter.pl -converter [converter] -f [file]

perl runConverter.pl -converter [converter] -f [file] -o [target dir]

INI-Datei: conv

[CONV]
REGEX = .dat                            # regulärer Ausdruck für Dateinamen-Muster, die konvertiert werden sollen

REGEX_FILE = ...                        # ??

REGEX_INVERT = 0|1                      # wenn auf 1 gesetzt werden Dateien gesucht, die nicht dem Muster aus REGEX entsprechen

FORMAT_SRC = xyz                        # Bezeichnung des Quell Datei Formats

FORMAT_DEST = zrxp                      # Bezeichnung des Ziel  Datei Formats

REXCHANGE = {station}_{channel}         # Muster für die Generierung der eindeutigen Austauschnummer
                                        # Welche Einträge zur Verfügung stehen ist abhängig vom FORMAT_SRC

;ADD_ZRXP_HEADER_LINE = #XTRUNCATE1|*|  # fügt einen zusätzliche Eintrag in den ZRXP-Header hinzu
                                    # mit #XTRINCATE1 kann z.b. gewährleistet werden, dass die Daten
                                    # vor dem Import im Zielsystem gelöscht werden
REXCHANGE_REGEX_FILE = ...

REXCHANGE_REGEX_INVERT = 0

SPOOL = ../Daten/spool/xyz              # Quellverzeichnis der Dateien

DEST = ../Daten/zrxp/xyz                # Zielverzeichnis für konvertierte Dateien

SEPARATE_FILES_PER_HEADER = 0|1         # OPTIONAL mit 1 wird für jede Zeitreihe eine separate Datei geschrieben
                                        # mit 0 (default) werden alle Zeitreihen der Quelldatei in eine einzige Ziel Datei geschrieben

ARCH = ../Daten/arch/xyz                # Archivverzeichnis für originale Quelldateien

ARCH_MKDIR = 0|1                        # Archivverzeichnis automatisch erstellen

ARCH_SUBDIR = 0                         # Es wird nach Substrings (z.b. die ersten 8 Zeichen) im Dateinamen archiviert,
                                        # so dass jede Messstelle ein eigenes Archivverzeichnis hat

FAILED = ../Daten/failed/xyz            # OPTIONAL: wenn Daten nach Konvertierung noch immer im spool Ordner dann werden diese in einen failed Ordner verschoben

UNQ = 0|1                               # OPTIONAL: mit 1 wird die Quelldatei eindeutig gemacht (für den Fall, dass
                                        # der Lieferant immer den selben Dateinamen schickt)

WIKI = ...                              # OPTIONAL: Möglichkeit per URL zur Dokumentation zu verlinken, die URL wird im
                                        # automatisch generierten Systemschaubild übernommen und kann dort angewählt werden

EXPECT_INTERVAL = ...                   # OPTIONAL: Möglichkeit ein Erwartungs-Intervall festzulegen (z.b. alle 60 min),
                                        # dies kann automatisch zu Warnmeldungen führen, sollten die Daten nicht im
                                        # Intervall hereinkommen

min_mod_diff = ...                      # OPTIONAL: Mindest-Wartezeit in Sekunden, wenn die Datei erst neu geschrieben wurde,
                                        # um ein Abschneiden einer Datei zu vermeiden, die erst gerade geschrieben wird

min_zero_diff = ...                     # OPTIONAL: Mindest-Wartezeit in Sekunden nach der eine leere Datei gelöscht wird

# Wenn [STATIONS] oder [PARAMETERS] mit `=1` angegeben (Positivliste), werden nur die genannten Stationen/Parameter konvertiert
[STATIONS]
sta1 = 1
sta2 = 1
[PARAMETERS]
par3 = 1
par4 = 1

# Wenn [STATIONS] oder [PARAMETERS] mit `=0` angegeben (Negativliste), werden die genannten Stationen/Parameter nicht konvertiert
[STATIONS]
sta1 = 0
sta2 = 0
[PARAMETERS]
par3 = 0
par4 = 0

# Erlaubt ein benutzerdefiniertes Unit-Mapping
[UNITS]
pH-Wert = −log(H⁺)

INI-Beispiele

einfache Formatkonvertierung für Dateiendungen txt bzw. csv

[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

einfache Konvertierung zum verschieben von Dateien

[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

[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

Optionen zur Konvertierung ohne INI-Datei

OptionBeschreibung
-converterThe format converter.
-iThe spool directory, i.e., from where to read the files to convert. Multiple directories are supported and can specified using a comma as delimiter: dir1,dir2
-oThe destination directory, i.e., where to put the converted files. Multiple directories are supported and can specified using a comma as delimiter: dir1,dir2
-separateFilesPerHeaderWhether to export separate files per header. When enabled, for an input file foo.dat, foo_01234_X.zrxp and foo_01234_Y.zrxp are exported.
-fThe source file, which is converted to {destination directory}/{unix}.zrxp or {file}.zrxp.
-archiveThe archive directory, i.e., where to move the files after successful processing. Multiple directories are supported and can specified using a comma as delimiter: dir1,dir2
-archiveSubdirectoryWhether to group files in the archive directory by datalogger. Not supported by all converters.
-archiveUniqueWhether to append a timestamp to the filename before archiving to avoid overwriting.
-regexA regular expression to determine which files to process from the spool directory.
-regexFileA file to read the filename regex from. Blank lines and lines beginning with # are ignored. Remaining lines are combined into a regex alternation: (line1|line2|...|lineN).
-regexInvertWhether to invert the regular expression, i.e., files matching the expression are ignored.
-rexchangeA template string to generate the REXCHANGE. The supported variables is converter dependent.
-rexchangeRegexFileA file to read the exchange number regex from. Blank lines and lines beginning with # are ignored. Remaining lines are combined into a regex alternation: (line1|line2|...|lineN).
-rexchangeRegexInvertWhether to invert the regular expression, i.e., exchange numbers matching the expression are ignored.
-sleepConvert every X seconds, does not terminate.
-inotifyLinux only: use inotify for monitoring filesystem events. Converts a file immediately after a IN_CLOSE_WRITE (file opened for writing was closed) event.
-minModDiffDo not touch files younger than the specified seconds.
-minZeroDiffDo not delete empty files younger than the specified seconds.