Dynamischer Daten Import / Export

datenbank

weil Einfach - produktiver ist
Mit der Freeware Version können bis zu 10.000 Datensätze verarbeitet werden!
Willkommen, Gast
Benutzername: Passwort: Angemeldet bleiben:
Willkommen im FlowHeater Support Forum!

Hier werden Fragen zum Umgang mit dem FlowHeater beantwortet.

THEMA: Daten durch Replacewerte anreichern Problem

Daten durch Replacewerte anreichern Problem 1 Monat 3 Wochen her #2880

  • Ralf Birk
  • Ralf Birks Avatar
  • Offline
  • Senior Member
  • Beiträge: 45
Hallo Herr Stark,

ich bin wieder einmal auf der Suche nach einer Problemlösung.
Ich muss die Anzahl von gleichen Werte in einem Feld einer CSV zählen und an jeden Datensatz anhängen.
Bisher mache ich dies im Batch, bei dem die erste .fhdnach dem Feld gruppiert wird, per ID hochgezählt und der Maxwert ermittelt wird. Das Feld und der Maxwert werden in eine CSV geschrieben.
in der 2. .fhd wird über replace(erweitert aus der erzeugten Liste) der Maxwert angereichert.
Da ich je Datei jeweils mehrere 100.000 Datensätze habe, dauert dies ewig (je 100.000 ca. 1 Std.)
Über SQLLite bekomme ich es leider nicht hin, da der Index ja leider nicht eindeutig und mehrfach forhanden ist (Wobei der jeweilig anzureichernde Wert zu der Menge immer eindeutig ist).

Gibt es hierzu einen Besseren Weg?

Wenn nicht, müsste ich mehrere Dateien über Nacht durchlaufen lassen. Hier habe ich nur 1 Problem:
Über "/ReadFileName" kann ich ja alle Dateien hintereinander abarbeiten.
Ich lese mit Netscript den Dateinamen aus und schreibe diesem als Variable ind den Ausgangsdateinamen.
Bei dem ersten .fhd erzeuge ich die Datei "_temp$Variable$.csv
Leider kann ich im erweiterten Replace in der 2. fhd keine $Variable$ im Dateinamen verwenden (entsprechendes Script und das Get sind natürlich vorhanden). Somit fällt diese Variante auch flach, da bei einem festen "_temp"Namen ab der 2 Datei die falschen Werte genommen werden.
Oder gibt es einen Trick im Replaceheater eine Variable im Dateinamen zu verwenden?

Sorry für den wirren Schreibstil....Kann es leider nicht besser Beschreiben.

Gruß Ralf B.
Der Administrator hat öffentliche Schreibrechte deaktiviert.

Daten durch Replacewerte anreichern Problem 1 Monat 3 Wochen her #2882

  • FlowHeater-Team
  • FlowHeater-Teams Avatar
  • Offline
  • Administrator
  • Beiträge: 1099
Hallo Herr Birk,

über folgende Links können Sie sich eine BETA Version herunterladen. Hier wurde der String Replace Heater so angepasst, dass für die CSV Lookup Datei auch FlowHeater Parameter verwendet werden können.

FlowHeater Beta 32 Bit
FlowHeater Beta 64 Bit

Zu Ihrem Problem) Wenn ich hier eine CSV Datei mit 100.000 Zeilen sowie eine CSV Lookup Datei ebenfalls mit 100.000 verarbeite, dauert das bei mir auf einem relativ langsamen Rechner ca. 5 Minuten. Liegt Ihre CSV Datei evtl. auf einer Netzwerkressource, oder greifen Sie mehrmals, mit mehreren String Replace Heatern auf die CSV Lookup Datei zu?

Damit Sie ein eindeutiges Kriterium für eine Lösung über SQLite bekommen, können Sie z.B. auch den Dateinamen der gerade verwendeten CSV Datei in einer Spalte mitverwenden, so wie Sie es auch für die CSV Lookup Datei tun.

Hinweis: Um den Dateinamen zu erhalten ist kein .NET Script Heater mehr notwendig, dazu können Sie seit längerem den System Heater verwenden.
gruß
Robert Stark

Wurde Ihre Frage damit beantwortet? Bitte geben Sie ein kurzes Feedback, Sie helfen damit auch anderen die evtl. ein ähnliches Problem haben. Danke.
Letzte Änderung: 1 Monat 3 Wochen her von FlowHeater-Team.
Der Administrator hat öffentliche Schreibrechte deaktiviert.

