Python

Описание

Узел создает один или несколько новых наборов данных с заданным составом и параметрами полей и заполняет их данными в ходе выполнения кода Python. Для заполнения выходных наборов в коде возможно использование данных входных портов.

Состав и параметры полей выходных наборов могут задаваться как в мастере настройки узла, так и из кода Python.

Примечание: Для работы узлов Python может потребоваться предварительная настройка Loginom и установка Python. Подробности в разделе Параметры компонента: Python.

Вход

  • Входной источник данных — таблица данных, необязательный.
  • Добавить еще один порт – создает новый порт Входной источник данных[N], где N – порядковый номер порта.
  • Входные переменные — переменные, необязательный.

Выход

  • Выходной набор данных — таблица данных.
  • Добавить еще один порт – создает новый порт Выходной набор данных[N], где N – порядковый номер порта.

Мастер настройки

Последовательно выполняются следующие этапы настройки:

  • Настройка столбцов выходной таблицы Python.
  • Python — ввод кода и предварительный просмотр результатов.

Настройка столбцов выходных таблиц

Страница мастера Настройка столбцов выходных таблиц Python предназначена для создания столбцов в выходных портах узла. Если узел имеет несколько выходных портов, то столбцы для каждого из них можно задать в отдельных вкладках OutputTable[0], OutputTable[1] и т.д. Если узел имеет только один выходной порт, то вкладки не отображаются и столбцы задаются для единственного выходного порта.

Столбцы выходных наборов можно задать как на данной странице мастера, так и динамически, в ходе исполнения кода Python. Получить столбцы для отдельно взятого набора без выполнения всего кода невозможно.

На странице доступны следующие команды:

  • Разрешить формировать выходные столбцы из кода — при установке флага доступно динамическое создание, изменение и удаление выходных столбцов.
  •  Добавить столбец — добавляет новый столбец с параметрами по умолчанию.
  •  Клонировать столбец — добавляет новый столбец с параметрами, как у выбранного столбца.
  •  Редактировать столбец (F2) — вызывает модальное окно редактирования параметров выбранного столбца.
  •  Переместить вверх (Ctrl+Up) — поднять выбранный столбец на одну позицию вверх по списку.
  •  Переместить вниз (Ctrl+Down) — опустить выбранный столбец на одну позицию вниз по списку.
  •  Удалить столбец (Delete) — удаляет выбранный столбец.
  •  Удалить все столбцы (Shift+Delete) — удаляет все имеющиеся столбцы.

Python

Страница Python содержит редактор исполняемого узлом кода. Запускать написанный скрипт возможно внутри процесса Loginom или в отдельном процессе (в Процессе интерпретатора) при установке флага Запускать в отдельном процессе.

На странице Python можно задать переменную окружения Python с помощью параметра Переменная окружения PY_ENV, при соблюдении следующих условий:

  1. Python запускается в отдельном процессе, т.е. установлен флаг Запускать в отдельном процессе.
  2. В списке «Парамеры компонента: Python» (Страница «Параметры» в Администрировании Loginom) Передавать переменные окружения узла имеет значение true.

Значение выбирается из списка, определенного в параметре Известные окружения, или вносится вручную, если параметр Разрешить неизвестные окружения имеет значение true. Указанные параметры также настраиваются в списке «Парамеры компонента: Python» на Странице «Параметры».

Примечание: Параметр Переменная окружения PY_ENV можно задать через порт управляющих переменных.

По кнопке Предпросмотр… в отдельном окне выводится часть данных результирующих наборов и панель вывода сообщений.

В Предпросмотре количество выводимых данных ограничивается:

  • Если в узле один выходной порт — отображаются первые 100 строк выходной таблицы.
  • Если несколько портов — данные выводятся по вкладкам (OutputTable[0], OutputTable[1] и т.д.) и в каждой вкладке отображается не менее 100 строк, если они были добавлены в коде.

Примечание: Количество отображаемых в Предпросмотре строк зависит от порядка заполнения выходных таблиц в коде. Вывод их результирующих строк во вкладки OutputTable[N] производится до тех пор, пока в каждой из них будет добавлено не менее 100 строк (или не будет достигнут конец таблицы). Например, сначала в коде заполняется набор данных первого порта в общем количестве 200 строк, затем второго в количестве 150 строк. В Предпросмотре в такой ситуации будет выведено во вкладке OutputTable[0] 200 строк, а во вкладке OutputTable[1] - 100 строк.

Примечание: При нажатии на кнопку Предпросмотра активируются все входные порты. При успешном завершении активации открывается окно Предпросмотра.

При запуске скрипта на Python внутри процесса Loginom одновременно может выполняться только один узел Python, соответственно последующий в очереди запуска узел Python ожидает выполнения предыдущего. Максимальное время ожидания задается параметром Тайм-аут ожидания запуска (мс). По умолчанию тайм-аут неограничен. Если время тайм-аута превышено, выполнение узла завершается с соответствующей ошибкой.

Поддерживается импорт модулей Python (см. Поиск модулей Python внутри процесса Loginom).

Доступ из кода Python к данным портов и другим встроенным объектам

Для доступа к данным портов и другим встроенным объектам в контексте выполнения кода предусмотрены следующие объекты:

Вышеуказанные объекты импортируются из встроенного модуля builtin_data. По умолчанию в текст исполняемого узлом кода добавляется строка импорта этих объектов.

Обработка ошибок

При вызове окна Предпросмотра или выполнении узла выводится сообщение об обнаруженных синтаксических ошибках и ошибках хода выполнения с указанием позиции кода, содержащего ошибку.

Глобальные функции

Доступны следующие глобальные функции:

  • filestoragepath — принимает путь в файловом хранилище и преобразует его в абсолютный путь в файловой системе.
Пример:
from builtin_data import OutputTable
import json

with open(filestoragepath("data_file.json")) as f:
    data = json.load(f)
OutputTable.Append()
OutputTable.Set(0, data)
  • getLocale — возвращает имя локали текущего узла в формате ICU. Функция не имеет аргументов.

Дополнительных импортов для применения данных функций выполнять не нужно.


Статьи в разделе:

Новости, материалы по аналитике, кейсы применения, активное сообщество