- Beiträge: 23
Wert (WRITE) in der Verarbeiten einbeziehen
- Flo
- Autor
- Offline
- Benutzer
Weniger
Mehr
7 Jahre 10 Monate her #2993
von Flo
Wert (WRITE) in der Verarbeiten einbeziehen wurde erstellt von Flo
Ich habe zwei Aufgaben bei denen die Umsetzung für mich leider mit FlowHeater nicht ganz trivial ist. Auf der WRITE-Seite müssen Werte als Ausgangswert / Bedingung verwendet werde.
Problemstellung 1) ID einlesen, je Zeile in zweiter Tabelle inkrementiert und am Ende der Verarbeitung zurückgeschrieben werden.
1. Zu Beginn der Verarbeitung des Datentransfers zwischen READ.Tabelle1 und WRITE.Tabelle1 soll der Wert des ID Zählers aus einem Feld der WRITE.Tabelle2.Zeile1 eingelesen werden.
2. Per Auto-ID, ID-Heater??? (oder Inkrement Script) wird diese Wert nun je Zeile WRITE.Tabelle1.ZeileX (n+x) erhöhen.
3. Am Ende der Ausführung muss der letzten ID Wert nun wieder in das Feld der WRITE.Tabelle2.Zeile1 zurückschreiben werden.
In ersten Ansätzen habe ich das Problem erhalten, dass in der zweiten Tabelle nur eine Zeile mit dem Startwert und incrementierten Wert ist und bleiben soll!
Problemstellung 2) Ähnliches wird zuvor, jedoch Suche MAX-Wert in Spalte von WRITE-Adaper
1. Max Wert in SpalteX (WRITE.Tabelle1) ermitteln bspw. ACC153, KdNr153 o.ä. einlesen (WRITE Seite)
2. Dann soll diese Nummer extrahiert und je eingelesenen Datensatz aus der Datenbank1 (READ Seite) in jedem neuen Datensatz der Datenbank2.Tabelle1 inkrementiert ergänzt werden bspw. ACC153+1, ACC153+n.
Hier sollen verschiedene Kundendatenbanken in einer neuen Datenbank zusammengeführt werden und eine Fortlaufende (somit nicht ID abhängige) Kundennummer erzeugt werden.
Leider bin ich bisher mit den Heatern noch nicht zu einem Lösungsansatz gekommen. Wie könnte hier eine mögliche Lösung aussehen?
Mit der hiermit, hoffentlich erst mal, abschließenden Problemstellung noch einmal vielen Dank für die super Unterstützung.
Viele Grüße, Florian
Problemstellung 1) ID einlesen, je Zeile in zweiter Tabelle inkrementiert und am Ende der Verarbeitung zurückgeschrieben werden.
1. Zu Beginn der Verarbeitung des Datentransfers zwischen READ.Tabelle1 und WRITE.Tabelle1 soll der Wert des ID Zählers aus einem Feld der WRITE.Tabelle2.Zeile1 eingelesen werden.
2. Per Auto-ID, ID-Heater??? (oder Inkrement Script) wird diese Wert nun je Zeile WRITE.Tabelle1.ZeileX (n+x) erhöhen.
3. Am Ende der Ausführung muss der letzten ID Wert nun wieder in das Feld der WRITE.Tabelle2.Zeile1 zurückschreiben werden.
In ersten Ansätzen habe ich das Problem erhalten, dass in der zweiten Tabelle nur eine Zeile mit dem Startwert und incrementierten Wert ist und bleiben soll!
Problemstellung 2) Ähnliches wird zuvor, jedoch Suche MAX-Wert in Spalte von WRITE-Adaper
1. Max Wert in SpalteX (WRITE.Tabelle1) ermitteln bspw. ACC153, KdNr153 o.ä. einlesen (WRITE Seite)
2. Dann soll diese Nummer extrahiert und je eingelesenen Datensatz aus der Datenbank1 (READ Seite) in jedem neuen Datensatz der Datenbank2.Tabelle1 inkrementiert ergänzt werden bspw. ACC153+1, ACC153+n.
Hier sollen verschiedene Kundendatenbanken in einer neuen Datenbank zusammengeführt werden und eine Fortlaufende (somit nicht ID abhängige) Kundennummer erzeugt werden.
Leider bin ich bisher mit den Heatern noch nicht zu einem Lösungsansatz gekommen. Wie könnte hier eine mögliche Lösung aussehen?
Mit der hiermit, hoffentlich erst mal, abschließenden Problemstellung noch einmal vielen Dank für die super Unterstützung.
Viele Grüße, Florian
Bitte Anmelden oder Registrieren um der Konversation beizutreten.
- FlowHeater-Team
- Offline
- Administrator
7 Jahre 10 Monate her - 7 Jahre 10 Monate her #2995
von FlowHeater-Team
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.
FlowHeater-Team antwortete auf Wert (WRITE) in der Verarbeiten einbeziehen
Hallo Florian,
Sie können Werte von der READ bzw. WRITE Seite mit Hilfe des SQL Heater oder des Lookup Heater auslesen. Der SQL Heater bietet u.a. die Möglichkeiten beliebige SQL Statements auf der jeweiligen Datenquelle abzusetzen inkl. Updates sowie ist es hier möglich den Zeitpunkt der Ausführung festzulegen (Start, pro Zeile/Satz, Ende).
zu 1) Auslesen der letzten ID mittels des SQL Heater beim Start der Definition, der Wert wird dabei in einem FlowHeater Parameter (z.B. $ID$) gespeichert. Diesen Parameter können Sie nun mit hilfe des Addition Heater pro Datensatz um 1 (s. Screenshot) erhöhen und als Wert für Felder verwenden. Entweder als Default wert einfach den Namen des Parameters mit Dollarzeichen umschließen ($ID$) oder aber Sie verwenden den Get Parameter Heater und verbinden den Ausgang mit dem Feld.
Am Ende lassen Sie einen weiteren SQL Heater ausführen (Ausführen bei auf „Ende“ stellen). Hier schreiben Sie den so veränderten Wert wieder zurück.
Der SQL lautet dabei folgendermaßen: update t_Tabelle set ID = $ID$ where feld = bedingung
Hinweis: Ich bin mir nicht ganz sicher was Sie vorhaben, denke aber dass Das evtl. auch mit Parametern und der Option dass diese für die weitere Verwendung gespeichert werden sollen funktionieren sollte.
Zu 2) im Prinzip wie 1) Auslesen des Feldes per SQL Heater beim Start der Definition. Um jetzt mit nicht nummerischen Felder rechnen zu können müssen Sie hier vor der Berechnung erstmal die ersten 3 stellen extrahieren und anschließend wieder zusammenführen. Beispiel siehe Anhang.
PS: Es wäre besser wenn Sie grob umschreiben was sie vorhaben damit ich mir davon ein Bild machen kann um etwas genauer auf Ihr Problem einzugehen.
SQL Heater bei Start
SQL Heater bei Ende
Sie können Werte von der READ bzw. WRITE Seite mit Hilfe des SQL Heater oder des Lookup Heater auslesen. Der SQL Heater bietet u.a. die Möglichkeiten beliebige SQL Statements auf der jeweiligen Datenquelle abzusetzen inkl. Updates sowie ist es hier möglich den Zeitpunkt der Ausführung festzulegen (Start, pro Zeile/Satz, Ende).
zu 1) Auslesen der letzten ID mittels des SQL Heater beim Start der Definition, der Wert wird dabei in einem FlowHeater Parameter (z.B. $ID$) gespeichert. Diesen Parameter können Sie nun mit hilfe des Addition Heater pro Datensatz um 1 (s. Screenshot) erhöhen und als Wert für Felder verwenden. Entweder als Default wert einfach den Namen des Parameters mit Dollarzeichen umschließen ($ID$) oder aber Sie verwenden den Get Parameter Heater und verbinden den Ausgang mit dem Feld.
Am Ende lassen Sie einen weiteren SQL Heater ausführen (Ausführen bei auf „Ende“ stellen). Hier schreiben Sie den so veränderten Wert wieder zurück.
Der SQL lautet dabei folgendermaßen: update t_Tabelle set ID = $ID$ where feld = bedingung
Hinweis: Ich bin mir nicht ganz sicher was Sie vorhaben, denke aber dass Das evtl. auch mit Parametern und der Option dass diese für die weitere Verwendung gespeichert werden sollen funktionieren sollte.
Zu 2) im Prinzip wie 1) Auslesen des Feldes per SQL Heater beim Start der Definition. Um jetzt mit nicht nummerischen Felder rechnen zu können müssen Sie hier vor der Berechnung erstmal die ersten 3 stellen extrahieren und anschließend wieder zusammenführen. Beispiel siehe Anhang.
PS: Es wäre besser wenn Sie grob umschreiben was sie vorhaben damit ich mir davon ein Bild machen kann um etwas genauer auf Ihr Problem einzugehen.
SQL Heater bei Start
SQL Heater bei Ende
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: 7 Jahre 10 Monate her von FlowHeater-Team.
Bitte Anmelden oder Registrieren um der Konversation beizutreten.
- Flo
- Autor
- Offline
- Benutzer
Weniger
Mehr
- Beiträge: 23
7 Jahre 10 Monate her #3005
von Flo
Flo antwortete auf Wert (WRITE) in der Verarbeiten einbeziehen
Hallo,
kann nur immer wiederholen das Euer Support unschlagbar ist.
Bezüglich meiner Fragestellung scheint das Problem an anderer Stelle zu liegen.
Und zwar scheint das Problem da zu liegen, dass ich auf der WRITE Seite mehrere MySQL Adapter habe. Bei einigen Adaptern/Tabellen sollen Zeilenweise Datensätze (Adressen) eingefügt werden. Der ID START-Wert (crmentity_seq) muss aus einem "Statischen" Feld einer Tabelle/Adapter eingelesen werden (wie bereits beschrieben mittels SQL Heater nach Parameter). Dieser Wert sollte je Datensatz inkrementiert werden (über Parameter mittels .Net Heater) und am Ende wieder in das "statische" Datenfeld zurückgeschrieben werden (wie beschrieben mittels SQL nach crmentity_seq und modentity_num - cur_id).
Hier erhält man jedoch bei der Ausführung eine Fehlermeldung Duplicate entry '7' for key 'PRIMARY'. Gibt es hier eine Möglichkeit das einige Adapter/Tabellen nicht je Datensatz um eine Zeile ergänzt werden, sondern wie Variablen genutzt werden können?
Eine Möglichkeit ist vsl. mittels Batch, speichern der "Zähler/Parameter" in Text-Date und setzen dieser Werte in zweiter Definition, gibt es hier auch eine Möglichkeit dies in einer Definition auszuführen?
Zum besseren Verständnis habe ich mal einen Ausschnitt der Datenbanktabellen und der Konfiguration angefügt
Nebenbei würde mich interessieren in welcher Reihenfolge die Heater z.B. .Net & SQL abgearbeitet werden? Dies müsste ja Einfluss auf Parameterwerte etc. haben.
Viele Grüße, Florian
kann nur immer wiederholen das Euer Support unschlagbar ist.
Bezüglich meiner Fragestellung scheint das Problem an anderer Stelle zu liegen.
Und zwar scheint das Problem da zu liegen, dass ich auf der WRITE Seite mehrere MySQL Adapter habe. Bei einigen Adaptern/Tabellen sollen Zeilenweise Datensätze (Adressen) eingefügt werden. Der ID START-Wert (crmentity_seq) muss aus einem "Statischen" Feld einer Tabelle/Adapter eingelesen werden (wie bereits beschrieben mittels SQL Heater nach Parameter). Dieser Wert sollte je Datensatz inkrementiert werden (über Parameter mittels .Net Heater) und am Ende wieder in das "statische" Datenfeld zurückgeschrieben werden (wie beschrieben mittels SQL nach crmentity_seq und modentity_num - cur_id).
Hier erhält man jedoch bei der Ausführung eine Fehlermeldung Duplicate entry '7' for key 'PRIMARY'. Gibt es hier eine Möglichkeit das einige Adapter/Tabellen nicht je Datensatz um eine Zeile ergänzt werden, sondern wie Variablen genutzt werden können?
Eine Möglichkeit ist vsl. mittels Batch, speichern der "Zähler/Parameter" in Text-Date und setzen dieser Werte in zweiter Definition, gibt es hier auch eine Möglichkeit dies in einer Definition auszuführen?
Zum besseren Verständnis habe ich mal einen Ausschnitt der Datenbanktabellen und der Konfiguration angefügt
Nebenbei würde mich interessieren in welcher Reihenfolge die Heater z.B. .Net & SQL abgearbeitet werden? Dies müsste ja Einfluss auf Parameterwerte etc. haben.
Viele Grüße, Florian
Anhänge:
Bitte Anmelden oder Registrieren um der Konversation beizutreten.
- FlowHeater-Team
- Offline
- Administrator
7 Jahre 10 Monate her #3007
von FlowHeater-Team
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.
FlowHeater-Team antwortete auf Wert (WRITE) in der Verarbeiten einbeziehen
Hallo Florian,
wen ich das richtig verstanden haben könnten Sie dazu den Wert mit einem SQL Heater am Anfang abrufen, in einem Parameter speichern, hochzählen und am Ende wiederum mit einem weiteren SQL Heater am Ende der Definition in die Tabelle zurückschrieben
z.B. Abrufen des Wertes beim Start und in Parameter $WERT$ speichern
und am Ende dann
Das müsste aber auch mit FlowHeater Parameter funktionieren. Parameter können für die weitere Verwendung zwar gespeichert werden, diese können aber nur in der gleichen Definition beim nächsten Lauf verwendet werden. Damit können sich z.B. die letzte ID merken die Sie verarbeitet haben um nur neue hinzugekommene Datensätze zu verarbeiten. Hier finden Sie ein Beispiel dazu: MySQL - nur neue Datensätze in eine CSV Datei exportieren
Ausblick auf Besserung) Für dieses Jahr ist geplant Definitionen mit mehreren Steps nacheinander ausführen zu lassen. Dann können solche Konstrukte wesentlich eleganter verarbeitet werden. Parameter können dann in einem Step gesetzt/gelesen werden und in nachfolgenden Steps verwendet werden.
Zur Ausführungsreihenfolge von Heatern/Funktionen) Als erstes werden die Start Heater ausgeführt, anschließend erfolgt eine evtl. Sortierung inkl. der Heater die da evtl. mit beteiligt sind. Nun werden die Control Heater (= Gelb) ausgeführt. Hiervon werden die Set Parameter Heater als erstes ausgeführt um evtl. Parameter in IF-THEN-ELSE Bedingungen zu verarbeiten. Anschließend werden alle normalen Heater durchlaufen, die Allgemeine Reihenfolge ist von oben (ersten Feld des ersten Adapters) nach unten (letztes Feld vom letzten Adapter) der WRITE Seite. Und zum Schluss werden die Ende Heater verarbeitet.
Bis auf die Start und Ende Heater ist es gewährleistet, dass evtl. Abhängigkeiten vorher aufgelöst werden. Bei Start und Ende ist es so, dass diese Momentan in der Reihenfolge ausgeführt werden in der Sie auf dem Designer gezogen wurden.
wen ich das richtig verstanden haben könnten Sie dazu den Wert mit einem SQL Heater am Anfang abrufen, in einem Parameter speichern, hochzählen und am Ende wiederum mit einem weiteren SQL Heater am Ende der Definition in die Tabelle zurückschrieben
z.B. Abrufen des Wertes beim Start und in Parameter $WERT$ speichern
select ID from TABELLE where FELD = ‚Bedingung‘
und am Ende dann
update TABELLE set ID = $WERT$ where FELD = ‚Bedingung‘
Das müsste aber auch mit FlowHeater Parameter funktionieren. Parameter können für die weitere Verwendung zwar gespeichert werden, diese können aber nur in der gleichen Definition beim nächsten Lauf verwendet werden. Damit können sich z.B. die letzte ID merken die Sie verarbeitet haben um nur neue hinzugekommene Datensätze zu verarbeiten. Hier finden Sie ein Beispiel dazu: MySQL - nur neue Datensätze in eine CSV Datei exportieren
Ausblick auf Besserung) Für dieses Jahr ist geplant Definitionen mit mehreren Steps nacheinander ausführen zu lassen. Dann können solche Konstrukte wesentlich eleganter verarbeitet werden. Parameter können dann in einem Step gesetzt/gelesen werden und in nachfolgenden Steps verwendet werden.
Zur Ausführungsreihenfolge von Heatern/Funktionen) Als erstes werden die Start Heater ausgeführt, anschließend erfolgt eine evtl. Sortierung inkl. der Heater die da evtl. mit beteiligt sind. Nun werden die Control Heater (= Gelb) ausgeführt. Hiervon werden die Set Parameter Heater als erstes ausgeführt um evtl. Parameter in IF-THEN-ELSE Bedingungen zu verarbeiten. Anschließend werden alle normalen Heater durchlaufen, die Allgemeine Reihenfolge ist von oben (ersten Feld des ersten Adapters) nach unten (letztes Feld vom letzten Adapter) der WRITE Seite. Und zum Schluss werden die Ende Heater verarbeitet.
Bis auf die Start und Ende Heater ist es gewährleistet, dass evtl. Abhängigkeiten vorher aufgelöst werden. Bei Start und Ende ist es so, dass diese Momentan in der Reihenfolge ausgeführt werden in der Sie auf dem Designer gezogen wurden.
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.
Bitte Anmelden oder Registrieren um der Konversation beizutreten.
- Flo
- Autor
- Offline
- Benutzer
Weniger
Mehr
- Beiträge: 23
7 Jahre 10 Monate her #3016
von Flo
Flo antwortete auf Wert (WRITE) in der Verarbeiten einbeziehen
Hallo Herr Stark,
das beschriebene Problem konnte ich soweit Lösen. Hier handelte es sich um ein User oder Verständnissproblem.
Das Problem bestand darin, das eine MySQL-Tabelle mit Datensätzen gefüllt werden sollte, in einer anderen Tabelle der gleichen Datenbank sollte in einem festen Datenfeld die Anzahl der Datensätze hinterlegt werden.
Was für mich nicht ganz trivial war, war das die "statische Tabelle" keinen Adapter haben dürfte bzw. für mich nicht selbstverständlich war, dass für den SQL-Heater "irgend ein" Adapter der entsprechenden Datenbank ausgewählt werden kann um per SQL dann die benötigte (nicht in FlowHeter geladene) Tabelle anzusprechen.
das beschriebene Problem konnte ich soweit Lösen. Hier handelte es sich um ein User oder Verständnissproblem.
Das Problem bestand darin, das eine MySQL-Tabelle mit Datensätzen gefüllt werden sollte, in einer anderen Tabelle der gleichen Datenbank sollte in einem festen Datenfeld die Anzahl der Datensätze hinterlegt werden.
Was für mich nicht ganz trivial war, war das die "statische Tabelle" keinen Adapter haben dürfte bzw. für mich nicht selbstverständlich war, dass für den SQL-Heater "irgend ein" Adapter der entsprechenden Datenbank ausgewählt werden kann um per SQL dann die benötigte (nicht in FlowHeter geladene) Tabelle anzusprechen.
Bitte Anmelden oder Registrieren um der Konversation beizutreten.
Ladezeit der Seite: 0.302 Sekunden