Created 09-02-2016 04:44 AM
I have a complex json and I am using jolttransformjson processor to flatten out the json. I have looked at following links which are very helpful.
But what I still can't find is an example that shows transforming some attributes and not others. So, I have a json and the only thing I want to do really is keep records which contain certain value. Rest will be filtered out. but everything else in the json remains the way it is. Can someone share a quick example of this?
Created 09-02-2016 11:27 AM
Hi, I'm not yet sure if that can be done in JOLT spec. However, how about approaching it from the flow-based programming standpoint? The steps should be:
Created 09-02-2016 11:27 AM
Hi, I'm not yet sure if that can be done in JOLT spec. However, how about approaching it from the flow-based programming standpoint? The steps should be:
Created 09-02-2016 04:54 PM
Thank you @Andrew Grande
Quick question. If I don't need to do any filtering in jolt, why do I need it? To flatten it?
Created 09-06-2016 12:42 AM
So, I have done step 1 and 2 as you suggested. I am not sure how to implement step 3. Using jolt json, I have flattened my json by moving following objects from array to now as another attribute of the record.
"event_1_detail":{"type":"comma separated values","Description":"<important value>",<many other attributes>}
"event_2_detail":{"type":"comma separated values","Description":"<important value>",<many other attributes>}
"event_3_detail":{"type":"comma separated values","Description":"<important value>",<many other attributes>}
and so on. it's going to be different for each json record.
I have created flow-file attribute using EvalueJson processor which gets the description value. Now out of the elements shown above, I need to drop everything and retain only the one where
"Description":"<the value I want to retain>"
this means of "event_x_detail" above only the one which satisfies my criteria for description should be retained. the rest of json of course still remains there. just rest of "event_x_detail" are dropped. How do i do this using RouteOnAttribute?
Created 05-13-2017 02:38 AM
In a JOLT spec, if you don't explicitly provide a transformation for a particular field, it will be excluded. So you can include matching rules for the fields you care about (i.e. those that have a certain value), the rest will be discarded. Check the "Filter data from an Array, based on a leaf level value" example at the JOLT Demo online app.
Created 01-08-2019 08:29 PM
If there anyway I can get both transformed and original json out of JoltTransformation processor?
,
If there anyway I can get both transformed and original json out of JoltTransformation processor?
Created 01-09-2019 06:55 PM
Looks like @Bryan Bende answered your question on SO.
Created on 03-31-2020 08:43 AM - edited 03-31-2020 08:57 AM
You can use * and & to copy all in a shift operation
Created on 03-31-2020 08:56 AM - edited 03-31-2020 08:58 AM
For example I want to transform the zabbix payload from v4.0 to v4.4:
Zabbix Json Payload v4.0 (INPUT)
{
"hosts": [
"Host B",
"Zabbix Server"
],
"groups": [
"Group X",
"Group Y",
"Group Z",
"Zabbix servers"
],
"tags": [
{
"tag": "availability",
"value": ""
},
{
"tag": "data center",
"value": "Riga"
}
],
"name": "Either Zabbix agent is unreachable",
"clock": 1519304285,
"ns": 123456789,
"eventid": 42,
"value": 1
}
the JOLT transform:
[
{
"operation": "shift",
"spec": {
"hosts": {
"*": [
"hosts.[&].host",
"hosts.[&].name"
]
},
"*": "&"
}
}
]
The result ( Zabbix v4.4)
{
"hosts" : [ {
"host" : "Host B",
"name" : "Host B"
}, {
"host" : "Zabbix Server",
"name" : "Zabbix Server"
} ],
"groups" : [ "Group X", "Group Y", "Group Z", "Zabbix servers" ],
"tags" : [ {
"tag" : "availability",
"value" : ""
}, {
"tag" : "data center",
"value" : "Riga"
} ],
"name" : "Either Zabbix agent is unreachable",
"clock" : 1519304285,
"ns" : 123456789,
"eventid" : 42,
"value" : 1
}