'.js'ファイルからフラットJsonデータを読み込み、メタデータの入力フィールド名に基づいてJSONフィールド(キー)を変更する変換を作成しました。ユーザーが指定したメタデータのターゲットフィールド名。PDIFメタデータインジェクションを使用して期待されるJSON出力へのユーザー定義のJSON入力
また、私はステップにメタデータ入力を挿入するために、ETLメタデータインジェクションのステップを使用しています:JSON入力、値の選択/名前変更、Json出力。
変革1:JSONファイルが含まれており、JSON変換エグゼキュータを呼び出すディレクトリを取得するには
私はJSON入力用メタデータインジェクションのために作成した変換を見つけてください。
変革2:メタデータの入力、メタデータのターゲットフィールド、JSONファイル名を取得し、ETLメタデータインジェクションにステップ
を送っ変革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)
フィールドをJSON出力に渡しています(メタデータ注入ステップを介して)。だから私はJSONの出力ステップで空のフィールドを保持しています。 実際には、XMLファイル入力、Excelファイル入力、CVSファイル入力についても同じ手順が使用されていました。ただし、JSONファイルでは機能しません。 また、メタデータインジェクションの代わりにJavascriptを使用することを提案しました。 JSON文字列の 'キー'名(注:値ではない)を変更できますか?もしそうなら、サンプルJavascriptコードを提供すれば素晴らしいでしょう。 –
> "メタデータのターゲットフィールド名はユーザーによって指定されています"とはどのようになっていますか:ファイルに辞書がありますか?2列のcsvファイルですか?" はい、XLSXファイルの辞書をメタデータ入力として渡しました。 –