FILTER function
FILTER function
| Function Name | Description | Usage | Input parameter | Return value |
|---|---|---|---|---|
FILTER |
Filters the array elements that satisfy a given filter condition.
Note that a filter condition must evaluate to TRUE or FALSE. A filter condition includes one or more transformation functions applied on the current array iteration element. |
FILTER(~objn -> Variable or Value)
Where ~objn indicates the current array element for which you want to apply the transformation functions. By default, the value for n starts from 1.
For JSON arrays with schema, you can use a dot (.) notation following the current array element to directly access the nested property of the that array element. For example, | A filter condition that evaluates to TRUE or FALSE. | An array of elements that match the filter condition. |
Supported data type
The FILTER function supports the following data types:
- Boolean array
- Double array
- Integer array
- JSON
- String array
Example 1: Filter a string array.
Sample data:
$var1$ = {
"sara@example.com",
"bola@example.com",
"222larabrown@gmail.com",
"dana@examplepetstore.com",
"cloudysanfrancisco@gmail.com"}
Usage: $var1$.FILTER(~obj1-> ~obj1.CONTAINS("@gmail.com"))
Filter the string elements which contain @gmail.com in var1.
Output:
{"222larabrown@gmail.com","cloudysanfrancisco@gmail.com"}
Example 2: Filter a JSON array.
Sample data:
$var1$ = {
"citynames": [
{
"city": "Abbeville",
"state": "Louisiana"
},
{
"city": "Aberdeen",
"state": "Maryland"
},
{
"city": "Benicia",
"state": "California"
},
{
"city": "Chehalis",
"state": "Washington"
},
{
"city": "Aberdeen",
"state": "Washington"
},
{
"city": "Aberdeen",
"state": "Mississippi"
},
{
"city": "Cheektowaga",
"state": "New York"
}
]
}
Usage:
var1.citynames
.FILTER(~obj1->
~obj1
.GET_PROPERTY("city")
.EQUALS("Aberdeen")
)Filter the elements which have the city as Aberdeen in var1.
Output:
[{
"city": "Aberdeen",
"state": "Maryland"
},
{
"city": "Aberdeen",
"state": "Washington"
},
{
"city": "Aberdeen",
"state": "Mississippi"
}]
Example 3: Filter a nested JSON array.
Sample data:
$var1$ =
{
"products": [
{
"PA": "Integrations",
"users": [
{
"name": "Ariel",
"role": [
"editor",
"approver"
]
},
{
"name": "Dana",
"role": [
"admin",
"deployer"
]
},
{
"name": "Lee",
"role": [
"viewer"
]
}
]
},
{
"PA": "Apigee",
"users": [
{
"name": "Mahan",
"role": [
"editor",
"admin",
"deployer"
]
},
{
"name": "Quinn",
"role": [
"invoker"
]
}
]
},
{
"PA": "Connectors",
"users": [
{
"name": "Kiran",
"role": [
"invoker",
"admin",
"deployer"
]
},
{
"name": "Sasha",
"role": [
"admin"
]
}
]
}
]
}
Usage:
var1.products
.FOR_EACH(~obj1 ->
~obj1
.SET_PROPERTY(
~obj1
.GET_PROPERTY("users")
.FILTER(~obj2 ->
~obj2
.GET_PROPERTY("role")
.TO_STRING()
.CONTAINS("admin")
)
,
"users"
)
)
Filter the elements which contain admin in users of var1.
Output:
[{
"PA": "Integrations",
"users": [{
"name": "Dana",
"role": ["admin", "deployer"]
}]
}, {
"PA": "Apigee",
"users": [{
"name": "Mahan",
"role": ["editor", "admin", "deployer"]
}]
}, {
"PA": "Connectors",
"users": [{
"name": "Kiran",
"role": ["invoker", "admin", "deployer"]
}, {
"name": "Sasha",
"role": ["admin"]
}]
}]
Recommendation
- Learn how to add and configure a Data Mapping task