[VB6] Best practise: Datensatzaggregierung und Anzeige

28/08/2010 - 18:34 von Jens Müller | Report spam
Hallo,

ein externes Programm schreibt andauernd jede Sekunde einen Float-Wert in
eine/mehrere Datei(en). Diese Werte sollen als Graphen visualisiert werden,
und zwar möglichst skalierbar. Ansichten sollen über Jahre möglich sein oder
viel kleinere vom Nutzer festgelegte Zeitràume. Für lange Zeitràume wird
wohl eine Aggregierung nötig sein, wàhrend für fest definierte kleine
Zeitràume die Daten direkt genommen werden können.
Das Format in dem das externe Programm die Daten in die Datei(en) schreibt
kann ich spezifizieren.

Wie würdet ihr vorgehen bezüglich
-Unterteileung auf mehrere Dateien (eine pro Tag z.B.)
-Format der Dateien, z.b. csv, eine Spalte das Datum eine Spalte der Wert
-Aggregierung der Daten wenn sehr große Zeitràume angezeigt werden sollen,
Vorverarbeitung der Daten?
-Visualisierung der Daten - taugt das MsChart Control etwas?

Danke für jegliche Ideen,
Jens
 

Lesen sie die antworten

#1 Ingo Moch
28/08/2010 - 22:24 | Warnen spam
Hallo Jens,

Jens Müller wrote:

ein externes Programm schreibt andauernd jede Sekunde
einen Float-Wert in eine/mehrere Datei(en). Diese Werte
sollen als Graphen visualisiert werden, und zwar
möglichst skalierbar. Ansichten sollen über Jahre möglich
sein oder viel kleinere vom Nutzer festgelegte Zeitràume.
Für lange Zeitràume wird wohl eine Aggregierung nötig
sein, wàhrend für fest definierte kleine Zeitràume die
Daten direkt genommen werden können. Das Format in dem das externe Programm die Daten in die
Datei(en) schreibt kann ich spezifizieren.

Wie würdet ihr vorgehen bezüglich



Bei den Szenario wuerde ich versuchen mit dem
Auswertungsprogramm nicht auf dieselbe Datei wie das
externe Programm zuzugreifen, um paralelle Zugriffe
zu vermeiden. Bestfalls schreibt das externe Programm
in eine "Work.csv", benennt diese zyklisch in
"Data_YYYYMMDDHHMMSS.csv" um und schreibt dann in eine
neue "Work.csv".

-Unterteilung auf mehrere Dateien (eine pro Tag z.B.)



Aus obigen ergibt sich die Frage, wie zeitnah die Benutzer
diese Daten sehen wollen? Zudem stellt sich die Frage,
wie das externe Programm mit grossen Dateien zurecht kommt.
Daraus resultiert dann die Unterteilung.

-Format der Dateien, z.b. csv, eine Spalte das Datum eine
Spalte der Wert




IMHO das sinnvollste, wobei ich fuer die Aggregierung schon
hier ein Feld "von Zeitpunkt" und ein Feld "bis Zeitpunkt"
(die initial ja erstmal den gleichen Wert haben koennen).

-Aggregierung der Daten wenn sehr große Zeitràume
angezeigt werden sollen, Vorverarbeitung der Daten?



Werden die detailieren Daten auch in spaeteren Zeitraeumen
benoetigt oder interessieren nach - sagen wir mal - einer
Woche nur noch "Summen"?

Dann koenntest Du z. B. obige Datei in eine Datenbank-
tabelle einlesen (Tabellenaufbau genau so wie die
csv-Datei). Der gerade eingelesenen Datei haengst Du
ein .bck an (eine ggf. noetige Archivierung kann dann
mit den Boardmitteln des Betriebssystem vollzogen
werden).

Zu Daten, die z. B. aelter als sieben Tage sind, bildest
Du den Durchschnittswert des Tages und schreibst diesen
mit dem korrekten Zeitraum in dieselbe Tabelle. Die
detailierteren Daten loescht Du.

Beispiel:

Vorher:

VonZeitpunkt; BisZeitpunkt; Wert
2010-08-21 00:00:00; 2010-08-21 00:00:00; 12
2010-08-21 00:00:01; 2010-08-21 00:00:01; 24
2010-08-21 00:00:02; 2010-08-21 00:00:02; 6
...
2010-08-21 23:59:58; 2010-08-21 23:59:58; 48
2010-08-21 23:59:59; 2010-08-21 23:59:59; 3

Nachher:

2010-08-21 00:00:00; 2010-08-21 23:59:59; 18,6

Fuer noch weiter entfernte Zeitraeume kannst Du nach
demselben Schema das Raster noch groeber fassen.

HTH
Ingo

Ähnliche fragen