2017-11-17 4 views
0

Ich bin neu bei GeoKettle (Spoon) von Pentaho und ich bin gerade Zeilen aus einer Excel-Datei in meine Datenbank. Jetzt möchte ich Duplikate in meiner Datenbanktabelle vermeiden. Deshalb möchte ich nur diejenigen Zeilen in meine Datenbanktabelle einfügen, die noch nicht vorhanden sind (um nur eindeutige Datensätze in meiner Datenbanktabelle zu haben).Pentaho Kesseleinsatz Fehlerbehandlung von Schritt

Und soweit ich weiß, gibt es zwei Möglichkeiten, das zu realisieren. Der erste Weg, den ich versucht habe, war mit dem Schritt Einfügen/Aktualisieren (ich habe die Update-Funktion deaktiviert) und alle Spalten definiert, die gleich sein müssen, um den Datensatz einzufügen oder nicht. Aber es funktioniert nicht. Alle Datensätze werden noch in die Datenbank eingefügt.

Deshalb versuche ich, die (nach Pentaho) viel schnellere Option zu tun, die eine "Table Output" mit einem "Update" -Fehlerbehandlungsschritt ist, wie im Bild gezeigt. enter image description here

Wie in der Abbildung gezeigt, ist der Pfeil, der von "table output" auf "update" zeigt, schwarz. Aber ich brauche eine rote punktierte für die Fehlerbehandlung von Schritt. Aber ich weiß nicht, wie ich das schaffen soll. In Tutorials sehe ich oft, dass dort ein kleines Fenster mit 2 Optionen wie auf dem Bild erscheint: enter image description here

Aber ich bekomme dieses Popup nicht. Wenn ich einen Hop erstellen möchte, muss ich beide Schritte markieren und mit der rechten Maustaste auf einen von ihnen klicken. Also auf welche Weise kann ich einen solchen roten gepunkteten Pfeil erstellen? Am Ende hat es wie folgt aussehen:

enter image description here

Vielen Dank im Voraus !!

Antwort

1

Sie haben ein Problem mit Ihrer Einrichtung. Oder mit Ihrer Version des PDI. Die Funktionalität eines Fehlerschritts wurde in V4 eingeführt, aber für alle Schritte um V6 vollständig implementiert.

Laden Sie einen frischen PDI von SourceForge herunter. V7.1 ist wirklich eine robuste und stabile Edition. Entpacken und testen.

Übrigens, was Sie erreichen wollen, ist als CRUD-Muster bekannt. CRUD für Erstellen, Lesen, Aktualisieren, Löschen. Der Schritt dabei ist die Merge Rows (diff) (in der Joins Familie). Sie sagen den Schritten, welche Spalten überprüft werden sollen, und sie erzeugen eine neue Spalte mit dem Wert identical, changed, new oder deleted. Sie können sie den Fluss in einem Switch/Case umleiten, um die entsprechende Aktion auszuführen. Weitere Informationen here (V4).

enter image description here

+0

habe ich versucht, Ihr Muster wie Sie vorgeschlagen, aber die Funktionalität ist nicht das gleiche wie ich es sein würde, gehofft. Wie in Ihrem Beispiel werden die Datensätze (die durch die Eingabe der CSV-Datei importiert werden) mit der Tabelle zusammengeführt. Wie in meinem Fall: Zuerst ist die Tabelle leer, also sind alle Datensätze neu und werden in die Tabelle importiert. Aber wenn ich die Datensätze in der CSV-Datei neu mische und neu importiere, werden sie nicht identisch und wieder importiert. (weil die Reihenfolge der Datensätze unterschiedlich ist) Was ich brauche, ist, dass jeder Datensatz des CSV mit allen Datenbankeinträgen verglichen wird, um herauszufinden, ob er schon da ist. – user7335295

+0

Das Zusammenführen von Diff erfordert, dass die Eingabe sortiert wird. Mehr Details hier: https://stackoverflow.com/questions/47429769/pentaho-import-uniqe-records-into-database/47437110#47437110 – AlainD

Verwandte Themen