我创建了一个转换,它将从'.js'文件中读取Flat Json数据,并根据用户指定的元数据输入字段名称和元数据目标字段名称修改JSON字段(键)。
此外,我使用 ETL元数据注入步骤将元数据输入注入到步骤:JSON输入,选择/重命名值和Json输出。
请查找我为 JSON输入的元数据注入创建的转换:
转换1:获取包含JSON文件的目录并调用JSON Transformation Executor。
转换2:获取元数据输入,元数据目标字段,JSON文件名并将其发送到 ETL元数据注入步骤
转换3:从元数据注入步骤处理JSON输入并将输入JSON转换为预期的JSON数据
Input JSON data to Expected JSON output
当我运行上述转换时,我收到以下错误:
2017/09/13 15:23:49 - JSON到预期的JSON Output.0 - ERROR(版本7.1.0.0-12,版本1来自2017-05-16 17.18.02 by buildguy):意外错误 2017/09/13 15:23:49 - JSON到预期的JSON Output.0 - ERROR(版本7.1.0.0-12,版本1来自2017-05-16 17.18.02 by buildguy):org.pentaho.di.core .exception.KettleException: 2017/09/13 15:23:49 - JSON到预期的JSON Output.0 - 在输入中找不到指定的字段“{0}”。 2017/09/13 15:23:49 - JSON与预期的JSON输出0 - 2017/09/13 15:23:49 - JSON与预期的JSON Output.0 - 在org.pentaho.di.trans.steps.jsonoutput.JsonOutput.processRow(JsonOutput.java:204) 2017/09/13 15:23:49 - JSON与预期的JSON Output.0 - 在org.pentaho.di.trans.step.RunThread.run(RunThread.java:62) 2017/09/13 15:23:49 - JSON到期望的JSON Output.0 - 在java.lang.Thread.run(Thread.java:745)
答案 0 :(得分:0)
有罪的步骤是JSON to Expected JSON Output
,错误是The specified field '{0}' could not be found in the input
。
它接缝此步骤(这是一个JSON输出)找不到输入流中的第一个字段。这意味着您在JSON输出的字段选项卡上指定的第一个字段不在上一步的选定字段的列表中。提示:右键单击一个步骤以获取输入和输出字段列表。
当它工作时,您可以考虑首先更改JSON输入中的Excel输入来注入元数据。
正如我在上一篇文章中提到的:我不确定元数据注入是重命名JSON字段的正确方法。从一个String中的Text文件中获取JSON并将其提供给Javascript步骤,然后使用javascript丰富的高级函数集来更改javascript对象中的名称。并将修改后的一个String放在输出文件中。
您说"元数据目标字段名称由用户指定",如何完成:您是否在文件上有字典?一个两列的csv文件?