190 likes | 281 Views
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 e count. Konfiguration der Import-Filter.
E N D
Workshop Konfiguration des e-countCSV-Import-Moduls
Import-Architektur • Verarbeitung in 2 Schritten:1. Konvertierung in XML-Zwischenformat2. Importieren des Zwischen-XML nach 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
Ablauf der Konfiguration • Erstellung einer neuen Format-Konfiguration in datenimport.ini und Erzeugen einer Basis-Konfiguration 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
Datenimport-Maske Start mit KomA-Skript config_gui_import(.cmd / .sh)
Grund-Konfiguration des CSV-Formats • Dateiformat einstellen (Excel, CSV, Festlängentext) • Laden einer Beispieldatei (erste Fehlermeldung wegen fehlerhafter Konfiguration ignorieren) • Einstellen des Grundformats (Trennzeichen ...) • Auswahl des Grund-Modells (Vertikale Lastgangdaten usw.) • Auswahl des linken oberen Wertefeldes in den Daten (Pivotfeld) • Abstand zu den benachbarten Werten wählen • Zahlen- und Datumsformat einstellen • Abbruchbedingungen definieren
Aufbau der grafischen Oberfläche Daten-Vorschaubereich Konfigurationsbereich
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
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)
Fehlerhafte Einstellung Fehleranzeige bei syntaktischen Fehlern in Funktionen
Vorschau der importierten Daten Aktualisierung der Vorschau über Button „Datei neu laden“
Konfiguration der CSV-Felder • Felder können aus konstanten Werten und CSV-Feldern in absoluten oder zum Pivot-Feld relativen Koordinaten zusammengesetzt werden • Es können verschiedene Umwandlungsoperationen auf einzelne Ausdrücke angewendet werden
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“))
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)
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“
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()
Funktionen auf Edis-Kennzeichen Edis-/Obis-Kennzeichen: [M-][KK:]GG.AA[.TT][*RR] • Edis-Kennzeichen auswerten: edisSign(Quelle)edisSign("1.9.1") • 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(…)
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