Структура правил
Правила формирования данных предоставляют пользователю три типа действий:
Правила формирования данных работают с двумя массивами данных:
- current - указатель на текущие отображаемые данные в таблице;
- new - указатель на вновь пришедшие данные.
Структура записи правил
Каждое правило состоит из условий (conditions), при выполнении которых к данным применяются действия (actions).
Поле actions является обязательным и должно содержать хотя бы одно действие.
При отсутствии поля conditions указанные действия будут выполняться при каждом получении данных сервером.
Структура записи одного правила:
json
[
{
"conditions": [...],
"actions": [...]
}
]Структура записи нескольких правил:
json
[
{
"conditions": [...],
"actions": [...]
},
{
"conditions": [...],
"actions": [...]
},
...
]Структура записи условий
Формат записи условия имеет следующую обязательную конструкцию:
json
"conditions": [{
"_field": {
"name": "...",
"value": {...}
}
}],где
- _field - заголовок отдельного условия,
- name - имя метрики из таблицы данных, значение которой необходимо протестировать.
Обязательно использовать с именем указатель, позволяющий определить какое значение должно быть протестировано:
current (присвоенное метрике ранее),
new (только что полученное).
- value - значение метрики, с которым сравнивается текущее значение, и оператор сравнения.
Формат записи поля value:
json
"Оператор": "Значение"Возможные операторы:
| Оператор | Расшифровка |
|---|---|
| _eq | Равно |
| _neq | Не равно |
| _lt | Меньше |
| _lte | Меньше или равно |
| _gt | Больше |
| _gte | Больше или равно |
| _ct | Содержит |
| _nct | Не содержит |
| _m | Совпадает |
Пример условия (если текущее значение метрики packetLossPercentile меньше десяти):
json
"conditions": [
{
"_field": {
"name": "current.packetLossPercentile",
"value": {
"_lt": "10"
}
}
}
],Вместо одного условия можно записать блок из нескольких условий. В таком случае действия выполнятся только при всех сработавших условиях в блоке.
json
"conditions": [
{
"_field": {
"name": "...",
"value": {...
}
}
},
{
"_field": {
"name": "...",
"value": {...
}
}
}
],
"actions": [...
]Структура записи действий
В поле actions перечисляются типы действий (type) и дополнительные поля, которые характерны для того или иного типа.
Структура записи правила с одним действием:
json
[
{
"conditions": [...],
"actions": [
{
"type": "extend"
}
]
}
]Действия можно комбинировать. В таком случае они выполняются в порядке следования:
json
[
{
"conditions": [...],
"actions": [
{
"type": "extend"
},
{
"type": "drop"
}
]
}
]При отсутствии условий действия можно комбинировать двумя равнозначными способами:
|
[ { "actions": [ { "type": "extend" }, { "type": "drop" } ] } ]
|
[ { "actions": [ { "type": "extend" } ] }, { "actions": [ { "type": "drop" } ] } ]
| | --- | --- |
Типы действий
NOTE
Выполняются все действия, у которых сработали условия или без условий, в порядке записи в редакторе. Если несколько действий затрагивают одну и ту же метрику, приоритет будет у последнего.
NOTE
При использовании правил SET и DROP рекомендуется расширять таблицу всеми метриками первым действием, иначе метрики, не указанные в правилах, не будут обновляться в таблице данных:
SET - создание новой или переопределение существующей метрики
Данное действие имеет два обязательных поля:
- Field - имя метрики, куда необходимо записать значение (при отсутствии метрики с таким именем она будет добавлена в таблицу данных);
- Value - значение, которое необходимо записать в метрику.
В качестве значения (value) можно использовать:
- числовые значения, например, 10;
- текстовые данные, например, "text";
- значения других метрик из таблицы данных с указателями current и new, например, "{{new.temperature}}";
- формулы с применением метрик из таблицы данных с указателями current и new, например, "{{current.temperature}}-{{new.temperature}}".
Структура записи правила SET:
json
[
{
"actions": [
{
"type": "extend"
},
{
"type": "set",
"field": "metric_name",
"value": "metric_value"
}
]
}
]EXTEND - расширение таблицы новыми метриками
Это действие дополняет таблицу данных новыми метриками. Метрики, которые уже присутствуют в таблице, удалены не будут.
Действие EXTENDимеет два необязательных взаимоисключающих поля:
- Include - имена метрик, которые необходимо добавить к существующим;
- Exclude - имена метрик, которые необходимо игнорировать при добавлении.
Пример 1. Расширение таблицы данных всеми новыми метриками.
json
[
{
"actions": [
{
"type": "extend"
}
]
}
...
]Пример 2. Расширение таблицы данных только указанными новыми метриками.
json
[
{
"actions": [
{
"type": "extend",
"include": ["metric_name_1", "metric_name_2", ...]
}
]
}
...
]Пример 3. Расширение таблицы данных всеми новыми метриками, кроме указанных.
json
[
{
"actions": [
{
"type": "extend",
"exclude": ["metric_name_3", "metric_name_4", ...]
}
]
}
]DROP - удаление метрик
Это действие удаляет метрики из таблицы данных.
Действие DROP имеет два необязательных взаимоисключающих поля:
- Include - имена метрик, которые необходимо удалить;
- Exclude - имена метрик, которые необходимо оставить.
Пример 1. Удаление всех метрик.
json
[
{
"actions": [
{
"type": "drop"
}
]
}
]Пример 2. Удаление указанных метрик.
json
[
{
"actions": [
{
"type": "extend"
},
{
"type": "drop",
"include": ["metric_name_1", "metric_name_2", ...]
}
]
}
]Пример 3. Удаление всех метрик, кроме указанных.
json
[
{
"actions": [
{
"type": "extend"
},
{
"type": "drop",
"exclude": ["metric_name_3", "metric_name_4", ...]
}
]
}
]