2016-11-04 5 views
0

Я пытаюсь преобразовать csv в json.Как использовать язык выражения для содержимого json?

Мои CSV данные, как показано ниже ..,

Top  
Jun  Sdas 123 
Jul  gh 456 
Aug-16  Rav 789 
Jan-16  Trai 767 

Теперь я использовал следующую структуру процессора ..,

GetFile-->InferredAvroSchema-->ConvertCSVToAvro-->ConvertAvroToJson-->PutFile. 

Теперь результату ниже JSON.,

[ 
{"field_0": "Top", "field_1": "", "field_2": null}, 
{"field_0": "Jun", "field_1": "Sdas", "field_2": 123}, 
{"field_0": "Jul", "field_1": "gh", "field_2": 456}, 
{"field_0": "Aug-16", "field_1": "Rav", "field_2": 789}, 
{"field_0": "Jan-16", "field_1": "Trai", "field_2": 767} 
] 

Теперь мне нужно добавить язык выражения для «field_0», чтобы добавить «-16», если он не существует в значении.

Например: «field_0» во 2-й строке с «Jun». Теперь мне нужно проверить «-16» присутствует в поле или нет. А также добавить, если не существует.

Как добавить методы выражения в nifi-процессорах в json-контент?

Возможно в любое время?

Любая помощь оценивается и принимается?

ответ

1

Существует несколько вариантов, которые вы можете использовать, которые обеспечат требуемую функциональность.

Используя только предоставленные процессоры, вы могли бы использовать EvaluateJsonPath или RouteOnContent, чтобы обнаружить, если нужный ключ и значение присутствует, а затем использовать ReplaceText или, возможно, JoltTransformJSON на update the content to include your default value. Похоже, что ваши потоковые файлы очень маленькие, поэтому это не должно быть проблемой, но имейте в виду, что JoltTransformJSONне работает потоковым способом, поэтому с большими файлами потоков это негативно скажется на потреблении памяти.

Если вам удобно с Groovy/Ruby/Jython/Javascript/Lua, вы также можете сделать это за одну операцию с помощью ExecuteScript. Благодаря встроенной обработке Jovon Groovy (быстро обрабатывайте блоки JSON в качестве объектов карты) вы можете сделать обнаружение и распределение по умолчанию в одной строке и легко записать содержимое потока. ExecuteScript - такой полезный и универсальный инструмент, который походит на обман, чтобы рекомендовать его для каждой проблемы, но в этом случае это действительно может быть самым простым решением.

+1

Спасибо Энди, он сработал –