Python

Описание

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

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

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

Вход

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

Выход

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

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

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

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

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

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

Примечание: Динамическое создание, изменение и удаление выходных столбцов возможно в коде до момента добавления первой записи в выходной набор, т.е. до первого вызова метода Append() объектов OutputTable и OutputTables[N].

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

  •  Добавить столбец — добавляет новый столбец с параметрами по умолчанию.
  •  Клонировать столбец — добавляет новый столбец с параметрами, как у выбранного столбца.
  •  Редактировать столбец (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 можно задать через порт управляющих переменных.

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

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

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

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

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

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


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

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