Skip to main content
Weil einfach - produktiver ist

Der Daten Spezialist

Konvertieren Sie die Daten mühelos zwischen verschiedenen Formaten ohne Programmierkenntnisse dank Visual Designer. Effizient und super einfach.
Flowheater Chart

Lookup Heater bedingt ausführen

Mehr
1 Jahr 1 Woche her #4835 von Philip Herbert
Lookup Heater bedingt ausführen wurde erstellt von Philip Herbert
Hallo,
gibt es eine Möglichkeit den Lookup Heater bedingt auszuführen ?

Ich habe eine InMemory Tabelle auf der Readseite mit sehr vielen zusammengehörigen Zeilen.

Hier möchte ich für die erste Zeile eine Datenbankabfrage durchführen, um zu entscheiden, ob diese und folgende Zeilen exportiert werden müssen.
Das Kriterium für die Prüfung (ein MD5 Hash) ist auch nur für die erste Zeile gültig / prüfbar.

Danke, Philip Herbert

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Mehr
1 Jahr 1 Woche her #4838 von FlowHeater-Team
FlowHeater-Team antwortete auf Lookup Heater bedingt ausführen
Hallo Herr Herbert,

ja und nein. Im Prinzip werden immer „alle“ Heater ausgeführt, auch wenn diese z.B. hinter einem ELSE Zweige stehen und die Bedingung zutrifft.

Sie müssten Sich ein kleines Konstrukt bauen, das nur Prüfungen für den ersten Satz vornimmt und diesen Wert sich solange merkt bis eine andere zusammenhängende Gruppe verarbeitet wird. Im Anhang finden Sie ein kleines Beispiel wie das umgesetzt werden kann.

Hier wird im ersten Verarbeitungsschritt die InMemory Adapter Tabelle eingelesen und bereits beim Einlesen geprüft ob diese Datensätze gefilterte werden können.

Das Ganze wird so erreicht, siehe Screenshot.
  1. Über den AutoID Heater wird pro Gruppe hochgezählt. Wenn hier eine 1 kommt dann ist das der erste Datensatz einer Gruppe!
  2. Über den IF-THEN-ELSE Heater wird geprüft ob der ersten Datensatz der Gruppe verarbeitet wird. Ist das der Fall wird das Ergebnis des zweiten IF-THEN-ELSE Heater 3) verwendet falls nicht wird der Parameter $LAST$ zurückgegeben.
  3. Über diesen IF-THEN-ELSE Heater findet die eigentliche Prüfung statt. Hier müssten Sie Ihren Lookup Heater einbauen.
  4. Das ist jetzt das Konstrukt, das sich merkt was im ersten Datensatz der Gruppe geprüft wurde. Das Ganze geht über einen FlowHeater Parameter „$LAST$“ und jeweils einen SET/GET Parameter Heater.
Im zweiten Verarbeitungsschritt wird die InMemory Tabelle mit der WHERE Klausel „Filtern = 0“ ausgelesen.

 

 
Dieser Anhang ist für Gäste verborgen.
Bitte anmelden oder registrieren um den Anhang zu sehen.

 

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.

Mehr
1 Jahr 1 Woche her #4839 von Philip Herbert
Philip Herbert antwortete auf Lookup Heater bedingt ausführen
Hallo Herr Stark,

..bedeutet dann einen weiteren Ausführungsschritt in einer jetzt schon recht komplexen Verarbeitung.
Gibt es eigentlich eine Möglichkeit im gleichen Verarbeitungsschritt einen Wert per SET zu speichern und auch diesen Datensatz zu filtern ?
Ich habe den Eindruck, dass Filter auch ein SET verhindert.

ggf. wäre das sonst eine schöne Anforderung an den Filter-Heater: ein 2. Parameter, der in einer Variable abgelegt wird.

Danke, Philip Herbert
 

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Mehr
1 Jahr 6 Tage her #4840 von FlowHeater-Team
FlowHeater-Team antwortete auf Lookup Heater bedingt ausführen
Hallo Herr Herbert,

Sie können das auch ohne einen vorgelagerten Verarbeitungsschritt filtern. So wird halt beim Einlesen die große Datenmenge verarbeitet und beim Ausgeben nochmal. Hier fehlen mir ein paar Infos um ggf. bessere / andere Beispiele zu erzeugen.

Bzgl. des Set Parameter Heater) Die werden immer vor dem Filter Heater ausgeführt um ggf. die FlowHeater Parameter Werte in einer IF-THEN-ELSE Bedingung verwenden zu können, etc.
Sie können das selbst testen. Im Anhang habe ich Ihnen mal ein kleines Beispiel erstellt. Wenn Sie hier mal 2 Haltepunkte (siehe Screenshot) auf den Filter Heater sowie Set Parameter Heater setzen und die Definition im Test Modus ausführen sehen Sie dass zuerst der Set Parameter Heater ausgeführt wird.

 

 
Dieser Anhang ist für Gäste verborgen.
Bitte anmelden oder registrieren um den Anhang zu sehen.

 

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.

Mehr
1 Jahr 6 Tage her #4841 von Philip Herbert
Philip Herbert antwortete auf Lookup Heater bedingt ausführen
Ich hatte das Problem, dass der IF Heater mit dem Vergleich ausgeführt wurde, ohne das zuvor der Wert zum Vergleichen abgespeichert wurde.
Nachdem ich den Schritt dann nochmal neu definiert habe, konnte ich dann auch mit Haltepunkten die korrekte Reihenfolge nachvollziehen.

