Hier ist der Entwurf für die Lösung, die ich vorschlagen:
- tSetGlobalVar hier ist die Variable "Finish" auf false zu initialisieren.
- tLoop startet eine While-Schleife mit
(Boolean)globalMap.get("finish") == false
als Endbedingung.
- tFileCopy wird verwendet, um die Anfangsdatei (A zum Beispiel) in eine neue Datei (B) zu kopieren.
- tFileInputDelimited liest Datei B.
- tUniqRow Duplikate eliminiert. Uniques Datensätze gehen zu tLogRow, die Sie durch tSalesForceOutput ersetzen müssen. Dupliziert Datensätze, wenn sie zu "tFileOutputDelimited" mit dem Namen "A" (derselbe Name wie die Originaldatei) mit der Option "Einen Fehler auslösen, wenn die Datei bereits existiert" deaktiviert ist.
- OnComponent OK nach tUniqRow aktiviert die tJava, die den neuen Wert für die globale Finish mit dem folgenden Code ein:
if (((Integer)globalMap.get("tUniqRow_1_NB_DUPLICATES")) == 0) globalMap.put("finish", true);
Explaination mit den folgenden Beispieldaten:
Linie 1
Linie 2
Leitung 3
Leitung 2
Leitung 4
Leitung 2 Linie 5
Linie 3
Auf der 1. Iteration 5 uniques Aufzeichnungen geschoben werden in tLogRow, 3 Duplikate werden in der Datei A geschoben und „Finish“ wird nicht geändert, da es Duplikate ist.
In der zweiten Iteration werden Operationen für 2 uniques Datensätze und 1 Duplikat wiederholt.
Bei der dritten Iteration werden die Operationen für 1 unique wiederholt und da es nicht mehr doppelt vorhanden ist, wird "finish" auf "true" gesetzt und die Schleife wird automatisch beendet.
Hier ist das Endergebnis:
Sie können auch eine andere globale Variable, um den Salesforce-Commit-Ebene (mit der Syntax (Integer)globalMap.get("commitLevel")
) entscheiden zu verwenden. Diese Variable wird standardmäßig auf 200 gesetzt und bei Dubletten auf 1 im tJava. Setzen Sie "finish" gleichzeitig auf "true" (ohne die Anzahl der Duplikate zu testen), und Sie haben einen Commit-Level von 200 für die 1. Iteration und von 1 für die 2. Iteration (und nicht mehr als 2 Iterationen).
Je nach der Anzahl der möglichen Duplikate entscheiden Sie sich für die bessere Wahl. Sie können jedoch feststellen, dass Sie keine Änderungen am Auftragsdesign vornehmen können.
Ich denke, es sollte Ihr Problem lösen. Gib mir Bescheid.
Grüße,
TRF
Nach der Überprüfung meiner zweiten Option wird es etwas komplizierter, dass das, was ich als tUniqRow geschrieben habe, während der 2bd-Iteration umgangen werden muss. Wenn Sie diese Lösung übernehmen möchten, ersetzen Sie tJava durch einen tJavaRow und fügen Sie einen zweiten tSalesForceOutput hinzu, nachdem der Commit-Level auf 1 gesetzt wurde. Schließlich ist es ein anderer Prozess. Sie müssen nur wählen, welche für Ihren Anwendungsfall besser ist. – TRF
Ich bin mir nicht sicher, warum sich der Inhalt der Datei bei jeder Iteration ändert und daher ändert sich die Anzahl der Duplikate – Edmondo1984
Weil wir bei jeder Iteration den ersten Datensatz für eine gegebene ID bekommen und die Duplikate in die Datei schieben, die weniger Datensätze zählt zu jeder Zeit. – TRF