Технические аспекты использования языков программирования в Loginom. Сравнительный анализ, ограничения и рекомендации по использованию JavaScript и Python.
Loginom является low-code платформой для продвинутой аналитики. Он прост в использовании и в большинстве случаев позволяет реализовать сложную логику без применения языков программирования. Это является одним из главных его преимуществ. Однако не все задачи можно решить без кода. Иногда написание нескольких строк быстрее и удобнее, чем визуальное проектирование, поэтому Loginom поддерживает два языка программирования — JavaScript и Python.
Есть несколько причин, по которым кодинг может быть полезен аналитику при работе в Loginom:
Рассмотрим, как программирование встраивается в Loginom и в каких случаях нужно применять тот или иной язык.
Первое, что необходимо понимать при использовании кодинга в Loginom, — это принцип работы. JavaScript и Python работают как встроенные в поток обработки данных узлы. Посредством использования компонентов JavaScript и Python можно легко интегрировать скрипты на этих языках в сценарий.
Простота встраивания обеспечивается благодаря Data API — интерфейсу получения данных c входных портов и передачи на выходные. С помощью Data API информация в портах узла прозрачно преобразовывается в структуры соответствующих языков программирования, с которыми в дальнейшем при помощи кода можно производить любые манипуляции.
Структуру таблицы для выходного порта можно задать как на странице Настройка столбцов выходной таблицыJavaScript/Python мастера, так и динамически в ходе исполнения скрипта при установке флага Разрешить формировать выходные столбцы из кода.
Пример получения на JavaScript при помощи Data API данных из входного порта c динамическим формированием структуры выходной таблицы выглядит следующим образом:
import { InputTable,OutputTable } from "builtIn/Data";
// Иницилизация количества полей
const ColCount = InputTable.ColumnCount;
// Иницилизация количества записей
const RowCount = InputTable.RowCount;
// Инициализация полей
OutputTable.AssignColumns(InputTable.Columns);
// Заполнение набора данных в цикле по входному набору
for (let i = 0; i < RowCount; i++) {
// Добавление новой записи в набор данных
OutputTable.Append();
for (let j = 0; j < ColCount; j++) {
// Полученное значение входного набора передается на выходной
OutputTable.Set(j, InputTable.Get(i, j));
}
}
Аналогичный пример, но в случае применения Python:
from builtin_data import InputTable, OutputTable
from builtin_pandas_utils import to_data_frame, fill_table
# Создание pandas.DataFrame по входному набору
data = to_data_frame(InputTable)
# Копирование столбцов входного набора
OutputTable.AssignColumns(InputTable.Columns)
# Заполнение выходного набора
fill_table(OutputTable, data, with_index=False)
Для выполнения JavaScript-кода применяется движок ChakraCore. Узлы используют общий пул движков, но выполнение происходит в изолированном контексте. Максимальный размер пула зависит от числа логических ядер системы.
Для получения и передачи данных на входных и выходных портах узел JavaScript использует интерфейс Data API, получающий данные «лениво». Методы работы с данными остаются неизменными вне зависимости от того, работает несколько узлов JavaScript параллельно или нет.
Кроме этого, компонент поддерживает:
В маркетплейсе Loginom есть библиотека компонентов на базе File Storage API — Loginom FileAPI, которая позволяет производить все операции с файлами при помощи визуального проектирования.
Кроме этого предоставляется возможность подгружать иные библиотеки JavaScript. Поддерживаются 2 модульные спецификации — EcmaScript 6 и CommonJS.
JavaScript работает из коробки без каких-либо дополнительных настроек, инсталляций и иных действий.
Помимо узла JavaScript, данный язык программирования можно использовать в обработчике Калькулятор, позволяющем писать формулы как в стиле Excel, так и на JavaScript.
Для работы с Python потребуется установка интерпретатора языка на сервер, где инсталлирован Loginom и предварительная настройка. Применение Python в Loginom может отличаться в зависимости от ОС.
Использование этого языка связано с рисками, т.к. он работает не в «песочнице». Например, с помощью Python можно написать вредоносный код и украсть данные другого пользователя, либо каким-то другим способом навредить системе, на которой развернут Loginom.
Именно поэтому по умолчанию выполнение кода Python запрещено. Для обеспечения безопасной работы рекомендуется запускать интерпретатор Python в контейнерах, что потребует определенной настройки системным администратором.
Под Windows узел Python может запускаться как внутри процесса Loginom, так и в отдельном, а при работе под Linux доступен только вариант работы в отдельном процессе. Кроме того, есть определенные особенности использования и ограничения, которые необходимо учитывать.
Применение Python внутри процесса не требует загрузки/выгрузки данных в файлы или какие-либо другие приемники/источники. Data API «лениво» получает данные (переменные и таблицы) из входного порта и выгружает обработанные результаты (таблицу) в выходной порт, что позволяет экономнее расходовать оперативную память. Но при этом одновременно может работать только один узел Python на сервер Loginom.
При включенной опции Запускать в отдельном процессе параллельно может выполняться более одного узла Python. Но в этом случае анализируемые данные выгружаются в промежуточные файлы и запускаются отдельные процессы интерпретатора Python для каждого узла, что приводит к потерям времени на чтение и запись с диска.
В узле Python доступен вспомогательный модуль builtin_pandas_utils, позволяющий преобразовывать наборы данных Loginom в pandas DataFrame и обратно.
В маркетплейсе Loginom представлена библиотека Python Kits, которая имеет следующие возможности:
Большинство задач в Loginom можно решить за счет визуального проектирования, но если этого недостаточно, то необходимо принимать во внимание особенности встраивания каждого языка программирования в платформу.
Достоинства компонента JavaScript в Loginom:
Достоинства применения Python:
Python — популярный среди дата-сайентистов язык. Но необходимо учитывать, что на практике кодинг часто используется не для запуска алгоритмов машинного обучения, а для решения простых задач: добавить новые записи в зависимости от значений определенных полей, видоизменить таблицу с использованием циклов, распарсить JSON и т.п.
Поэтому общее правило применения языков программирования в Loginom следующее: по умолчанию использовать JavaScript, а Python применять только если JavaScript не закрывает задачу.
Новые демопримеры Loginom: обзор изменений и улучшений