2017-09-13 7 views
0

'.js'ファイルからフラットJsonデータを読み込み、メタデータの入力フィールド名に基づいてJSONフィールド(キー)を変更する変換を作成しました。ユーザーが指定したメタデータのターゲットフィールド名。PDIFメタデータインジェクションを使用して期待されるJSON出力へのユーザー定義のJSON入力

また、私はステップにメタデータ入力を挿入するために、ETLメタデータインジェクションのステップを使用しています:JSON入力、値の選択/名前変更、Json出力。

変革1:JSONファイルが含まれており、JSON変換エグゼキュータを呼び出すディレクトリを取得するには

私はJSON入力用メタデータインジェクションのために作成した変換を見つけてください。

変革2:メタデータの入力、メタデータのターゲットフィールド、JSONファイル名を取得し、ETLメタデータインジェクションにステップ

Metadata Injection

を送っ変革3:メタデータ注入工程からJSON入力を処理し、変換します予想されるJSONデータに入力JSON

Input JSON data to Expected JSON output

私は上記のTRAを実行します有罪ステップがJSON to Expected JSON Outputもので、故障ではそのThe specified field '{0}' could not be found in the inputある

2017/09/13 15:23:49 - JSON to Expected JSON Output.0 - ERROR (version 7.1.0.0-12, build 1 from 2017-05-16 17.18.02 by buildguy) : Unexpected error 2017/09/13 15:23:49 - JSON to Expected JSON Output.0 - ERROR (version 7.1.0.0-12, build 1 from 2017-05-16 17.18.02 by buildguy) : org.pentaho.di.core.exception.KettleException: 2017/09/13 15:23:49 - JSON to Expected JSON Output.0 - The specified field '{0}' could not be found in the input. 2017/09/13 15:23:49 - JSON to Expected JSON Output.0 - 2017/09/13 15:23:49 - JSON to Expected JSON Output.0 - at org.pentaho.di.trans.steps.jsonoutput.JsonOutput.processRow(JsonOutput.java:204) 2017/09/13 15:23:49 - JSON to Expected JSON Output.0 - at org.pentaho.di.trans.step.RunThread.run(RunThread.java:62) 2017/09/13 15:23:49 - JSON to Expected JSON Output.0 - at java.lang.Thread.run(Thread.java:745)

答えて

0

:nsformationsは、私は以下のエラーを得ました。

このステップ(JSON出力)は、入力ストリームの最初のフィールドを見つけられません。これは、JSON出力のフィールドタブで指定した最初のフィールドが、前のステップの選択されたフィールドのリストにないことを意味します。ヒント:ステップを右クリックすると、入力フィールドと出力フィールドのリストが表示されます。

これがうまくいくと、JSON入力のExcel入力を最初に変更することで、メタデータの挿入について考えることができます。

以前の投稿で述べたように、メタデータ注入がJSONのフィールドの名前を変更する正しい方法であるとは確信していません。 1つの文字列のテキストファイルからJSONを取得し、Javascriptのステップに渡してから、javascriptの豊富な高水準関数を使用してjavascriptオブジェクトの名前を変更します。そして、変更された1つのStringを出力ファイルに入れます。

あなたは「メタデータのターゲットフィールド名はユーザーによって指定されています」と言いますが、どのように行われますか:ファイルに辞書がありますか? 2列のcsvファイルですか?

+0

フィールドをJSON出力に渡しています(メタデータ注入ステップを介して)。だから私はJSONの出力ステップで空のフィールドを保持しています。 実際には、XMLファイル入力、Excelファイル入力、CVSファイル入力についても同じ手順が使用されていました。ただし、JSONファイルでは機能しません。 また、メタデータインジェクションの代わりにJavascriptを使用することを提案しました。 JSON文字列の 'キー'名(注:値ではない)を変更できますか?もしそうなら、サンプルJavascriptコードを提供すれば素晴らしいでしょう。 –

+0

> "メタデータのターゲットフィールド名はユーザーによって指定されています"とはどのようになっていますか:ファイルに辞書がありますか?2列のcsvファイルですか?" はい、XLSXファイルの辞書をメタデータ入力として渡しました。 –

関連する問題