Skip to content

DataPipe ​

Как найти DataPipe?

  1. Найдите интересующий вас Unit визуально или через вкладку поиска
  2. Нажмите ПКМ по Unit, если UnitNode ещё не отобразились
  3. Выберите ЛКМ Input или Output UnitNode
  4. Кликните жёлткую кнопку DataPipe
Имя кнопкиНазначение
Import YML ConfigПозволяет загрузить конвейер с вашего локального устройства в редактор
Export YML ConfigПозволяет скачать конвейер, который на данный момент актуален на сервере
Import CSV DataПозволяет загрузить данные с вашего локальной устройства в DataPipe
Export CSV DataПозволяет скачать все накопленные данные в формате CSV, если данных нет - выдаст ошибку
Set ConfigПозволяет отправить на сервер новый конвейер
Del Saved Pipe DataПозволяет удалить все данные, которые получились в результате работы конвейера, для данного UnitNode

Особенности редактора:

  1. Редактор выводит базовые ошибки синтаксиса YML
  2. Редактор умеет выводить бизнес-ошибки, если формат не соответствует структуре ожидаемой сервером
  3. При попытке отправки неверного YML конфига, так же будет выведена ошибка

Значение параметров ​

Конвейер состоит из этапов active_period, filters, transformations, processing_policy и необязательного alerts

active_period ​

Основная цель данного этапа ограничить время сбора данных:

  • за определённый период
  • начиная с определённой даты
  • до определённой даты
  • постоянно
Название параметраВозможные значенияОбязательный?Комментарий
typeDateRange, FromDate, ToDate, PermanentДаВыбор ограничения времени
startДата в формате 2023-11-15T12:43:56ZОбязателен для типов: DateRange и FromDateВремя начала периода DateRange или время начала работы FromDate
endДата в формате 2023-11-15T12:43:56ZОбязателен для типов: DateRange и ToDateВремя конца периода DateRange или время конца работы ToDate

filters ​

Название параметраВозможные значенияОбязательный?Комментарий
type_input_valueText или NumberДаТип обрабатываемых данных. Number это float64 из Golang
type_value_filteringWhiteList и BlackListНетТип фильтрации значений
filtering_valuesСписок только числовых или только текстовых значенийОбязателен в случае, если есть type_value_filteringПроверка завязана на тип из type_input_value
type_value_thresholdMin, Max или RangeНетТип фильтрации диапазонов числовых значений
threshold_minfloat64 из GolangОбязателен, если есть type_value_threshold с типами Min и RangeРаботает только с type_input_value = Number
threshold_maxfloat64 из GolangОбязателен, если есть type_value_threshold с типами Max и RangeРаботает только с type_input_value = Number
max_rate0 <= max_rate <= 86400 только целыеДаОпределят, через сколько секунд будет обработано следующее сообщение. 0 без ограничения
last_unique_checktrue, falseДаЕсли true, то пропустит только если новое значение отличается от предыдущего. По умолчанию false
max_size0 <= max_size <= MQTT_MAX_PAYLOAD_SIZE * 1024ДаМаксимальный размер сообщения, если размер превысит - сообщение будет пропущено

transformations ​

Данный этап не является обязательным, но, если вы его используете, он требует знания о типе type_input_value из предыдущего этапа:

Для type_input_value = Number:

Название параметраВозможные значенияОбязательный?Комментарий
multiplication_ratiofloat64 из GolangНетНа это число можно умножить заданное значение - линейное преобразование
round_decimal_point0 <= round_decimal_point <= 7НетСколько чисел после запятой останется?

Для type_input_value = Text:

Название параметраВозможные значенияОбязательный?Комментарий
slice_startЦелое числоНетРаботает как первый элемент среза в python3 - any_list[slice_start:]
slice_endЦелое числоНетРаботает как второй элемент среза в python3 - any_list[:slice_end]

processing_policy ​

Название параметраВозможные значенияОбязательный?Комментарий
policy_typeLastValue, NRecords, TimeWindow, AggregationДаОдна из 4 политик обработки
n_records_countЧисло хранимых записей 0 < n_records_count =< 1024Обязателен только для policy_type = NRecordsОпределяет, сколько записей будет храниться
time_window_sizeОдно из значений: [60, 300, 600, 900, 1200, 1800, 3600, 7200, 10800, 14400, 21600, 28800, 43200, 86400]Обязателен для policy_type = TimeWindow или AggregationРазмер окна в секундах, оно должно нацело делить 86400
aggregation_functionsAvg, Min, Max, SumОбязателен для policy_type = AggregationФункция, на основе которой будет рассычитано итоговое значение, на основе time_window_size

alerts ​

Необязательный этап. DataPipe проверяет значение, которое уже прошло filters и transformations, и пишет уведомление создателю Unit. Условие совпадает с этапом filters: уведомление уходит на значение, которое такой же фильтр пропустил бы.

WhiteList срабатывает, когда значение есть в filtering_values. BlackList срабатывает, когда значения в списке нет. Min срабатывает при значении больше либо равном threshold_min, Max при значении меньше либо равном threshold_max, Range когда значение внутри обеих границ. Если заданы и список, и порог, значение должно пройти оба правила. Если не заданы ни type_value_filtering, ни type_value_threshold, уведомление создаётся на любое значение: достаточно is_enabled.

max_rate и last_unique_check из filters решают, какие значения вообще дойдут до этой проверки. Первое уведомление уходит после consecutive_count совпадений подряд. Пока значение остаётся совпадением, следующее уведомление того же UnitNode приходит не чаще чем раз в max_frequency секунд. Значение, которое не совпало с правилом, сбрасывает счётчик consecutive_count.

Этап работает при включённом PU_FF_NOTIFICATION_ENABLE у Backend и DataPipe. Выключенный Data pipe alerts в настройках уведомлений оставляет запись в списке и правило в конвейере, живое обновление страницы и Telegram для этого типа прекращаются.

Название параметраВозможные значенияОбязательный?Комментарий
is_enabledtrue, falseНет, по умолчанию truefalse выключает проверку
type_value_filteringWhiteList, BlackListНетТип списка. Без него и без type_value_threshold подходит любое значение
filtering_valuesСписок чисел или строкОбязателен, если задан type_value_filteringТип значений берётся из filters.type_input_value
type_value_thresholdMin, Max, RangeНетТолько при filters.type_input_value = Number. Без него и без type_value_filtering подходит любое значение
threshold_minЦелоеОбязателен для Min и RangeДля Range меньше threshold_max
threshold_maxЦелоеОбязателен для Max и RangeДля Range больше threshold_min
consecutive_countЦелое 1–1024, по умолчанию 1НетСколько совпадений подряд нужно до первого уведомления
max_frequencyЦелое 10–86400, по умолчанию 10НетМинимум секунд между двумя уведомлениями одного UnitNode