Найти тему
Data Surfing

KNIME 🔀 Переменные и управление нодами.

Оглавление

Переменные в KNIME это основной механизм управления нодами и построение динамического процесса обработки данных. Если нужно задать что-то на основе данных, имя файла например или адрес в строке подключения, то это можно сделать с помощью переменных. Переменные позволяют задать практические любое свойство любой ноды в KNIME.

Пример задания свойств через переменные.
Пример задания свойств через переменные.

Все переменные строго типизированы, как и типизированы все свойства нод. Есть как простые типы, например строка, число, так и сложны, например путь к файлу. И при этом путь к файлу это не просто текст с этим путем, но и данные о подключении к файловой системе.

Для задания свойства через переменную, достаточно выбрать переменную на вкладке Flow Variables у значения соответствующего поля и все. Имя каждой настройки на этой вкладке отличается от того что вы видите на основной форме, но как правило не составляет труда понять, какое поле за что отвечает.

Переменные можно создать самостоятельно например с помощью ноды Variable Creator. Она может создать переменные простых типов: строка, числа, числа с плавающей запятой или логического типа (да/нет).

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

А также можно получить переменные, как результат выполнения нод, например нода чтения свойств контекста выполнения процесса. В результате появляется ряд переменных определяющих контекст выполнения процесса.

Результат работы ноды Extract Context Properties.
Результат работы ноды Extract Context Properties.

Существует раздел нод по работе с переменными, но и вне его есть ноды, имеющие на входе или выходе только переменные. В большинстве случаев если нода существует для преобразования переменных, то она содержит в своем названии "variable", в том или ином виде.

Репозиторий нод по работе с переменными.
Репозиторий нод по работе с переменными.

Переменные передаются по соединению с красными кружками, но при этом переменные передаются и по любому другому соединению. Т.е. если у вас есть две ноды соединенные друг с другом, то переменные доступные в первой ноде будут доступны и во второй.

Переменные и данные.

Для выделения или добавления переменных в поток обработки данных существуют ноды "inject" и "Extract" соответсвенно. Они не выполняют никакой полезной работы, просто позволяют добавить переменные к потоку данных или получить их из него и обработать отдельно.

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

В таком случае достаточно легко получить ситуацию, когда одноименная переменная придет из различных источников и различными путями. В данном случае правило одно, переменные с порта переменных над нодой читаются в первую очередь, т.к. как правило они влияют на поведение ноды. Далее читаются переменные с портов слева сверху вниз. И если переменная уже существует, то ее значение не меняется!

Использование одноименной переменной
Использование одноименной переменной

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

Объединение переменных, нодой объединения
Объединение переменных, нодой объединения
В случае когда нужно быть уверенным, что используется конкретное значение переменной и оно нигде не поменялось, то ту ноду в которой оно используется нужно подключить через порт переменных к той ноде, где эта переменная определяется, или там где формируется ее правильное значение.

От данных к переменным и наоборот.

Так же существуют ноды, которые позволяют из данных сделать переменные, тогда значения одной строки преобразуются к переменным и имя каждой переменной соответсвует имени колонки в данных. Или значения одной колонки преобразуется к переменным и имя каждой переменной это ID строки с этим значением.

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

Заключение.

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

-7