比较Nifi的小时数可能吗?

时间:2017-01-23 10:03:56

标签: datetime apache-nifi

我的输入包含dateTime,小时如下。

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

现在我需要获得第二列["02.01.2016 10:02:23"],然后将其与当前日期时间与毫秒进行比较。

之后,如果第二列在过去72小时之间,则插入到sql server中。

如何比较数据与当前日期时间的小时数?

1 个答案:

答案 0 :(得分:3)

您的数据似乎是CSV格式,因此您可以尝试使用RouteOnContent处理器和Regex, 从文件中提取dateTime列,以便转换您的内容转换为AVRO格式,然后将AVRO转换为JSON并拆分文件,以便您可以单独提取dateTime作为属性。

使用您的数据作为输入:

  • InferAvroSchema(假设您的上面的布局是标准的)
  • ConvertCSVToAvro(使用推断架构)
  • ConvertAvroToJSON
  • SplitJSON
  • EvaluateJSONPath(拉出dateTime属性并设置为属性)
  • RouteOnAttribute(将dateTime属性与您想要的系统日期进行比较)

系统日期 - 可以使用以下方式以编程方式计算72小时:

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