Schleife für eine Fetchall-Statement

Installation und Anwendung von Datenbankschnittstellen wie SQLite, PostgreSQL, MariaDB/MySQL, der DB-API 2.0 und sonstigen Datenbanksystemen.
123GuteLaune
User
Beiträge: 27
Registriert: Mittwoch 2. November 2016, 22:35

Leider lässt das UN, wo ich die Arbeit schreibe, nur Excel, Access und Python zu ->Datenschutzgründe
Aber ansich ist die Abfrage sehr einfach, ein Beispiel

Code: Alles auswählen

SELECT Frucht FROM Obstkorb WHERE Grün AND Unverdorben
Der Select-Parameter und From-Parameter bleiben gleich nur die Where Bedingung ändern sich oder sollte sich in der Schleife anpassen.
Für die WHERE (A- Variable) Attribute gilt nur die Regel Grün ist ein Oberattribute von Unverdorben, Weiteres Beispiel

Code: Alles auswählen

 A = [ [Grün[Unverdorben; Schlecht; unreif]; [Blau[Unverdorben1; Schlecht1; unreif1]];Rot[Unverdorben2; Schlecht2; unreif2]]]
Diese Möglichkeiten müssen in zwei Schleife nach einander in einer äußeren Schleife mit Grün und einer Inneren Schleife (Unverdorben usw.) durchlaufen werden.

Die Daten für den Inhalt der Schleifenattribute wollte ich durch eine Excel-Tabelle hochladen, sprich die Möglichen Kombinationen (Die Daten wären auch schon in der Datenbank enthalten, aber ich weiß nicht wie ich an diese infos kommen, da die Spalten näturlich Doppelung haben und ich nicht weiß, wie ich python sag, lade die gesamte Spalte und lösche alle Doppelung raus und dann nutze diesen Inhalt)

Nach dem ein Datensatz ausgewählt wurde in Access und in Python ist wollte ich mir den Primary key mit geben lassen und diesen mit den Werten in Excel speichern. Die Werte wollte ich dann mit verschiedenen Methoden als Basis nehmen für meine Prognose und diese Prognose ebenfalls zurück nach Excel schreiben in eine andere Spalte aber in gleiche Zeile für den Primary key. Danach wollte ich Python sagen schreib mir die Werte zurück in Access, wo der Primary key gleich ist und speichere Ihn in Spalte X.

Aber ich habe gehört das man auch Biblotheken nutzen könnte für solche Fälle, aber da kenn ich das Prinzip nicht?

P.S. Wie viel würde sowas kosten wenn ich jemanden darum beten würde sowas entgeltlich zu Programmieren?
Sirius3
User
Beiträge: 17741
Registriert: Sonntag 21. Oktober 2012, 17:20

@123GuteLaune: trotz dreimal durchlesen, habe ich immer noch nicht verstanden, welche Struktur Deine Daten haben, welche Operationen Du darauf ausführen willst, warum Du überhaupt Python verwenden willst. Kannst Du nicht alles in Access machen? Nach Excel mußt Du auch nichts exportieren, weil man Accessdaten per Datenquelle einfügen kann.
Benutzeravatar
noisefloor
User
Beiträge: 3854
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,

was ich überhaupt nicht verstehe ist die Datenstruktur. In SAP ist es "mehrdimensional" (wie viele Dimensionen denn?), die reduzierst es auf zwei in Access, der SQL-Query ist aber total simpel, da sind noch nicht mal Relationen im Spiel.

Wie ich oben schon mal gesagt habe sehe ich - wie Sirius3 auch - keine wirklichen Grund für Python. Oder man macht direkt alles in Python, wenn z.B. Pandas ein gangbarer Weg wäre.

Gruß, noisefloor
123GuteLaune
User
Beiträge: 27
Registriert: Mittwoch 2. November 2016, 22:35

Ich hatte gestern ein Gespräch mit einem Informatiker in Spee.

Folgendes kann ich jetzt sagen:
Ich nutze meine Rechner nur als eine auführende Supertaschenrechner.
Excel-Auslagerung ist nicht nötig und eine Berechnung in Access ist nicht möglich auf Grund der komplexität der Prognose-Methoden (z.B. einen Support-Vektor-Analyse).
Man kann alles nur in Python lösen und Python holt sich den Input aus Access. Eine Rückschreibung der Daten durch meinen Primary Key ist auch möglich.

@Sirius:Was meinst du mit Struktur?
Die Daten sind Umsatzmengen und Umsatzwerte über einen Zeitraum von mehreren Jahren in Monatsscheiben. Auf diese Daten will ich meine Prognosen ausführen.

