- Group: Complex type
- Description: Type is used for define variables that store key-value of simple types
- Restrictions: Key must be present as string. All values must be represented as a simple type (string, number, version, date) and have the same type
- Description: Optional element that contains predicate in the form of an rule expression. This predicate will use for each value of map and if it return true key-value will be used in the expression else key--value will be ignored.
- Restrictions: If filter is null or not present all map values will be used in expression
It is used for cases when it is necessary to check that map is not empty after using the filter
It is used for cases when it is necessary to check that map is empty after using the filter
{
"operation": "in",
"values": [
{
"type": "map",
"element_type": "number",
"value": {
"experiment_key1": "1",
"experiment_key2": "2",
"experiment_key3": "3"
}
},
{
"type": "map",
"element_type": "number",
"filter": {
"operation": "gt",
"values": [
{
"type": "number",
"value": "2"
},
{
"type": "number",
"user_param": "experement"
}
]
},
"user_param": "experement"
}
]
}
{
"experiment_key1": {
"value": "1",
"startDate": "2022-01-12",
"endDate": "2022-02-12",
"enabled": true
},
"experiment_key2": {
"value": "3",
"startDate": "2022-01-12",
"endDate": "2022-04-12",
"enabled": false
},
"experiment_key3": {
"value": "1",
"startDate": "2022-01-12",
"endDate": "2022-09-12",
"enabled": true
},
"experiment_key4": {
"value": "4",
"startDate": "2022-01-12",
"endDate": "2022-04-12",
"enabled": true
}
}
From the database will get only two user params experiment_key3 and experiment_key4 because they have a valid date and they are enabled
{
"experiment_key3": {
"value": "1",
"startDate": "2022-01-12",
"endDate": "2022-09-12",
"enabled": true
},
"experiment_key4": {
"value": "4",
"startDate": "2022-01-12",
"endDate": "2022-04-12",
"enabled": true
}
}Filter
"filter": {
"operation": "gt",
"values": [
{
"type": "number",
"value": "2"
},
{
"type": "number",
"user_param": "experement"
}
]
}will be apply for each value. ("user_param": "experement" will be replaced by values 1 and 4 and evaluated.)
After that the user param map should contains only one key-value
"experiment_key3": "1"Add user param map to expression and evaluate it
{
"operation": "in",
"values": [
{
"type": "map",
"element_type": "number",
"value": {
"experiment_key1": "1",
"experiment_key2": "2",
"experiment_key3": "3"
}
},
{
"type": "map",
"element_type": "number",
"value": {
"experiment_key3": "1"
}
}
]
}Result of expression must be false because map
"experiment_key1": "1",
"experiment_key2": "2",
"experiment_key3": "3"doesn't contains
"experiment_key3": "1"{
"operation": "exist",
"values": [
{
"type": "map",
"element_type": "number",
"filter": {
"operation": "gt",
"values": [
{
"type": "number",
"value": "2"
},
{
"type": "number",
"user_param": "experement"
}
]
},
"user_param": "experement"
}
]
}{
"experiment_key1": {
"value": "1",
"startDate": "2022-01-12",
"endDate": "2022-02-12",
"enabled": true
},
"experiment_key2": {
"value": "3",
"startDate": "2022-01-12",
"endDate": "2022-04-12",
"enabled": false
},
"experiment_key3": {
"value": "1",
"startDate": "2022-01-12",
"endDate": "2022-09-12",
"enabled": true
},
"experiment_key4": {
"value": "4",
"startDate": "2022-01-12",
"endDate": "2022-04-12",
"enabled": true
}
}From the database will get only two user params experiment_key3 and experiment_key4 because they have a valid date and they are enabled
{ "experiment_key3": {
"value": "1",
"startDate": "2022-01-12",
"endDate": "2022-09-12",
"enabled": true
},
"experiment_key4": {
"value": "4",
"startDate": "2022-01-12",
"endDate": "2022-04-12",
"enabled": true
}
}Filter
"filter": {
"operation": "gt",
"values": [
{
"type": "number",
"value": "2"
},
{
"type": "number",
"user_param": "experement"
}
]
}will be apply for each value. ("user_param": "experement" will be replaced by values 1 and 4 and evaluated.)
After that the user param map should contains only one key-value
"experiment_key3": "1"Returns true, since the map contains one element and is not empty