2017-01-23 5 views
1

私の入力は以下のような時間でdateTimeに含まれています。、Nifiで時間を比較できますか?

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

は、今私は、["02.01.2016 10:02:23"]第二列を取得し、ミリ秒単位で現在のDateTimeとそれを比較する必要があります。

その後、2番目の列が過去72時間の間にある場合は、SQL Serverに挿入します。

現在の日時を持つデータの時間を比較するにはどうすればよいですか?

答えて

3

あなたのデータはあなたがAVRO形式にコンテンツを変換することができまたは、RouteOnContentプロセッサと正規表現を使用して、ファイルからDateTime列を抽出しようとすると、その後、AVROを変換することができるようにCSV形式であるように思われますJSONにコピーしてファイルを分割することで、dateTimeを属性として個別に抽出することができます。

あなたが希望入力として、あなたのデータを使用して:

  • InferAvroSchema
  • ConvertAvroToJSON
  • SplitJSON
  • EvaluateJSONPath((推論されたスキーマを使用して)
  • ConvertCSVToAvro(あなたのレイアウトは、上記の標準であると仮定した場合) dateTimeプロパティを取り出し、属性として設定する)
  • RouteOnAttribute(d ateTimeしたいシステムの日付に属性)

システム日 - 72時間使用してプログラムで計算することができます。

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

あなたの総合的なオプションは本当に良いです。前者の場合、あなたは 'RouteText'を意味しましたか? 'RouteOnContent'は、フローファイル全体のコピーを正規表現がマッチする関係に送り、' RouteText'は個々の行を個別に評価します。 – Andy

+0

はい、申し訳ありません。 RouteTextは複数行のコンテンツに適しています。 – dgolf05

+0

@Andy RouteTextは私のケースでうまくいきました –