Kann man die Reihenfolder der Abarbeitung nicht irgendwie darstellen ?

So läuft es jetzt jedenfalls:

 

Danke, Philip Herbert

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Mehr
1 Jahr 5 Tage her #4843 von Philip Herbert
Philip Herbert antwortete auf Lookup Heater bedingt ausführen
Also irgendetwas verstehe ich hier einfach nicht.

der Lookup-Heater wird doch für jeden Datensatz ausgeführt.
Auch habe ich offenbar ein grundsätzliches Verständnisproblem zur Reihenfolge.

Ich komme immer wieder in einen Zustand, in dem ein direkt zugewiesener SET-Parameter erst zu spät ausgeführt wird (lt. Breakpoint), bzw. wo die Reihenfolge der Abarbeitung einfach nicht reproduzierbar bzw. nachvollziehbar ist,

Auch schaffe ich es nicht vom LookupHeater ein Ergebnis zu bekommen, ohne einen Eingangsparameter zu setzen.

Im LookupHeater ein WHERE Spalte = $RechnNr$ liefert immer NULL. Verwende ich $1 und (versuche) den Eingangswert vorher zu setzen, funktioniert der Lookup Heater, aber das Reihenfolge Problem tritt u.U. wieder auf.

Wo könnte hier das Verständnisproblem liegen ?

Danke, Philip Herbert


 

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Mehr
1 Jahr 5 Tage her #4847 von FlowHeater-Team
FlowHeater-Team antwortete auf Lookup Heater bedingt ausführen
Hallo Herr Herbert,

das Problem ist die Aktivierungsreihenfolge. Bitte Screenshot beachten!

Das Problem bei Ihrer Definition ist wahrscheinlich, dass der Set Parameter Heater (1) als erstes ausgeführt wird und dann die ganze Kette durchlaufen wird. Der zweite Set Parameter Heater (2) wird erst danach aufgerufen.

Sie können das ändern indem Sie den ersten Set Parameter Heater (1) vom Designer löschen und erneut einfügen. So wird dieser ans Ende der Aktivierungsreihenfolge gesetzt und am Schluss der Set Parameter Heater ausgeführt.

Aktuell gibt es leider keine Möglichkeit das anders zu lösen. Es wird aber an einer Lösung des Problems gearbeitet.

In folgenden Forumsbeitrag finden Sie eine ziemlich genaue Beschreibung zur Aktivierungsreihenfolge der Heater . Verarbeitungsreihenfolge der Heater beeinflussen


 
 

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.

Mehr
1 Jahr 23 Stunden her #4855 von Philip Herbert
Philip Herbert antwortete auf Lookup Heater bedingt ausführen
Es wäre schon wirklich gut, wenn man einen Lookup oder SQL Heater bedingt ausführen könnte (notfalls irgendwie per .NET Script).
Gerade bei der Abfrage externen Datenquellen kostet das sonst viel Performance.

Die beschriebene Lösung funktioniert zwar, generiert aber nun für jede gelesene Zeile weitere DB Abfragen.

Danke, Philip Herbert
 

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Mehr
11 Monate 4 Wochen her #4858 von FlowHeater-Team
FlowHeater-Team antwortete auf Lookup Heater bedingt ausführen
Hallo Herr Herbert,

hier mal 2 C# Skripte wie das mit dem .NET Script Heater durchgeführt werden kann. Der erste Parameter wird geprüft und nur wenn dieser mit „WAHR“ ausgewertet werden kann wird der Lookup bzw. das SQL abgesetzt.

SQL per Skript Ausführen
Code:
public object DoWork() {     bool execute = (bool)InValues[0].GetBool();     int key1 = (int)InValues[1].GetInt();     string key2 = (string)InValues[2].GetString();     // nur ausführen wenn der erste Eingangsparameter "WAHR" ist     if (execute)         {         // SQL zusammenbauen         string sql = String.Format("select value from IhreTabelle where Key1 = {0} and Key2 = '{1}' order by [ID] desc", key1.ToString(), key2);         // 0 = erster Adapter im aktuellen Step auf der Write Seite!         return AdaptersWrite[0].Execute(sql, true);             }          return "keine Ausführung!"; }


Daten Lookup per Skript ausführen
Code:
public object DoWork() {     bool execute = (bool)InValues[0].GetBool();     int key = (int)InValues[1].GetInt();     // nur ausführen wenn der erste Eingangsparameter "WAHR" ist     if (execute)         {         string where = String.Format("key = {0}", key.ToString());         string orderby = "ID desc";         // 0 = erster Adapter im aktuellen Step auf der Write Seite!         return AdaptersWrite[0].Lookup("Tabelle", "Feldname", where, orderby);     }     return "keine Ausführung!"; }
 

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.

Ladezeit der Seite: 0.331 Sekunden
FlowHeater Logo

FlowHeater - Der Daten Spezialist

Effiziente Datenintegration und Transformation mit FlowHeater - Ihre Lösung für nahtlosen Datentransfer.

Rechtliches

Support & Kontakt

Kontaktinformation

Telefon:
0951 / 99339792

E-Mail:
Diese E-Mail-Adresse ist vor Spambots geschützt! Zur Anzeige muss JavaScript eingeschaltet sein.


Copyright © 2009-2024 by FlowHeater GmbH. Alle Rechte vorbehalten.