Использование переменных в узле Python
Данный узел или опция доступны, только если они включены в лицензии PolyAnalyst Server.

Вы можете использовать предопределенные переменные среды, а также самостоятельно определять пользовательские переменные в узле Python. Переменные среды PolyAnalyst доступны через настройки узла.

python env var overview.rus

Обратите внимание, что узел Python существует внутри среды сервера PolyAnalyst: узел не видит переменные среды, принадлежащие операционной системе.

Если в проекте появляется новая переменная, ее можно либо Передать узлу Python, либо Пропустить, выбрав соответствующую опцию в выпадающем меню.

python env var mode.rus

Под новой переменной понимается та переменная, которая задается в Настройках проекта.

python prj var.rus

Значения меню рассматриваются как "стратегии слияния переменных". Значение Передать означает, что новая переменная будет передана узлу Python. Значение Пропустить означают, что такая переменная не будет использоваться при выполнении узла. Отметьте переменную галочкой, чтобы включить/отключить ее.

python env var tick.rus

Доступны следующие предопределенные переменные среды:

  • APIToken – API-токен, который создается для текущего пользователя.

  • __mode – способ интерпретации результатов работы узла (Новая таблица, Новые колонки или Индекс строк на основе 0, см. предыдущую главу).

  • host – URL-адрес сервера.

  • objId – идентификатор узла Python.

  • prjUUID – идентификатор текущего проекта.

  • $Examples$ – путь до папки с тренировочным набором данных.

  • @administrator@ – путь к папке текущего пользователя; обратите внимание, что имя данной переменной зависит от текущего пользователя, например, если вы открываете проект под учетной записью пользователя (user), переменная будет называться @user@.

Нажмите соответствующую кнопку, чтобы добавить новую переменную:

python env var new.rus

Обратите внимание, что на переменную, добавленную через настройки узла, не влияют стратегии слияния.

Введите имя переменной и ее значение:

python env var name.rus

Чтобы изменить значение переменной, щелкните по полю Значение и введите новое значение:

python env var change.rus

Вы можете создать глобальную переменную в Административном клиенте, чтобы использовать ее в узле Python.

python env var global.rus

Если имя новой переменной совпадает с существующим, то такие переменные будут выделены красным цветом.

python env var warning.rus

При необходимости снимите флажок с переменной.

python env var uncheck.rus

Обратите внимание, что существует определенная иерархия переменных (в порядке убывания):

  • Переменные, определяемые пользователем – переменные, заданные пользователем в узле Python.

  • Переменные пользовательских настроек – переменные, которые задаются через пользовательские настройки.

  • Переменные, заданные в настройках проекта – переменные, которые задаются в настройках проекта.

  • Переменные, заданные в настройках сервера – переменные, которые задаются через настройки сервера.

Другими словами, определяемые пользователем переменные обладают наивысшим приоритетом.

Переменная среды не может быть изменена.

В колонке Тип указывается тип переменной:

  • Определяемая пользователем переменная – переменная, которая была задана пользователем.

  • Переменная, содержая путь к папке пользователя – путь к папке текущего пользователя.

  • Именованные папки – путь к именованной папке (например, путь к папке с тренировочным набором данных).

  • Пользовательская SRL-переменная – SRL-переменная, установленная пользователем.

  • Проектная SRL-переменная – SRL-переменная, заданная в проекте.

  • Серверная SRL-переменная – SRL-переменная, заданная в настройках сервера.

  • Системный – системеная переменная, значение которой берется с сервера (например, URL-адрес сервера, идентификатор проекта, идентификатор узла Python и т.д.).

Переменные, которые были установлены в Настройках проекта не будут видны в других проектах.

Серверная SRL-переменная устанавливается через Административный клиент (см. далее).

Обратите внимание, что доступ к именованной папке может быть отключен:

python env var open folder.rus

В этом случае такая переменная не будет отображаться в списке переменных.

Значение переменной APIToken задается только при выполнении узла. Токен устанавливается для текущего пользователя, который запускает узел. Для токена автоматически задаются следующие области видимости:

  • Общий

  • Показать проект

  • Редактировать проект

  • Файл

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

Создание серверной SRL-переменной через Административный клиент

Чтобы задать переменную, откройте настройки SRL/PDL Переменных в Настройках сервера в Административном клиенте. Нажмите кнопку с изображением плюса. Введите имя переменной и ее значение (см. пример ниже):

python variables.rus

Нажмите кнопку Применить и закройте окно настроек. Таким образом, мы создали глобальную переменную с именем "var" со значением 100.

Теперь давайте создадим новый проект, чтобы проиллюстрировать использование переменной. Для этого используйте узел Файлы CSV и добавьте "CarData.csv" в качестве примера. Выполните узел и подсоедините к нему узел Python.

python flowchart.rus

Откройте окно настроек узла Python и введите следующий код:

column = parent["Displacement"] + int(parameters['var'])

result = pandas.DataFrame(column)

Переменные SRL/PDL сохраняются в виде пары ключ-значение. В нашем примере var – это ключ, содержащий значение 100. Чтобы получить значение по его ключу, нам нужно обратиться к Python-словарю parameters, где лежат указанные пары ключ-значение.

В нашем примере нам необходимо изменить тип переменной (см int()), поскольку SRL/PDL-переменные по умолчанию хранятся в строковом формате.

Чтобы увидеть новую колонку с исходным набором данных, выберите опцию Новые колонки в выпадающем меню, как показано ниже. После этого запустите узел.

pytnon global menu.rus

Таким образом, мы получаем новую колонку ""Displacement1" со значениями оргининальной колонки "Displacement", увеличенными на 100.

python global result.rus