We've already talked about this with Martin and other contributors,
but leaving my 2c here for the wider discussion.

I'm leaning towards the second option, having a separate EL function,
because parsing the RFC-compliant dates does not directly map to
strptime-like format strings used in toDate. In python, they also have
separate functions for parsing like strptime [1] (like the EL toDate)
and parsing RFC 3339 or ISO 8601 dates [2]. Most other MiNiFi C++ devs
are leaning towards the first option, extending toDate with an
overload that doesn't take a format string.

Ultimately I think we should follow whatever interface the NiFi devs
prefer, so if the NiFi Expression Language is ever extended with a
similar RFC/ISO date parser facility in the future, the MiNiFi C++
Expression Language would match that. This way users have an easier
time converting their flows between the two implementations.

Thanks,
Marton


[1] https://docs.python.org/3/library/datetime.html#datetime.datetime.strptime
[2] 
https://docs.python.org/3/library/datetime.html#datetime.datetime.fromisoformat
and https://stackoverflow.com/a/15228038

On Thu, 2 Mar 2023 at 13:09, Martin Zink <martinz...@apache.org> wrote:
>
> When dealing with timestamps coming from third parties, sometimes we cannot
> rely on exact timestamp formats, so it is difficult to parse them using
> toDate
> <https://nifi.apache.org/docs/nifi-docs/html/expression-language-guide.html#todate>.
> (e.g. Syslog messages allow a subset of RFC3339 for timestamps).
> To circumvent this I started working on an expression language function
> that could parse all RFC3339 compliant timestamps with expression
> language in MiNiFi C++, but I feel this functionality would also be a great
> addition to NiFi.
>
> It would be great if the expression language would remain consistent
> between MiNiFi C++ and NiFi, and I'm not quite sure where this
> functionality should be accessible from.
>
>    - We could either change the current toDate
>    
> <https://nifi.apache.org/docs/nifi-docs/html/expression-language-guide.html#todate>
> to
>    accept zero arguments and calling it without argument would try to parse
>    the string as RFC3339 compliant.
>    - or we could introduce a new expression language function e.g.
>    parseRfc3339
>
>
> What's the community's stance on this?
>
> Thanks,
> Martin

Reply via email to