Преобразование / округление десятичных чисел в Nifi

#json #apache-nifi

#json #apache-nifi

Вопрос:

Я пытаюсь ОПУБЛИКОВАТЬ файл JSON (используя Apache NiFi) в приложении, которое принимает только значения с максимальным количеством знаков после запятой 10.

Формат JSON:

 {
  "timestamp" : "2016-04-17",
  "zoom" : 13,
  "dc" : 100,
  "CloudCoverPercentage" : 74.707,
  "mean" : 0.18735192480231655,
  "num" : 127,
  "FirstQuartile" : 0.142807444773004,
  "median" : 0.17882054533925174,
  "max" : 0.32004310344827586,
  "min" : 0.059890294413970674,
  "ThirdQuartile" : 0.22603810187853218,
  "StandardDeviation" : 0.06846369990524923
}
 

Вопрос: Как мне преобразовать каждое десятичное значение в Apache Nifi, чтобы оно содержало только 10 знаков после запятой?
Я где-то читал, что для этого можно использовать JoltTransformJSON. Как мне написать спецификацию Jolt для такого рода операций?

Комментарии:

1. как вы создаете этот json? в первую очередь

2. Я получаю это из конечной точки API, используя InvokeHTTP.

Ответ №1:

Вы можете использовать UpdateRecord с jsonReader (схема вывода), JsonSetWriter (схема наследования)

Ввод:

 {
  "timestamp" : "2016-04-17",
  "zoom" : 13,
  "dc" : 100,
  "CloudCoverPercentage" : 74.707,
  "mean" : 0.18735192480231655,
  "num" : 127,
  "FirstQuartile" : 0.142807444773004,
  "median" : 0.17882054533925174,
  "max" : 0.32004310344827586,
  "min" : 0.059890294413970674,
  "ThirdQuartile" : 0.22603810187853218,
  "StandardDeviation" : 0.06846369990524923
}
 

Вывод:

 [ {
  "timestamp" : "2016-04-17",
  "zoom" : 13,
  "dc" : 100,
  "CloudCoverPercentage" : 74.707,
  "mean" : 0.18735192480231655,
  "num" : 127,
  "FirstQuartile" : 0.142807444773004,
  "median" : 0.1788205453,
  "max" : 0.32004310344827586,
  "min" : 0.059890294413970674,
  "ThirdQuartile" : 0.22603810187853218,
  "StandardDeviation" : 0.06846369990524923
} ]
 

введите описание изображения здесь

Комментарии:

1. Спасибо! Это намного проще, чем опция executeScript (ECMA).