@noisfloor:
Die Daten in der SAP-Datenbank sind natürlich 2-Dimensional, aber auf diese Daten konnte ich nicht direkt zugreifen (Firmenpolicy). Ich konnte nur mit einem Art Extractor (Analyzer) die Daten aus SAP ziehen. Da immer nur einen bestimmte Sicht (Parametrisierte Abfrage an SAP mit Analyzer) im Extractor angezeigt werden konnte, hätte ich so jede Variante durchgespielt, die mich interresierte, hätte ich das ungefähr 500.000 mal machen müssen. Eine Automatisierung davon war nicht möglich. Deswegen habe ich bestimmte Sichten übereinandergelegt um meine Extraction zu beschleunigen (ca. 30 mal). Dadurch hab ich eine 4-Dimensional Ansicht bekommen
Beispiel:

Code: Alles auswählen

						Umsatzmenge	Umsatzmenge 	...	Umsatz	Umsatz	Umsatz
						Zeit1				Zeit2		Zeit...	Zeit1		Zeit2		Zeit...
Obstkorb     Apfel	Umsatzmenge	Umsatzmenge	...	Umsatz	Umsatz	...
Obstkorb     Banane	Umsatzmenge	Umsatzmenge	...	Umsatz	Umsatz	...
Obstteller     Kiwi	Umsatzmenge	Umsatzmenge	...	Umsatz	Umsatz	...
...
Um meine Berechnung zu machen hab ich die Daten-Struktur so ungeformt um die Daten in Access zu lagern (Access ist nur ein schnelles und riesiges Lager für mich)

Code: Alles auswählen

Obstkorb	Apfel		Zeit1	Umsatzmenge	Umsatz
Obstkorb	Apfel	Zeit2	Umsatzmenge	Umsatz
Obstkorb	Apfel	Zeit...	Umsatzmenge	Umsatz
Obstkorb	Banane		Zeit1	Umsatzmenge	Umsatz
Obstkorb	Banane	Zeit2	Umsatzmenge	Umsatz
Obstkorb	Banane	Zeit...	Umsatzmenge	Umsatz
Obstteller	Apfel		Zeit1	Umsatzmenge	Umsatz
Obstteller	Apfel	Zeit2	Umsatzmenge	Umsatz
Obstteller	Apfel	Zeit...	Umsatzmenge	Umsatz
Ich denke ich werde Pandas nutzen und eine Art Biblothek anlegen die geparst ist, die ich mit meinem Input aus Access fülle. Danach werde ich meine Berechnungen machen und meine neuen Ergebnisse durch einen Update Befehl in Access speichern (Primary key). Danach Speicher leeren...
Die Schleife wird dann 1 Millionmal ausgeführt und fertig... (so der Plan)

Meint Ihr sowas ist möglich?

Gruß
GuteLaune
Sirius3
User
Beiträge: 17741
Registriert: Sonntag 21. Oktober 2012, 17:20

@123GuteLaune: für diese Art Daten eine Datenbank zu benutzen, ist vielleicht nicht die beste Wahl. Du hast ja in Wirklichkeit 3-dimensionale Daten (Art, Zeit, Umsatzmenge/Umsatz). Dafür kennt Excel Pivot-Tabellen.

Wieviele Inputdaten hast Du? Wieviele Analysedaten? Wievieldimensional sind diese Analysedaten? Willst Du auf Inputdaten später noch zugreifen oder nur auf die Analysedaten?
123GuteLaune
User
Beiträge: 27
Registriert: Mittwoch 2. November 2016, 22:35

@Sirius:

Meine Datengröße liegt bei 2-3 GB und bei Excel ist zwar erst bei 1 Mio Zeilen Schluss, aber ich brauche mindestens 240.000 Zeilen und über 4.000 Spalten und alleine bei meinen Probe-Daten (400.000 Zeile und 10 Spalten) ohne Berechnung wird Excel sehr langsam oder funtioniert nicht mehr. Meine realtionsbassierte Datenbank wird wahrscheinliche eher 10 GB groß sein, aber der Abruf der Daten ist schnell und es kann einfach in Excel nachbearbeitet werden.
Zusätzlich hab ich als anforderung das diese Erweiterung dieser Datenbank möglich sein muss und da sehr ich mehr als nur Schwarz für Excel. Besonders, wenn ich aus Excel auch noch Berechnungn durchführen will die in Python laufen, da wie gesagt Excel meine mathematischen Modell nicht kann.
123GuteLaune
User
Beiträge: 27
Registriert: Mittwoch 2. November 2016, 22:35

Nochmal alle deine Frage zu beantworten:

meine Inputdaten sind etwa Werte in Zellen 250 Mio -> Datengröße 7 GB in Datenbank oder Excel 2-3 GB
Neu berechnte Analyse-Daten in Zellenwerten ca. 100 Mio -> 2 GB in Datenbank
Die Analysedaten sind alle zwei dimensional da sie in meiner Datenbank gespeichert sind.
Ich werden über eine Abfrage in Access die Daten bestehen aus "Input" und "Analyse" ausgeben lassen und sie dann weiter auswerten in Excel.
Antworten