Блок "Итератор"
Блок доступен начиная с версии 0.40
Назначение блока
Системный блок для управления расчетом.
(от латинского iteratio - «повторение»)
Блоки, которые находятся после выхода "Ряд данных", рассчитываются N раз (N зависит от длины списка данных, пришедших на вход "Данные").
Блоки, которые находятся после выхода "После итераций", рассчитываются после N расчетов
Настройки блока
Общие настройки блоков описаны в отдельном разделе.
Раздел "Итератор"
| Наименование | Тип | Обязательное | Описание | Пример |
|---|---|---|---|---|
| Событие по умолчанию | Выпадающий список | Да | Данные данного шага будут запомнены во время расчета (с этими данными будут рассчитываться блоки, которые стоят после бока "Итератор", если их рассчитывать вне итератора). По умолчанию "Первый элемент" |
Входы блока
| Название входа | Тип | Обязательный | Описание |
|---|---|---|---|
| Данные | Список | Да | Массив данных, по которому будет проходить цикл |
Выходы блока
| Название выхода | Тип | Описание |
|---|---|---|
| Ряд данных | Любой | Любая структура данных, которая была передана в элементах списка на вход блока |
| После итераций | Список | Список данных, который был собран блоком "Выход итератора" |
События блока
В блоке нет событий.
Описание работы блока
Блок "Итератор" - это аналог цикла for, т.е. ветка графа, которая стоит после выхода "Ряд данных" выполняется N раз последовательно, где N количество элементов списка данных, пришедших на вход "Данные".
После того как выполнятся все расчеты цикла, рассчитывается ветка графа, которая идет после выхода "После итераций"
Так же можно создать блок "Выход итератора". И на его входы передать результаты блоков, рассчитанных в цикле. Итоговый результат блока "Выход итератора" передается в выход "После итераций" блока "Итератор".
Пример работы:
Общий вид выполнения:
- Имеется массив из трех элементов типа данных "Ряд данных".
Пример данных:
[
{
"pkey": {},
"attrs": {},
"keys": [
"01.01.2020",
"02.01.2020",
"03.01.2020",
"04.01.2020",
"05.01.2020",
"06.01.2020",
"07.01.2020",
"08.01.2020",
"09.01.2020",
"10.01.2020"
],
"vl": [
0.3395592201661258,
0.42789568809739664,
0.2875478100139131,
0.9992851882625527,
0.502726781995488,
0.03593920993304297,
0.2124864158718153,
0.9984123694858961,
0.4632556469406398,
0.9900078631434184
],
"_source": "",
"_params": {
"ts": [
{
"key": "dt",
"mask": "%d.%m.%Y",
"frequency": "1D"
}
],
"vl": "value",
"fkey": [
"dt"
]
}
},
{
"pkey": {},
"attrs": {},
"keys": [
"01.01.2020",
"02.01.2020",
"03.01.2020",
"04.01.2020",
"05.01.2020",
"06.01.2020",
"07.01.2020",
"08.01.2020",
"09.01.2020",
"10.01.2020"
],
"vl": [
0.48316072834559454,
0.7159707276891684,
0.001203040638855105,
0.07097422089610954,
0.11803521078925196,
0.9868314719947913,
0.017578828460893033,
0.6495373736828195,
0.00011687728450099985,
0.28753142689724875
],
"_source": "",
"_params": {
"ts": [
{
"key": "dt",
"mask": "%d.%m.%Y",
"frequency": "1D"
}
],
"vl": "value",
"fkey": [
"dt"
]
}
},
{
"pkey": {},
"attrs": {},
"keys": [
"01.01.2020",
"02.01.2020",
"03.01.2020",
"04.01.2020",
"05.01.2020",
"06.01.2020",
"07.01.2020",
"08.01.2020",
"09.01.2020",
"10.01.2020"
],
"vl": [
0.046603716741338536,
0.5777166449818106,
0.8732493272498602,
0.00753236956427512,
0.8677426528302279,
0.916651047337572,
0.01420644651572065,
0.21358290652916564,
0.8082504968619894,
0.15574500679550182
],
"_source": "",
"_params": {
"ts": [
{
"key": "dt",
"mask": "%d.%m.%Y",
"frequency": "1D"
}
],
"vl": "value",
"fkey": [
"dt"
]
}
}
]
-
Эти данные передаются на вход "Данные" блока "Итератор".
-
Блок "Итератор" берет первый элемент списка, и передает его в выход "Ряд данных". (Начинается расчет 1 итерации)
Данные для 1 итерации:
{
"pkey": {},
"attrs": {},
"keys": [
"01.01.2020",
"02.01.2020",
"03.01.2020",
"04.01.2020",
"05.01.2020",
"06.01.2020",
"07.01.2020",
"08.01.2020",
"09.01.2020",
"10.01.2020"
],
"vl": [
0.3395592201661258,
0.42789568809739667,
0.2875478100139131,
0.9992851882625528,
0.502726781995488,
0.03593920993304297,
0.2124864158718153,
0.9984123694858961,
0.4632556469406398,
0.9900078631434184
],
"_source": "",
"_params": {
"ts": [
{
"key": "dt",
"mask": "%d.%m.%Y",
"frequency": "1D"
}
],
"vl": "value",
"fkey": [
"dt"
]
}
}
-
Рассчитывается блок "Изменение данных"
-
Рассчитываются блоки "Диаграмма для итерации" и "Выход итерации" (Окончание расчета 1 итерации)
-
После окончания первой итерации, блок "Итератор" берет следующий элемент списка и передает его в выход "Ряд данных". (Начинается расчет 2 итерации)
Данные для 2 итерации:
{
"pkey": {},
"attrs": {},
"keys": [
"01.01.2020",
"02.01.2020",
"03.01.2020",
"04.01.2020",
"05.01.2020",
"06.01.2020",
"07.01.2020",
"08.01.2020",
"09.01.2020",
"10.01.2020"
],
"vl": [
0.48316072834559456,
0.7159707276891684,
0.001203040638855105,
0.07097422089610954,
0.11803521078925196,
0.9868314719947913,
0.017578828460893035,
0.6495373736828195,
0.00011687728450099985,
0.28753142689724878
],
"_source": "",
"_params": {
"ts": [
{
"key": "dt",
"mask": "%d.%m.%Y",
"frequency": "1D"
}
],
"vl": "value",
"fkey": [
"dt"
]
}
}
-
Рассчитывается блок "Изменение данных"
-
Рассчитываются блоки "Диаграмма для итерации" и "Выход итерации" (Окончание расчета 2 итерации)
-
После окончания второй итерации, блок "Итератор" берет последний элемент списка и снова передает его в выход "Ряд данных". (Начинается расчет 3 итерации)
Данные для 3 итерации:
{
"pkey": {},
"attrs": {},
"keys": [
"01.01.2020",
"02.01.2020",
"03.01.2020",
"04.01.2020",
"05.01.2020",
"06.01.2020",
"07.01.2020",
"08.01.2020",
"09.01.2020",
"10.01.2020"
],
"vl": [
0.046603716741338539,
0.5777166449818106,
0.8732493272498602,
0.00753236956427512,
0.8677426528302279,
0.916651047337572,
0.01420644651572065,
0.21358290652916565,
0.8082504968619894,
0.15574500679550183
],
"_source": "",
"_params": {
"ts": [
{
"key": "dt",
"mask": "%d.%m.%Y",
"frequency": "1D"
}
],
"vl": "value",
"fkey": [
"dt"
]
}
}
-
Рассчитывается блок "Изменение данных"
-
Рассчитываются блоки "Диаграмма для итерации" и "Выход итерации" (Окончание расчета 3 итерации)
-
После окончания расчета 3 итерации, блок "Итератор" передает рассчитанные данные из блока "Выход итерации" в выход "После итераций"
Данные собранные блоком "После итератора"
[
{
"inp": {
"pkey": {},
"attrs": {},
"keys": [
"01.01.2020",
"02.01.2020",
"03.01.2020",
"04.01.2020",
"05.01.2020",
"06.01.2020",
"07.01.2020",
"08.01.2020",
"09.01.2020",
"10.01.2020"
],
"vl": [
0.6791184403322515,
0.8557913761947933,
0.8626434300417394,
7.994281506100422,
0,
0.2515744695313008,
0.6374592476154459,
5.990474216915376,
1.8530225877625592,
5.94004717886051
],
"_source": "",
"_params": {
"ts": [
{
"key": "dt",
"mask": "%d.%m.%Y",
"frequency": "1D"
}
],
"vl": "value",
"fkey": [
"dt"
]
}
}
},
{
"inp": {
"pkey": {},
"attrs": {},
"keys": [
"01.01.2020",
"02.01.2020",
"03.01.2020",
"04.01.2020",
"05.01.2020",
"06.01.2020",
"07.01.2020",
"08.01.2020",
"09.01.2020",
"10.01.2020"
],
"vl": [
1.9326429133823781,
3.579853638445842,
0.001203040638855105,
0.14194844179221908,
0.11803521078925196,
1.9736629439895825,
0.17578828460893034,
1.9486121210484586,
0.00035063185350299957,
0.5750628537944975
],
"_source": "",
"_params": {
"ts": [
{
"key": "dt",
"mask": "%d.%m.%Y",
"frequency": "1D"
}
],
"vl": "value",
"fkey": [
"dt"
]
}
}
},
{
"inp": {
"pkey": {},
"attrs": {},
"keys": [
"01.01.2020",
"02.01.2020",
"03.01.2020",
"04.01.2020",
"05.01.2020",
"06.01.2020",
"07.01.2020",
"08.01.2020",
"09.01.2020",
"10.01.2020"
],
"vl": [
0.46603716741338536,
4.621733159854485,
8.732493272498601,
0.06025895651420096,
7.809683875472051,
1.833302094675144,
0.12785801864148585,
1.0679145326458281,
1.6165009937239787,
0
],
"_source": "",
"_params": {
"ts": [
{
"key": "dt",
"mask": "%d.%m.%Y",
"frequency": "1D"
}
],
"vl": "value",
"fkey": [
"dt"
]
}
}
}
]
-
Рассчитывается блок "Сбор данных итераций в один массив"
-
Рассчитывается блок "Диаграмма для всех итераций"
В режиме "дебага" можно посмотреть результаты блока (которые находятся после выхода "Ряд данных") на каждую итерацию:


