2017-01-23 2 views
1

Мой вход содержит DATETIME с часами, как показано ниже.,Сравнить часы в Nifi возможно?

1,23.01.2016 09:02:21,Mega,201 
2,02.01.2016 10:02:23,Hema,202 

Теперь мне нужно получить 2-й столбец ["02.01.2016 10:02:23"], а затем сравнить его с текущим DATETIME с миллисекундах.

После этого, если вторая колонка находится между 72 минутами и затем вставляется в сервер sql.

Как я могу сравнить часы, в которых данные с текущими часами времени?

ответ

3

появляется Ваши данные, чтобы быть в формате CSV, чтобы вы могли попытаться извлечь столбец DATETIME из файла с помощью процессора RouteOnContent и Regex, или вы можете конвертировать контент в AVRO формат, а затем преобразовать Avro в JSON и разделить файлы так, чтобы вы могли выделять DateTime индивидуально в качестве атрибутов.

Использование данных в качестве входных данных Вы:

  • InferAvroSchema (предполагая, что ваш макет выше стандарт)
  • ConvertCSVToAvro (с использованием Прогнозные схемы)
  • ConvertAvroToJSON
  • SplitJSON
  • EvaluateJSONPath (вытащить свойство dateTime и установить в качестве атрибута)
  • RouteOnAttribute (сравните d ateTime атрибут системной даты вы хотите)

дата System - 72 часов можно рассчитать программно с помощью:

${now():toNumber():minus(259200000):format('dd.mm.yyyy hh:mm:ss')} 
+2

Ваш исчерпывающий вариант действительно хорош; для первого, вы имели в виду 'RouteText'? 'RouteOnContent' отправит копию всего файла потока в отношения, в которых встречается регулярное выражение, а' RouteText' оценивает каждую строку по отдельности. – Andy

+0

Да, хороший звонок. RouteText более подходит для многострочного контента. – dgolf05

+0

@ Andy RouteText хорошо работал для моего дела –