Daten durch Replacewerte anreichern Problem 1 Monat 3 Wochen her #2883

  • Ralf Birk
  • Ralf Birks Avatar
  • Offline
  • Senior Member
  • Beiträge: 45
Hallo Herr Stark,

vielen Dank für Ihre rasche Antwort.
Ihr Link geht zur normalen anstatt der Beta Version. Ich habe diese über die mir bekannte Adresse heruntergeladen.
Leider gehr es mit der Variablen immer noch nicht (Siehe angehängtes Bild).
Zur Geschwindigkeit ist zu sagen, das auser ein wenig sortieren sonst nichts gemacht wird (sehen Sie auch auf dem Screenshot).

Meine Alternative Lösungssuche über SQlite haben Sie vermutlich missverstanden. Mit dem Anreichern den Dateinamens ist dis sicherlich nicht zu Lösen.
Im ersten Flow zähle ich die Datensätze, die eine gleiche Nummer haben. Im 2. Flow (Sceenshot) muss ich die Daten in der Reihenfolge 1.Palettennr., 2. Bundnr, 3 Sendungsnr. umsortieren. Bundnummer wird mit dem Lookup mit der Anzahl im Bund ersetzt, da die kleinen Bunde unten auf einer Palette sitzen müssen. Wenn jetzt z.B. Bund 1 20 Datensätze beinhaltet, kommt die 1 in der SQlite 20 mal und der Lookup-Csv 1 mal vor. Hier kommt dann immer der Indexfehler.

Gruß

Ralf B.
Der Administrator hat öffentliche Schreibrechte deaktiviert.

Daten durch Replacewerte anreichern Problem 1 Monat 3 Wochen her #2884

  • FlowHeater-Team
  • FlowHeater-Teams Avatar
  • Offline
  • Administrator
  • Beiträge: 1099
Hallo Herr Birk,

Vielen Dank für den Hinweis bzgl. der Beta Version, die Links wurden korrigiert.

Das Problem ist der Sort Heater, der wird vor allen anderen aufgerufen und somit kann der Parameter für den CSV Lookup nicht initialisiert werden. Die einzige Möglichkeit den Parameter vor der Ausführung zu setzen ist über einen .NET Script Heater, der vor bzw. zwischen der Verbindung die zum String Replace Heater geht vorhanden ist. Unten habe ich Ihnen mal ein Skript dazu bereitgestellt. Das Skript setzt den Parameter und gibt den ersten Eingangsparameter zur weiteren Verarbeitung einfach wieder zurück. Sie müssen lediglich den Code Anpassen der den Wert des Parameters darstellen soll.

Hinweis: Es würde auch funktionieren den Parameter bei der Ausführung des Batch Moduls (FHBatch.exe) als Kommandozeilenparameter mit zu übergeben.

Zu Ihrer Definition) Ich frage mich warum Sie für einen Sort einen CSV Lookup über den String Replace Heater durchführen möchten? Reicht es nicht aus einfach über den Parameter zu sortieren? Wenn Sie das gleich Konstrukt auch auf dem „Default Layer“ verwenden um den Wert dem Feld zuzuweisen sollten Sie die Verbindung dieses Feldes auf den „Sort“ Layer legen. Verbinden Sie hier einfach den Ausgang des String Format Heater mit dem gewünschten Feld auf der Write Seite.

C# Skript um den Parameter zu setzen
public object DoWork()
{
  // hier den Code um den Parameter zu setzen.
  // zurgiff auf TextFileAdapter
  TextFileAdapter adapter = (TextFileAdapter)AdapterRead;

  // Parameter setzen, hier wird der aktuelle Dateiname der READ Seite verwendet
  Parameter["VersTitle"].Value = Path.GetFileName(adapter.Filename);

  // ersten Eingangsparameter zurückliefern, keine Änderung daran vornehmen!
  return InValues[0];
}
gruß
Robert Stark

Wurde Ihre Frage damit beantwortet? Bitte geben Sie ein kurzes Feedback, Sie helfen damit auch anderen die evtl. ein ähnliches Problem haben. Danke.
Letzte Änderung: 1 Monat 3 Wochen her von FlowHeater-Team.
Der Administrator hat öffentliche Schreibrechte deaktiviert.

