2017-09-13 24 views
0

我已經創建了一個轉換,它將從'.js'文件中讀取Flat Json數據,並根據元數據輸入字段名稱修改JSON字段(鍵)元數據目標字段名稱由用戶指定。用戶定義的JSON輸入到使用PDI的期望的JSON輸出元數據注入

此外,我正在使用ETL元數據注入步驟將元數據輸入注入步驟:JSON輸入,選擇/重命名值和Json輸出。

請找到這都是我爲元數據注入了JSON輸入創建的轉換:

改造1:要獲得其中包含JSON文件並調用JSON轉型執行人的目錄。

轉型2:獲取元數據輸入,元數據的目標字段,JSON文件名,並將它們發送到ETL元數據注入步驟

Metadata Injection

轉型3:處理從元數據注入步驟和轉換JSON輸入輸入到JSON預期JSON數據

Input JSON data to Expected JSON output

當運行上述TRA nsformations,我得到了以下錯誤:

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

有罪的步驟是JSON to Expected JSON Output,故障是The specified field '{0}' could not be found in the input

它接縫這一步(這是一個JSON輸出)沒有找到輸入流中的第一個字段。這意味着您在JSON輸出的字段選項卡上指定的第一個字段不在上一步的選定字段的列表中。提示:右鍵單擊一個步驟以獲取輸入和輸出字段列表。

工作時,您可以考慮注入元數據,首先更改JSON輸入中的Excel輸入。

正如我在上一篇文章中提到的那樣:我不確定元數據注入是在JSON中重命名字段的正確方法。從一個字符串中的文本文件中獲取JSON並將其提供給Javascript步驟,然後使用javascript豐富的高級函數集來更改JavaScript對象中的名稱。並將修改後的一個字符串放在輸出文件中。

你說「元數據目標字段名稱由用戶指定」,它是如何完成的:你有一個文件字典嗎?一個兩列csv文件?

+0

我將字段傳遞給以前轉換的JSON輸出(即通過元數據注入步驟)。所以我在JSON輸出步驟中保留了空字段。 實際上,對於XML文件輸入,Excel文件輸入和CVS文件輸入的工作步驟相同。但是,它不適用於JSON文件。 另外,您建議使用Javascript而不是元數據注入。我們可以修改JSON字符串中的「鍵」名稱(注意:不是值)嗎?如果是這樣,如果您提供示例Javascript代碼來做到這一點,那將是非常好的。 –

+0

>「你說」元數據目標字段名稱由用戶指定「,它是如何完成的:你有一個文件字典嗎?一個兩列csv文件?「 是的,我已將字典作爲元數據輸入傳遞給XLSX文件。 –