2016-10-20 3 views
1

最近のTalendの採用により、Javaを使い慣れていません。私は以下の条件文で助けが必要です:それは私に読み取りエラーが表示されます:Talend条件式で、次元テーブルから値を返そうとしている場合は

すべてのデータ型は文字列です。

row1.Vendor_Name.equals(row3.CP_VENDOR_NAME)?row3.VENDOR:row1.Vendor_Name 

構文的に私の目標は次のとおりです。他のrow1.Vendor_Namerow3.CP_VENDOR_NAMEと同じ文字を持っているならば、return row3.VENDORreturn row1.VENDOR_NAME

私はフィールド(空白の読み)NULLを許可する必要がありますか?どんな助けや説明も大変ありがとうございます。

+0

エラーが発生したクラスを表示します。 –

+0

https://stackoverflow.com/help/mcveを投稿してください。あなたが投稿したこれらの小さなコードフラグメントでは、コンパイラより多くのことを伝えることは不可能です。 – Robert

+0

私はあなたがこれを行うマップ内にいると信じています。エラーメッセージを表示すると、入力フローの名前が「row3」になっていないようです。あなたのtMap設定のスクリーンショットを追加できますか? – Corentin

答えて

0

これはあなたの仕事のレイアウトによって異なります。より具体的なヘルプが必要な場合は、スキーマや仕事のスクリーンショットを提供する必要があります。

特に、これはrow3が初期化されていないことを意味します。あなたの仕事を知らなくても、この意味するかもしれません:

  • ROW3はROW3があなたのコンポーネントに接続されていない
  • ROW3は、後で使用されますが、まだ使用されていない、この仕事には存在しません。

それ以外の場合は、お客様の要件を満たしていると思われます。

また、NULLをチェックしていないことを忘れないでください。文が働いているとき、あなたはそれを変更する必要があるかもしれません:

(row1.Vendor_Name != NULL && row1.Vendor_Name.equals(row3.CP_VENDOR_NAME)) ? 
row3.VENDOR : row1.Vendor_Name 
0

私はちょうど間違った場所に正しい表現を持っていたことが判明します。私はそれをinputtable.columnからoutputtable.columnに移動しなければなりませんでした。

さらにフィルタリングアクションを必要とした後、入力テーブルの上部にある白い矢印をクリックすることで、下部の入力テーブルに式を追加して「グローバル」フィルタとして機能させることができます別の式で使用するoutputtable.column式の位置を上にします。

これは他の人に役立つことを願っています。すべての迅速な返信をありがとう。

関連する問題