- Subscribe to RSS Feed
- Mark Question as New
- Mark Question as Read
- Float this Question for Current User
- Bookmark
- Subscribe
- Mute
- Printer Friendly Page
Resolving date difference on Apache NIFI
- Labels:
-
Apache NiFi
Created ‎07-24-2023 11:46 AM
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Good afternoon all, and thank you in advance.
I have a Apache NIFI solution that is pulling from API a pair of dates, i've grabbed out the relevant bit from the json:
"arrival" : "2023-07-24T14:33:00.263Z", "departure" : "2023-07-24T14:21:15.263Z"
And i'm successfully getting those values down to attributes via extract attributes.
However when i perform a toNumber() on them to convert to miliseconds since EPOCH to determine the time between the dates, i return an empty condition upon review of my flow in the queue.
I've gone so far as to arbitarily grab "NOW()" and attempt to toNumber() it but with the same result as trying to modify the above attributes. incidentally NOW() returns a format like: Mon Jul 24 15:39:21 UTC 2023 - its different that my UTC formatted items, but it also doesn't want to toNumber() - returning again an empty value
Shows me attempting to convert the attributes:
and this shows the flow in the queue after hitting that updateattrs. The datetimestamps are all there, but the toNumber() fails for both format styles... timenow was set earlier with a simple ${now()}, and none of them are formatted. when attempting to format them, actually, i get other errors.
I'm struggling to work with dates in nifi and hoping someone has some guidance for me.
NOTE: yes, my nifi is reskinned - its easier on the eyes.
Created ‎07-24-2023 02:29 PM
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi @maglinvinn ,
To get the expected result, you need to convert the string type datetime to datetime type before calling the toNumber() function. The conversion can be done using the toDate() function (see: https://nifi.apache.org/docs/nifi-docs/html/expression-language-guide.html#todate ), For example the arrivaltimeinmillis will have the following value:
${timearrival:toDate("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"):toNumber()}
If you find this is helpful, please accept solution.
Thanks
Created ‎07-24-2023 02:29 PM
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi @maglinvinn ,
To get the expected result, you need to convert the string type datetime to datetime type before calling the toNumber() function. The conversion can be done using the toDate() function (see: https://nifi.apache.org/docs/nifi-docs/html/expression-language-guide.html#todate ), For example the arrivaltimeinmillis will have the following value:
${timearrival:toDate("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"):toNumber()}
If you find this is helpful, please accept solution.
Thanks
Created ‎07-24-2023 09:11 PM
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
thank you so much! i'm moving forward again!
