[ 
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)

Reply via email to