Daten durch Replacewerte anreichern Problem 1 Monat 3 Wochen her #2885

  • Ralf Birk
  • Ralf Birks Avatar
  • Offline
  • Senior Member
  • Beiträge: 45
Hallo Herr Stark,
leider klappt es mit der Variablen im Replaceheater auch mit dem neuen Script nicht (Siehe Screenshot).
Im Batchmodus kann ich die Variable noch nicht angeben, da sich diese ja aus dem Dateinamen der Eingangsdatei ergibt.
Im "Default Layer" gebe ich den original "BN" Wert direkt auf den Write.
Der Sinn des ganzen ist ja, das die Originalstruktur der Datei beibehalten werden soll und nur die Bunde auf der jeweiligen Palette nach der darin enthaltenen Menge umsortiert werden. Die Sortierung in den einzelnen Bunden wird den 3. Sort wieder hergestellt.
Da eine SQlite Variante scheinbar nicht möglich ist, werde ich (sofern Ihnen nichts mehr zu dem Variablenfehler einfällt) wieder Datei für Datei abarbeiten.
Vieleicht versuche ich einmal einen Rechner hierfür mit SSD-Festplatte auszurüsten, da bei einer Abarbeitung Datei für Datei 100.000 Datensätze/Std. (wie Sie im Screenshot sehen lasse ich den Flow auf C: arbeiten und nicht über eine Netzwerkresource) auf Dauer nicht zu ertragen ist. Die daten sind im allgemeinen wesentlich Größer als in dem Beispiel.

Gruß Ralf B.


Der Administrator hat öffentliche Schreibrechte deaktiviert.

Daten durch Replacewerte anreichern Problem 1 Monat 3 Wochen her #2887

  • FlowHeater-Team
  • FlowHeater-Teams Avatar
  • Offline
  • Administrator
  • Beiträge: 1099
Hallo Herr Birk,

der .NET Script Heater muss zwischen die Verbindung vor dem String Replace Heater, im Anhang finden Sie ein Beispiel dazu. Das Skript setzt den Parameter und reicht den Eingangsparameter ohne Änderung dann zum String Replace Heater weiter. Wie der Parameter gesetzt wird, müssten Sie dabei an Ihre Bedürfnisse anpassen.

Zu Ihrem Massenproblem) Wenn Sie mir mal Ihre CSV Datei, die CSV Replace Datei sowie die verwendete Definition zukommen lassen können, kann ich mir das mal etwas genauer ansehen woran das evtl. liegen könnte. Gerne auch per Email.

Lösung über SQLite) Eine Lösung über eine Datenbank (z.B. SQLite) ist sehr komplex und bedarf einiges an Vorarbeit. Bitte haben Sie Verständnis dafür, dass Komplettlösung im Rahmen des kostenlosen Supportes nicht durchgeführt werden können. Gerne können wir aber einzelne Probleme, die Sie beim Umsetzen haben hier weiter ausarbeiten. Ein etwas ausführlicheres Beispiel finden Sie hier: CSV und Excel Daten über SQLite Datenbank zusammenführen

Dateianhang:

Dateiname: replace-fi...eter.zip
Dateigröße:3 KB
gruß
Robert Stark

Wurde Ihre Frage damit beantwortet? Bitte geben Sie ein kurzes Feedback, Sie helfen damit auch anderen die evtl. ein ähnliches Problem haben. Danke.
Letzte Änderung: 1 Monat 3 Wochen her von FlowHeater-Team.
Der Administrator hat öffentliche Schreibrechte deaktiviert.

Daten durch Replacewerte anreichern Problem 1 Monat 3 Wochen her #2888

  • Ralf Birk
  • Ralf Birks Avatar
  • Offline
  • Senior Member
  • Beiträge: 45
Hallo Herr Stark,

vielen Dank mit dem Tip der richtigen Plazierung des Script-Heaters. Ich habe den Readwert noch auf "Path.GetFileNameWithoutExtension" geändert und nun ist alles Perfekt. Zum Test habe ich 3 kleine Testdateien in den Eingangsordner geschoben. Diese wurden wie gewollt abgearbeitet.

Vielen Dank nochmal für die Hilfe

Ralf B.
Der Administrator hat öffentliche Schreibrechte deaktiviert.
Moderatoren: FlowHeater-Team
Ladezeit der Seite: 0.098 Sekunden