A dedicated data transformation component for the elastic.io platform that is based on JSONata.
This component requires no authentication.
This component takes the incoming message body and applies the configured JSONata transformation to it. It uses the fact that a JSONata expression is a superset of a JSON document, so by default, any valid JSON document is a valid JSONata expression.
For example, let's take this sample incoming message body:
{
"Account": {
"Account Name": "Firefly",
"Order": [
{
"OrderID": "order103",
"Product": [
{
"Product Name": "Bowler Hat",
"ProductID": 858383,
"SKU": "0406654608",
"Description": {
"Colour": "Purple",
"Width": 300,
"Height": 200,
"Depth": 210,
"Weight": 0.75
},
"Price": 34.45,
"Quantity": 2
},
{
"Product Name": "Trilby hat",
"ProductID": 858236,
"SKU": "0406634348",
"Description": {
"Colour": "Orange",
"Width": 300,
"Height": 200,
"Depth": 210,
"Weight": 0.6
},
"Price": 21.67,
"Quantity": 1
}
]
}
]
}
}You can use the following JSONata expression to transform it:
{
"account": Account."Account Name",
"orderCount" : $count(Account.Order)
}
The result of that transformation will be the following JSON document (JSONata link):
{
"account": "Firefly",
"orderCount": 1
}I hope you've got the idea. Now you can also do something more complicated, like this array-to-array transformation:
{
"account": Account."Account Name",
"products": Account.Order.Product.({
"name": $."Product Name",
"revenue": (Price * Quantity)
}),
"orderIDs": Account.Order[].(OrderID)
}
Resulting in (JSONata link):
{
"account": "Firefly",
"products": [
{
"name": "Bowler Hat",
"revenue": 68.9
},
{
"name": "Trilby hat",
"revenue": 21.67
}
],
"orderIDs": [
"order103"
]
}Apache-2.0 © elastic.io GmbH