Workshop Konfiguration des e-count CSV-Import-Moduls Import-Architektur • Verarbeitung in 2 Schritten: 1. Konvertierung in XML-Zwischenformat 2. Importieren des Zwischen-XML nach ecount robotron* ecount Konfiguration der Import-Filter • Import-Filter haben verschiedene Einstellungen zur Anpassung an Kundenwünsche • Einstellungen sind einfach in flachen Textdateien zu pflegen • CSV-Import-Filter hat zusätzliches grafisches Modul zur einfacheren Konfiguration robotron* ecount Ablauf der Konfiguration • Erstellung einer neuen Format-Konfiguration in datenimport.ini und Erzeugen einer BasisKonfiguration für das Format CSV, manuell oder über die Datenimport-Maske • Ablegen einer Beispiel-Datei in dem konfigurierten Verzeichnis • Konfiguration mit grafischer Oberfläche an Hand der Beispieldatei • Überprüfung der konvertierten Daten in der Vorschau-Ansicht • Speichern und Übertragen der Konfiguration auf den Kommunikationsserver robotron* ecount Datenimport-Maske Start mit KomA-Skript config_gui_import(.cmd / .sh) robotron* ecount Grund-Konfiguration des CSV-Formats 1. Dateiformat einstellen (Excel, CSV, Festlängentext) 2. Laden einer Beispieldatei (erste Fehlermeldung wegen fehlerhafter Konfiguration ignorieren) 3. Einstellen des Grundformats (Trennzeichen ...) 4. Auswahl des Grund-Modells (Vertikale Lastgangdaten usw.) 5. Auswahl des linken oberen Wertefeldes in den Daten (Pivotfeld) 6. Abstand zu den benachbarten Werten wählen 7. Zahlen- und Datumsformat einstellen 8. Abbruchbedingungen definieren robotron* ecount Aufbau der grafischen Oberfläche Daten-Vorschaubereich Konfigurationsbereich robotron* ecount Arbeitsweise des CSV-Imports 1. Schritt: Auswahl des Dateiformates: • Excel-Dateien: Dateiendung .xls • CSV-Dateien: Komma- separierte Textdateien/ Textdateien, in denen die Felder horizontal durch Trennzeichen (z.B. , ; Tabulator) und vertikal durch Zeilenumbrüche getrennt sind • Festlängenformate: wie CSV, aber die horizontale Feldbegrenzung ist durch feste Feldlängen definiert, die mit Leerzeichen aufgefüllt werden robotron* ecount Arbeitsweise des CSV-Imports 2. Schritt: Auswahl des Grund-Modells der Datenorganisation: • Horizontal / vertikal orientierte Lastgang-Daten: z.B. horizontal: LPEX, vertikal: Fröschl-Flatfile • Horizontale Verbrauchs- / Prognosedaten: noch keine grafischen Konfigurationsmöglichkeiten • Horizontale / vertikale Tagesdaten: werden auf Periode 60 Minuten erweitert (für ecount vor Release 3.2 Patch 2) robotron* ecount Allgemeine Einstellungen robotron* ecount Fehlerhafte Einstellung Fehleranzeige bei syntaktischen Fehlern in Funktionen robotron* ecount Vorschau der importierten Daten Aktualisierung der Vorschau über Button „Datei neu laden“ robotron* ecount Konfiguration der CSV-Felder • Felder können aus konstanten Werten und CSVFeldern in absoluten oder zum Pivot-Feld relativen Koordinaten zusammengesetzt werden • Es können verschiedene Umwandlungsoperationen auf einzelne Ausdrücke angewendet werden robotron* ecount Beispiele für Feldfunktionen • Wert einer Zelle mit absoluten Koordinaten: cellValue(3,5) • Wert einer Zelle mit relativer Spaltenangabe: cellValue(n-1, 5) • Wert einer Zelle mit Standard-Wert: cellValue(3,5,“Standard“) • Wert einer Zelle mit Standard-Wert aus einer anderen Zelle: cellValue(3,5, cellValue(4,5,“Standard“)) robotron* ecount Unterstützte Feldoperationen • Verkettung mehrerer Werte "Prefix-" cellValue(3,5) "-Suffix" • Zellinhalt: cellValue(Spalte, Zeile[, Standardwert]) cellValue(n,1,"kW") • Wert dekodieren: decode(Quelle, [Standardwert, ] (Quellwert1, Zielwert1), (Quellwert2, Zielwert2) ...) decode(cellValue(3,5), "?", ("Ok", "W") , ("Fehler","G")) • Text an Trennzeichen zerteilen: token(Quelle, Separatoren, Tokennummer) token(cellValue(n,1),"_",0) „ABC_DEF_GHI“ wird zu „ABC“ token(cellValue(n,1),"_",-1) „ABC_DEF_GHI“ wird zu „GHI“ • Textteile ersetzen: replace(Quelle, alter Wert, neuer Wert) replace(cellValue(n,1), "Alt", "Neu") „Alter Wert“ wird zu „Neuer Wert“ • Teilzeichenkette: subString(Quelle, Startposition, Länge) subString(cellValue(n,1), 0, 33) robotron* ecount Weitere Feldoperationen • Text links abschneiden: cutLeft(Quelle, Länge) cutLeft(cellValue(n,1),4) „ABCDEF“ wird zu „CDEF“ • Text rechts abschneiden: cutRight(Quelle, Länge) cutRight(cellValue(n,1),4) „ABCDEF“ wird zu „ABCD“ • Text links auffüllen: fillLeft(Quelle, Fülltext, Länge) fillLeft(cellValue(n,1), "ABC", 10) „XYZ“ wird zu „ABCABCAXYZ“ • Text rechts auffüllen: fillRight(Quelle, Fülltext, Länge) fillRight(cellValue(n,1), "ABCDEFGHI", 10) „XYZ“ wird zu „XYZABCDEFG “ • Umwandeln in Großbuchstaben: upperCase(Quelle) upperCase(cellValue(n,1)) „Beispiel“ wird zu „BEISPIEL“ • Umwandeln in Kleinbuchstaben: lowerCase(Quelle) lowerCase(cellValue(n,1)) „Beispiel“ wird zu „beispiel“ robotron* ecount Weitere Feldoperationen • Leerzeichen an Anfang und Ende entfernen: trim(Quelle) trim(cellValue(n,1)) • Text suchen: indexOf(Quelle, Suchtext) indexOf(cellValue(n,1), "find") „Unauffindbar“ wird zu 5 • Textlänge: length(Quelle) length(cellValue(n,1)) • • • • Dateiname der verarbeiteten Datei: filename() Name des aktuellen Arbeitsblattes: sheetName() Aktuelle Spalte: column() Aktuelle Zeile: row() robotron* ecount Funktionen auf Edis-Kennzeichen Edis-/Obis-Kennzeichen: [M-][KK:]GG.AA[.TT][*RR] • Edis-Kennzeichen auswerten: edisSign(Quelle) • Medium für Edis-Kennzeichen setzen: edisM(neuer Wert, EdisQuelle) edisM(1, edisSign("1.9.1")) => „1-1.9.1“ edisM(1, edisSign("2-1:1.9.1")) => „1-1:1.9.1“ Kanal, Messgröße, Messart, Tarif und Rückstellkennziffer setzen: edisKK(…), edisGG(…), edisAA(…), edisTT(…), edisRR(…) analog zu edisM(…) Standard-Medium setzen: edisDefM(neuer Wert, EdisQuelle) edisDefM(1, edisSign("1.9.1")) => „1-1.9.1“ edisDefM(1, edisSign("2-1:1.9.1")) => bleibt „2-1:1.9.1“ Standard-Kanal, -Tarif, -Rückstellkennziffer: edisDefKK(…), edisDefTT(…), edisDefRR(…) analog zu edisDefM(…) • • • • edisSign("1.9.1") robotron* ecount Mögliche Fehlerquellen • Einige Parameter besitzen einen Standard-Wert, der gilt, falls kein Wert (leerer Wert) angegeben wurde, z.B. Status-Feld und FK-ID-Felder leere Zeichenkette angeben • Eine Koordinate in cellValue() hat inkorrekte Einstellung ob relativ oder nicht: cellValue(1,2) anstatt cellValue(1,n) • Formatmaske für Datum, Uhrzeit oder Zahl passt nicht zu den Daten • Daten enthalten Zeitumschaltung und Zeitstempel sind nicht fortlaufend korrekte Zeitzone und Umschaltmethoden angeben • Wertabstand auf {2,1} gelassen, aber Abstand der Spalten beträgt 1 jede 2. Spalte wird ausgelassen • Daten enthalten zusätzliche Zeilen/Spalten, die keine verarbeitbaren Daten enthalten Abbruchkriterien definieren robotron* ecount