2017-04-27 4 views
0

ich aus modifizierten Java-Script-Wert vorbei Variable muß und übergibt es an Tisch EingabeabfragePentaho vorbei Variable aus modifizierten Java-Script-Wert Tabelle Eingang

das ist mein enter image description here

Wenn i Vorschau klicken Sie auf den Ausgang

initator_reference | a | '' | 
1     | a | null | 
2     | a | null | 
3     | a | null | 
4     | a | null | 

es sollte nicht null sein, aber an diesem dritten Feld Zeichenfolge „testing“ und mich nicht fragen, warum ich in ausgewählten diese Variable setzen, es ist nur zum Testen, bevor ich es in "where condition = variable"

Antwort

1

Die Tabelleneingabe unterstützt zwei verschiedene Möglichkeiten, um die SQL-Dynamik dynamisch zu gestalten: Variable Ersetzung und Einfügen von Daten aus einem eingehenden Datenstrom.

Variable Substitution

Dies ist, was Sie zur Zeit in der Tabelle Eingang konfiguriert haben: Sie setzen $ {variable} irgendwo und wenn der Schritt initialisiert, wird der Wert als Text in die SQL eingefügt.

Da alle Schritte gleichzeitig in einer Umwandlung initialisiert werden, hat Ihr Javascript-Schritt keine Zeit zum Festlegen des Werts. In PDI können Sie eine Variable innerhalb derselben Umwandlung nicht festlegen und verwenden.

Insert Daten aus Schritt

Die zweite Möglichkeit, durch die Auswahl einer Quellschritt in der „Einfügen von Daten aus Schritt“ Option in der Tabelle Eingang verwendet wird. In diesem Modus nimmt die Tabelleneingabe eine Zeile aus dem ausgewählten Schritt und fügt Felder (in der Reihenfolge) in das SQL bei Fragezeichen (?) Ein, die Sie einfügen. Normalerweise erwartet es eine einzelne Zeile, aber Sie können wählen, für JEDE Zeile auszuführen.

für Ihr Szenario Auf diese Weise sollte funktionieren:

  1. a Legen Sie Zeilen am Anfang Schritt generieren und setzt es 1 Zeile zu erzeugen.
  2. Verbinden Sie es mit dem Javascript-Schritt.
  3. Geben Sie im Javascript-Schritt die Rückgabevariable als Ausgabefeld im unteren Raster an, sie wird dem Stream hinzugefügt.
  4. Wählen Sie in der Tabelleneingabe den Javascript-Schritt bei "Daten aus Schritt einfügen"
  5. In Ihrem SQL, einfügen? an der Position der Variablen. Sie benötigen möglicherweise einfache Anführungszeichen, wenn der Wert eine Zeichenfolge ist: WHERE column = '?'.
  6. Vorschau der Umwandlung, um das Ergebnis zu sehen, die Vorschau der Tabelleneingabe ist wegen der Abhängigkeit deaktiviert.

Hinweise:

  • Schritt 1 und 2 kann nicht erforderlich sein, ich bin nicht sicher, ob der JS Schritt selbst eine Zeile erzeugt. Ich möchte das explizit erwähnen, indem ich den Schritt "Zeilen generieren" oft als "1 Zeile generieren" benenne.
  • Wenn Sie einen vorhandenen Stream oder mehrere einzufügende Felder haben, können Sie die Felder in einem Schritt auswählen, in der Reihenfolge, in der sie in das SQL eingefügt werden müssen.
+0

bereits Deinen Schritt getan, aber sein Fehler auf Tabelleneingabe , sehe meinen Antwortabschnitt für das Bild (zweites Bild) –

+0

@AlexanderChandra: In deinem zweiten Bild sehe ich keine Anführungsstriche um das? in Ihrer Tabelleneingabe. Sie erhalten wahrscheinlich eine Fehlermeldung "unbekannte Spalte ...". Versuchen Sie einfache Anführungszeichen. – Cyrus

0

Nun fand ich die Lösung selbst Der erste Schritt ist Modified Java Script wert-> Setvariablen und dann bekommen variabel> Tabelleneingabe (überprüfen Variable in Skript ersetzen), und Sie müssen nur Platz „?“ auf Ihre Frage (das „?“ string Ihre Variable ist, ich weiß nicht, ob es eine andere Art und Weise variabel zu nennen) enter image description here

und als Erinnerung Javascript pentaho ein bisschen anders mit echten Javascript enter image description here

+0

Vielleicht haben sie etwas in späteren Versionen geändert, bu aus meiner Erfahrung, das sollte nicht funktionieren. Soweit ich weiß, sollte der JS-Schritt überhaupt nicht verarbeitet werden, wenn er keine Eingabe hat. Schritt Get Variable sollte parallel zu den Schritten JS und Set Variables verarbeitet werden. Sind Sie sicher, dass der Wert, der kommt, der in JS step ist? Es ist nicht nur ein Standardwert, der im Schritt Get Variablen oder in den Eigenschaften von KP festgelegt wird. Und der Wert von JS wird beim ersten Lauf von ktr nach dem Neustart von Spoon übernommen? – user4637357

+0

Nun, ich habe gerade das Problem gefunden, für das erste Mal, ich führe Vorschau es zeige heute Datum - 10 (mein Javascript), dann ändere ich mein Javascript zu Today-8 und es immer noch heute-10. Hast du eine Lösung? –

+0

Der von @Cyrus vorgeschlagene Ansatz sollte funktionieren. Im Grunde genommen müssen Sie eine einzige Zeileneingabe in den JS-Schritt einfügen (Sie können den Schritt Leerschritt erkennen verwenden: es erzeugt keine Spalten, Sie müssen sie also nicht entfernen) und platzieren dann Ihre Tabelleneingabe anstelle Ihrer gesetzten Variablen Schritt und ersetzen Sie "Eingabedaten von Schritt", um auf JS-Schritt zu zeigen. Und schließlich entfernen Sie Set/Get variable Schritte. Es sollte funktionieren. – user4637357

Verwandte Themen