2016-05-24 15 views
2

Apache Nifiでのフローの合計実行時間を調べる方法を知りたいと思います。 PutEmailで共有できるように、これを行い属性リストに追加する方法はありますか?Apache Nifi合計実行時間

答えて

4

フローファイルを受け取ったときにカスタムタイムスタンププロパティを追加し、処理の大部分を行い、電子メールに含める経過時間属性を計算する必要があると思います。 2つのUpdateAttributeプロセッサでこれを行うことができます。 UpdateAttribute、は= ${now():toNumber():minus(${received}):format("HH:mm:ss")}

経過

  1. UpdateAttribute、

  2. (処理を行う)= ${now():toNumber()}

  3. を受信これは、「のような経過時間をフォーマットします00:04:1 6 "(4分、16秒)。あなたはPutEmailメッセージの内容に${elapsed}としてこれを使うことができます。

    しかしこれはちょっと醜いもので、処理時間の近似値しか示していません。 NiFi起源システムは、ファイルがNiFiに入ってからの経過時間を表す「系列の継続時間」を維持します。これははるかに権威のある数字です。しかし、私はあなたが式言語から系統期間を問い合わせることはできないと信じています。源泉データを個別に照会し分析する必要があります。

    enter image description here

+0

ありがとうございました。私はそのアプローチを試み、それは働いた。私はそれで実行時間をキャプチャすることができました。 –

4

ジェームズは、上記の優れた説明を提供しました。

${now():toNumber():minus(${lineageStartDate}):format("HH:mm:‌​ss")} 

これはリネージュを決定するために使用されるのと同じ値である:1つの注意は、しかし、むしろデータを受信したときのタイムスタンプの属性を追加するよりも、あなたは、単にlineageStartDate属性を参照することができるということです出身の期間。

+0

上記の@Jamesで提案されているように:(現在の時刻 - 開始時刻)の代わりに、LineageStartDate属性を直接使用して、処理時間を与えることができます。 –

+0

これは '$ {now():toNumber():minus($ {lineageStartDate}):format(" HH:mm:ss ")}'でなければなりません。恐ろしい、私はそれがアクセス可能だったのか分からなかった、+1! – James

+0

うわー、はい、それは '$ {now():toNumber():minus($ {lineageStartDate}):format(" HH:mm:ss ")}です。私のタイプミスに良いキャッチ:) –