[
https://issues.apache.org/jira/browse/NIFI-7194?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17775068#comment-17775068
]
Chris Sampson edited comment on NIFI-7194 at 10/13/23 9:19 PM:
---------------------------------------------------------------
Partially resolved by NIFI-12124
was (Author: chris s):
Partially resolved by NIFI-12194
> Record Path (and Readers) should be able to select/filter on fields within
> arrays
> ---------------------------------------------------------------------------------
>
> Key: NIFI-7194
> URL: https://issues.apache.org/jira/browse/NIFI-7194
> Project: Apache NiFi
> Issue Type: Improvement
> Affects Versions: 1.11.1
> Reporter: Chris Sampson
> Priority: Minor
>
> Given a sample input like
> {code:json}
> {
> "field": "value",
> "a_date": "2020-02-01",
> "ids": [
> {
> "id": "1",
> "id_date": "2020-02-24"
> },
> {
> "id": "2",
> "id_date": "2020-02-23"
> }
> ],
> "another": {
> "some_date": "2020-02-02"
> }
> }
> {code}
> It would be useful if one could use NiFi's Record Path to generically
> reference fields nested within arrays as well as top-level/nested objects in
> order to make updates to their values, e.g. as part of a call to the
> UpdateRecord processor.
> For example, to reference all non-array fields whose name contains `date`,
> one could currently use: ` //*[matchesRegex(fieldName(.),
> '(^|.+_)date(_.+|$)')]`; however there is no equivalent for referencing the
> date fields within the arrays.
> Such a RecordPath could look like `//[0..-1]/*[matchesRegex(fieldName(.),
> '(^|.+_)date(_.+|$)')]`, however this is currently marked as invalid by the
> UpdateRecord processor validation (and presumably therefore doesn't work).
> One tricky addition to this would be how to handle multiple levels of nesting
> of arrays/objects and how much descending through the Record tree should be
> possible.
> An addition to this would be to allow for matching of Map fields too, e.g.
> with something like `//[]/*[matchesRegex(fieldName(.),
> '(^|.+_)date(_.+|$)')]`.
> An example use-case for this is where incoming data structure is not
> set/known and may contain arrays (or even maps) with date fields where the
> flow is trying to support multiple date formats (e.g. yyyy-MM-dd and
> dd/MM/yyyy) but wants to harmonise all dates to a single format for further
> processing (e.g. dd/MM/yyyy).
--
This message was sent by Atlassian Jira
(v8.20.10#820010)