Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1464to1468
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

große Datenmengen - auslagern oder importieren?

große Datenmengen - auslagern oder importieren?
29.12.2015 20:47:38
Lukas
Hallo zusammen,
ich arbeite für diverse Aufgaben mit größeren Datenmengen in diversen Arbeitsmappen und stoße hierbei so allmählich an einige Grenzen.
Bei den Daten handelt es sich um Messdaten. Gemessen werden Luftströme, Temperaturen, Feuchten usw. Die Daten werden mir als .csv-Dateien geliefert (tageweise) und derzeit per makro in eine einzige Arbeitsmappe in diverse Sheets importiert. Gemessen wird alle 10 Minuten; ich habe inzwischen Daten aus über einem Jahr.
Ich habe 18 verschiedene Messsensoren (also 18 Datensheets) mit je 365*24*6=52560 Zeilen (Messzeitpunkte)(pro Jahr) und jeweils 10 Spalten (diverse Messwerte). In der gleichen Arbeitsmappe befinden sich noch zahlreiche Diagramme, die die Daten anschaulich darstellen - erstellt über diverse Makros. Eine solche Arbeitsmappe über ein komplettes Jahr ist mal eben 360MB groß...
Mein Problem bei der ganzen Sache: erstellt habe ich die Arbeitsmappe als ich Daten von wenigen Wochen hatte. Mit der Zeit wurde es immer mehr und das ganze immer langsamer. Inzwischen dauert es je nach Rechnerleistung bis zu Minuten bis das ganze geöffnet ist; auf einigen PCs lässt es sich gar nicht mehr öffnen (ich nehme an aufgrund mangelnden Arbeitsspeichers).
Ich suche daher nach Verbesserungsmöglichkeiten, habe allerdings von dieser Materie wenig Ahnung. Nach etwas Online-Recherche sehe ich derzeit folgende Möglichkeiten:
-Auslagern der Dateien in eine einzige externe Arbeitsmappe
-Auslagern der Dateien in mehrere externe Arbeitsmappen
-Auslagern der Dateien in eine Datenbanken (bspw.Access (keine Vorkenntnisse))
In allen Fällen hätte ich am ende mehrere Dateien; in der Datei für den Nutzer wären nur noch Diagramme.
-alles so lassen wie es ist und Geduld haben
Der Nutzer muss am Ende eigentlich nur die Diagramme sehen und diese über Makros anpassen können (Zeitraum, Achsengrenzen usw.). Da die Diagramme öfters mal geändert werden müssen sollte der Zugriff auf die Daten möglichst schnell funktionieren; ob das ganze beim Öffnen etwas länger dauert ist nicht derart wichtig (es sollte jedoch auch auf schwachen Rechnern laufen).
Kennt sich jemand mit dieser Thematik aus und kann mir Hinweise geben auf welche Art und Weise ich das ganze optimieren kann oder in welche Richtung ich mich informieren sollte?
Wäre über Hilfe wirklich sehr dankbar!
Viele Grüße,
Lukas

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: große Datenmengen - auslagern oder importieren?
01.01.2016 19:02:08
Michael
Hallo Lukas,
mit so großen Datenmengen habe ich leider keine praktische Erfahrung.
Nachdem der Anwender die Diagramme *über Makros* anpassen können soll, liegt die Optimierung erfreulicherweise völlig in Deiner Hand, weil Du die Makros ja auch erstellst.
Die grundlegenden Fragen sind:
a) welche Diagramme benötigen Daten von welchen Sensoren?
b) welche Auflösung haben diese Diagramme?
a) Ich würde erst Mal probieren, die Daten in 18 Dateien (eine pro Sensor) zu zerteilen und je nach dem, welche davon für ein konkretes Diagramm benötigt werden, nur Infos aus den betroffenen Datein zu holen.
52.560 Zeilen mal 8bytes pro Meßwert mal 10 Werte macht dann gut 4 MB pro Meßwert.
b) für ein Jahresdiagramm brauchst Du keine 52.560 Meßwerte zuverwurschteln, das läßt sich weder am Bildschirm anzeigen noch ausdrucken.
Insofern bietet es sich an, zusätzlich zu den Originaldaten "geraffte" Ansichten der Daten zu speichern, die dann effektiv für die Diagrammerstellung benutzt werden: z.B. tage- oder stundenweise (mit welchem Verfahren auch immer diese "Raffung" erzeugt wird: Mittelwerte, gleitender Durchschnitt o.ä.).
Das vermindert das Datenaufkommen und damit die Dauer der Berechnungen erheblich.
Ob das alles mit einer Datenbank schneller ist als mit reinem Excel, mögen Berufenere beantworten. Excel geht ja nicht nur mit Access, sondern auch mit allen möglichen DB-Servern (incl. SQLite), aber grundsätzlich werden die Daten dabei immer über Treiber oder ähnliche Strukturen durchs System geschaufelt - ich kann mir nicht vorstellen, daß das schneller geht als ein direkter Dateizugriff auf Platte. Geschwächt wird dieses Argument dadurch, daß Deine Datein offensichtlich auf einem Dateiserver liegen und ohnehin durchs LAN geschaufelt werden.
Die Essenz meiner Idee ist es, Makros bzw. Diagramme und ggf. *nur* die für die Diagramme nötigen Daten in der minimal für die Darstellung nötigen Auflösung in einer Datei zu haben, während weitere Daten nur bei Diagrammänderungen importiert werden.
Schöne Grüße,
Michael

