Post on 06-Apr-2015
Konfiguration des e-countCSV-Import-Moduls
WorkshopWorkshopWorkshopWorkshop
robotron* ecount
Import-Architektur
• Verarbeitung in 2 Schritten:1. Konvertierung in XML-Zwischenformat2. 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 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
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ählen7. Zahlen- und Datumsformat einstellen8. 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 CSV-Feldern 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)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(…)
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