UpdateRecord 2.0.0

Bundle
org.apache.nifi | nifi-standard-nar
Description
Updates the contents of a FlowFile that contains Record-oriented data (i.e., data that can be read via a RecordReader and written by a RecordWriter). This Processor requires that at least one user-defined Property be added. The name of the Property should indicate a RecordPath that determines the field that should be updated. The value of the Property is either a replacement value (optionally making use of the Expression Language) or is itself a RecordPath that extracts a value from the Record. Whether the Property value is determined to be a RecordPath or a literal value depends on the configuration of the <Replacement Value Strategy> Property.
Tags
avro, csv, freeform, generic, json, log, logs, record, schema, text, update
Input Requirement
REQUIRED
Supports Sensitive Dynamic Properties
false
Properties
Dynamic Properties
Relationships
Name Description
failure If a FlowFile cannot be transformed from the configured input format to the configured output format, the unchanged FlowFile will be routed to this relationship
success FlowFiles that are successfully transformed will be routed to this relationship
Writes Attributes
Name Description
record.index This attribute provides the current row index and is only available inside the literal value expression.
record.error.message This attribute provides on failure the error message encountered by the Reader or Writer.
Use Cases
  • Combine multiple fields into a single field.
    Description
    Combine multiple fields into a single field.
    Keywords
    combine, concatenate, recordpath
    Configuration
    "Replacement Value Strategy" = "Record Path Value"
    
    A single additional property is added to the Processor. The name of the property is a RecordPath identifying the field to place the result in.
    The value of the property uses the CONCAT Record Path function to concatenate multiple values together, potentially using other string literal values.
    For example, to combine the `title`, `firstName` and `lastName` fields into a single field named `fullName`, we add a property with the name `/fullName` and a value of `CONCAT(/title, ' ', /firstName, ' ', /lastName)`
    
  • Change the value of a record field to an explicit value.
    Description
    Change the value of a record field to an explicit value.
    Keywords
    change, update, replace, transform
    Configuration
        "Replacement Value Strategy" = "Literal Value"
    
        A single additional property is added to the Processor. The name of the property is a RecordPath identifying the field to place the result in.
        The value of the property is the explicit value to set the field to. For example, we can set any field with a name of `txId`, regardless of its level in the data's hierarchy,     to `1111-1111` by adding a property with a name of `//txId` and a value of `1111-1111`
    
  • Copy the value of one record field to another record field.
    Description
    Copy the value of one record field to another record field.
    Keywords
    change, update, copy, recordpath, hierarchy, transform
    Configuration
        "Replacement Value Strategy" = "Record Path Value"
    
        A single additional property is added to the Processor. The name of the property is a RecordPath identifying the field to update.
        The value of the property is a RecordPath identifying the field to copy the value from.
        For example, we can copy the value of `/identifiers/all/imei` to the `identifier` field at the root level, by adding a property named     `/identifier` with a value of `/identifiers/all/imei`.
    
  • Enrich data by injecting the value of an attribute into each Record.
    Description
    Enrich data by injecting the value of an attribute into each Record.
    Keywords
    enrich, attribute, change, update, replace, insert, transform
    Configuration
    "Replacement Value Strategy" = "Literal Value"
    
    A single additional property is added to the Processor. The name of the property is a RecordPath identifying the field to place the result in.
    The value of the property is an Expression Language expression that references the attribute of interest. We can, for example, insert a new field name `filename` into each record by adding a property named `/filename` with a value of `${filename}`
    
  • Change the format of a record field's value.
    Description
    Change the format of a record field's value.
    Notes
    Use the RenameRecordField Processor in order to change a field's name.
    Keywords
    change, update, replace, insert, transform, format, date/time, timezone, expression language
    Configuration
    "Replacement Value Strategy" = "Literal Value"
    
    A single additional property is added to the Processor. The name of the property is a RecordPath identifying the field to update.
    The value is an Expression Language expression that references the `field.value` variable. For example, to change the date/time format of a field named `txDate` from `year-month-day` format to `month/day/year` format, we add a property named `/txDate` with a value of `${field.value:toDate('yyyy-MM-dd'):format('MM/dd/yyyy')}`. We could also change the timezone of a timestamp field (and insert the timezone for clarity) by using a value of `${field.value:toDate('yyyy-MM-dd HH:mm:ss', 'UTC-0400'):format('yyyy-MM-dd HH:mm:ss Z', 'UTC')}`.
    
See Also