Anzeige
AW: große Datenmengen - auslagern oder importieren?
03.01.2016 09:36:31
Lukas
Hallo Michael,
vielen Dank für die Antwort. Ich war über den Jahreswechsel mit den Gedanken dann doch wo anders daher meine späte Antwort.
Ich werde mich deinem Tipp bzgl. der Raffung in der Darstellung widmen und sehen was ich damit erreichen kann.
Vielen Dank und viele Grüße,
Lukas

AW: große Datenmengen - auslagern oder importieren?
03.01.2016 18:37:27
Michael
Hallo Lukas,
der folgende Ansatz wurde durch Metastock inspiriert, ein Börsenprogramm, das mir ein Bekannter vorgeführt hat.
Du kannst Dir ja vorstellen, was mit realtime-Kursen so passiert: die werden laufend aktualisiert.
Und trotzdem schaffen die (Metastock-Programmierer) es, daß Du die "Auflösung" mit der Maus ändern kannst, ohne eine spürbare Rechenzeit wahrzunehmen: ob Du nun intraday die Ticks innerhalb einer Stunde ansiehst oder auf ein komplettes Jahr zoomst.
Ich vermute mal, daß die ein höchst durchdachtes Datenformat verwenden, das darüberhinaus auch noch evtl. indiziert ist.
CSV hat den Nachteil, daß diverse Trennzeichen vorhanden sind, die Speicher (und damit Ladezeiten) kosten: Trennzeichen wie , oder ; und CRLF.
.xlsx hat den ganzen XML-Müll drin; das Laden ist fix, weil komprimiert, aber alles muß erst dekomprimiert und dann geparst werden.
Vielleicht wäre .xlsb, das Binärformat, besser.
Oder eben eine eigene Datenstruktur: ich habe mal getestet, Daten in 64KB-Blöcken byteweise zu lesen und zu schreiben: 3 MB werden in "0" Timerticks (t1 as single, t2 as single, t1=timer, Lesen UND Schreiben, t2=timer, und dann war t2-t1=0): https://www.herber.de/forum/archiv/1444to1448/t1446360.htm
Das heißt, Du kannst Dir ne Datenstruktur pro Sensor überlegen:
- welche Genauigkeit haben Deine Meßwerte? single=4 Byte oder double= 8 Byte?
- Datum & Zeit: date = 8 Byte (das kann man sich eigentlich schenken, *wenn* definitiv sichergestellt ist, daß die Daten lückenlos vorhanden sind)
Angenommen, Du hast 10 mal 4 Bytes = 40 Bytes Meßwerte, dann bekommst Du in einem 64K-Block 1638 davon unter, wobei ein nicht benutzter Rest von 16 Bytes bleibt. Den nicht zu benutzen spart Rumrechnerei. (Einen Block von 64K zu verwenden, scheint wegen der Blockgröße auf der Festplatte vorteilhaft zu sein)
Sagen wir weiter, Du benötigst für ein konkretes Diagramm 100 Werte (sind sicher mehr als nötig, aber dann isses schön glatt), z.B. in einer Auflösung von jedem 5. Wert, und zwar ab dem 37000.
Berechnungs- bzw. Programmierbeispiel anbei: https://www.herber.de/bbs/user/102571.xls
Das ist einigermaßen kompliziert, aber machbar.
Eine andere Möglichkeit wäre, via PUT einen user-defined type zu schreiben (bwz. mit GET zu lesen); schau Dir dazu mal die Hilfe zu PUT und GET an. Das hat den Vorteil, daß Du direkt den Datensatz mit der *Nr.* lesen kannst, ohne groß herumzurechnen.
Also: eine Möglichkeit ist, "geraffte" Daten zu erzeugen und für einige, häufig benötigte "Auflösungen" zu speichern, während die oben skizzierte Geschichte eher das *schnelle* Auslesen aus dem originalen Datenbestand beschreibt, der allerdings zunächst in einem eigenen Format zu speichern ist.
Nur mal so als Anregung.
Hm. ALLERDINGS führt das Auslesen nur jedes x-ten "Datensatzes" dazu, daß evtl. Ausreißer in den Meßwerten schlicht übergangen werden...
Schöne Grüße,
Michael
Anzeige

306 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige