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 конфига, так же будет выведена ошибка

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

Всего есть 4 основных этапа конвейера: active_period, filtres, transformations и processing_policy

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

filtres

Название параметраВозможные значенияОбязательный?Комментарий
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