Entwickeln von Ecount-Import-Filtern

Werbung
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
robotron* ecount
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* ecount
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* ecount
Datenimport-Maske
Start mit KomA-Skript config_gui_import(.cmd / .sh)
robotron* ecount
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* ecount
Aufbau der grafischen Oberfläche
Daten-Vorschaubereich
Konfigurationsbereich
robotron* ecount
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* ecount
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* ecount
Allgemeine Einstellungen
robotron* ecount
Fehlerhafte Einstellung
Fehleranzeige bei syntaktischen Fehlern in Funktionen
robotron* ecount
Vorschau der importierten Daten
Aktualisierung der Vorschau über Button „Datei neu laden“
robotron* ecount
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* ecount
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* ecount
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* ecount
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* ecount
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* ecount
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* ecount
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* ecount
Herunterladen