Skip to content

Latest commit

 

History

History
261 lines (224 loc) · 4.56 KB

File metadata and controls

261 lines (224 loc) · 4.56 KB

Retain operator

The retain operator keeps the specified list of fields, and removes the rest.

Configuration Fields

Field Default Description
id retain A unique identifier for the operator
output Next in pipeline The connected operator(s) that will receive all outbound entries
fields required A list of fields to be kept.
on_error send The behavior of the operator if it encounters an error. See on_error
if An expression that, when set, will be evaluated to determine whether this operator should be used for the given entry. This allows you to do easy conditional parsing without branching logic with routers.

NOTE: If no fields in a group (labels, resource, or record) are specified, that entire group will be retained.
Example usage:
Retain fields in the record
- type: retain
  fields:
    - key1
    - key2
Input Entry Output Entry
{
  "resource": { },
  "labels": { },  
  "record": {
    "key1": "val1",
    "key2": "val2",
    "key3": "val3",
    "key4": "val4"
  }
}
{
  "resource": { },
  "labels": { },  
  "record": {
    "key1": "val1",
    "key2": "val2"
  }
}

Retain an object in the record
- type: retain
  fields:
    - object
Input entry Output entry
{
  "resource": { },
  "labels": { },  
  "record": {
    "key1": "val1",
    "object": {
      "nestedkey": "val2",
    }
  }
}
{
  "resource": { },
  "labels": { },  
  "record": {
    "object": {
      "nestedkey": "val2",
    }
  }
}

Retain fields from resource
- type: retain
  fields:
    - $resource.key1
    - $resource.key2
Input entry Output entry
{
  "resource": { 
     "key1": "val1",
     "key2": "val2",
     "key3": "val3"
  },
  "labels": { },  
  "record": {
    "key1": "val1",
    }
  }
}
{
  "resource": { 
     "key1": "val1",
     "key2": "val2",
  },
  "labels": { },  
  "record": { 
    "key1": "val1",
  }
}

Retain fields from labels
- type: retain
  fields:
    - $labels.key1
    - $labels.key2
Input entry Output entry
{
  "resource": { },
  "labels": { 
     "key1": "val1",
     "key2": "val2",
     "key3": "val3"
  },  
  "record": { 
    "key1": "val1",
  }
}
{
  "resource": { },
  "labels": { 
     "key1": "val1",
     "key2": "val2",
  },  
  "record": { 
    "key1": "val1",
  }
}

Retain fields from all sources
- type: retain
  fields:
    - $resource.key1
    - $labels.key3
    - key5
Input entry Output entry
{
  "resource": { 
     "key1": "val1",
     "key2": "val2"
  },
  "labels": { 
     "key3": "val3",
     "key4": "val4"
  },  
  "record": { 
    "key5": "val5",
    "key6": "val6",
  }
}
{
  "resource": { 
     "key1": "val1",
  },
  "labels": { 
     "key3": "val3",
  },  
  "record": { 
    "key5": "val5",
  }
}