Создание цепочек узлов
Соединение между узлами означает, что выходные данные первого узла становятся входными данными для второго узла. Соединения между узлами однонаправленные, т.е. направлены от одного узла к другому. Направление соединения указывается с помощью небольшой стрелки. Направление задается при создании соединения.
На рисунке ниже приведен пример цепочки узлов:
Как данные перемещаются по цепочке узлов
Данные движутся через конвейерную ленту узлов, при этом по мере передвижения данных каждый узел совершает с этими данными определенную операцию.
Однако говорить о том, что данные движутся по цепочке узлов, не совсем верно. При передаче в следующий узел в цепочке данные из предыдущего узла не удаляются. Скорее, результаты каждого последующего узла в цепочке представляют собой изменения в данных, накопленные при выполнении предшествующих узлов.
Выходные данные узла предназначены только для чтения
Выходные данные узлов предназначены только для чтения. Другими словами, после того, как узел создаст результат, его невозможно изменить.
Чтобы проиллюстрировать этот принцип, рассмотрим цепочку узлов, например, узел Файлы CSV, соединенный с узлом Фильтрация колонок. Удобно было бы сказать, что узел Фильтрация колонок изменяет таблицу данных, созданную узлом Файлы CSV, однако это не так. На самом деле узел Фильтрация колонок генерирует новую таблицу данных, которая является частичной копией исходной таблицы данных. Исходная таблица, произведенная узлом Файлы CSV, не изменяется. Колонки, удаленные узлом Фильтрация колонок, все еще присутствуют в выходных данных узла Файлы CSV.
Такая неизменность данных является значительным преимуществом в том плане, что вы можете просмотреть точное состояние ранее полученных результатов до изменения их в последующих узлах.
Обозначения узлов в цепочке
В настоящей документации для обозначения узлов в цепочке используется несколько терминов. Например, в цепочке из двух узлов, т.е. в соединении от некого узла А до некого узла B, эти узлы могут обозначаться по-разному.
-
А может называться узлом-источником, родительским узлом, корневым узлом, корнем, предшествующим узлом, предыдущим узлом, предыдущим элементом, предшественником, вышестоящим узлом, производителем, отправителем, предком, узлом-предком или просто более ранним узлом в данной цепочке.
-
B может назваться целевым узлом, принимающим узлом, зависимым узлом, узлом-потомком, узлом назначения, узлом-потребителем, дочерним узлом, последующим узлом или нисходящим узлом.
В настоящем руководстве в цепочке более двух узлов самый первый узел может называться родительским узлом, корневым узлом или исходным узлом. Самый последний узел может называться итоговым или конечным узлом (подобно "конечной остановке поезда").
Узлы, разбивающие последовательность узлов, называются ответвлениями или узлами ветвления. Узлы, которые объединяют две последовательности в одну, называются узлами конкатенации или слияния (не путать с узлами Конкатенация и Объединение).
Сначала создайте цепочку узлов, затем выполните их
Нет необходимости выполнять узел сразу после добавления его в проект. Вы можете работать с результатами узла до того, как он будет выполнен. Это особенно важно при работе с большим количеством данных. PolyAnalyst предусматривает возможность в течение дня работать над созданием крупной цепочки узлов с тем, чтобы все эти узлы были выполнены ночью. Можно создать и настроить любое количество узлов, а затем выполнить все эти узлы.
Выполнение тангенциального анализа
Один узел может иметь несколько соединений с другими узлами. Выход узла может быть использован на входе несколькими другими узлами. Другими словами, цепочки узлов могут ветвиться. Например, на следующем рисунке изображен узел-источник Crime Data, выходные данные которого многократно используются в качестве входных данных в нескольких других узлах.
Ниже представлен другой пример выполнения тангенциального анализа:
В данном примере каждый из двух узлов Фильтрация строк извлекает подмножество записей, импортированных узлом Файлы CSV. Начиная с этого момента выполняются два отдельных вида анализа. В каждом анализе используется специально отобранный с помощью разных узлов фильтрации строк набор данных.
Ограничения по соединениям узлов
Не все узлы могут соединяться друг с другом. Вы можете соединить два узла только в том случае, если выходные данные родительского узла могут быть использованы в качестве исходных данных дочерним узлом.
В описании каждого узла в настоящем руководстве имеется информация о том, какие данные узел принимает на входе, и какие данные создает на выходе.
Некоторые узлы принимают на входе, и даже требуют наличия двух источников данных.
Некоторые узлы требуют наличия исходных данных разных типов.
Если узел уже имеет входящее соединение с каким-либо узлом, и вы хотите соединить его с другим узлом на входе, вам придется сначала удалить существующее соединение, а затем установить новое соединение с новым узлом.
Создание соединения между двумя узлами
Теперь попробуйте самостоятельно установить соединение между узлами. Если вы еще не сделали этого, добавьте новый узел Фильтрация колонок на скрипт. В палитре узлов он расположен в разделе Операции с колонками. Для того, чтобы добавить узел на скрипт, выполните те же шаги, что и на предыдущем этапе данного руководства, когда на скрипт был добавлен узел Файлы CSV.
Теперь соедините узлы Файлы CSV и Фильтрация колонок.
-
Левой кнопкой мыши нажмите на небольшую стрелку, расположенную рядом с узлом, от которого должно быть направлено соединение. На следующем рисунке стрелка справа от иконки узла выделена красным. Для того, чтобы стрелка отобразилась на скрипте, наведите курсор на узел.
-
Обратите внимание на то, что в некоторых случаях такая стрелка для создания соединения не отображается даже после наведения курсора на узел. Отсутствие стрелки означает, что данный узел не может стать родительским для другого узла (от него не может исходить соединение). Более того, стрелка отображается справа от иконки узла только в том случае, когда на скрипте присутствуют оба узла: и родитель, и дочерний узел. Например, на следующем рисунке стрелка появилась рядом с иконкой узла CrimeData, поскольку имеется подходящий узел, с которым его можно соединить - Фильтрация колонок.
-
Чтобы установить новое соединение, нажмите на стрелку левой кнопкой мыши и, удерживая кнопку, переместите курсор к узлу Фильтрация колонок. По мере перемещения курсора вы заметите линию, которая тянется от стрелки к курсору мыши (см. рис. ниже).
-
Когда курсор мыши окажется над иконкой узла Фильтрация колонок, отпустите левую кнопку мыши. Соединение будет установлено. Если вы отпустите кнопку мыши, не дотянув до иконки узла Фильтрация колонок, операция не будет выполнена. В случае, если соединение будет успешно установлено, вы увидите следующее.
Другие способы соединения узлов
Есть и другой способ соединения узлов на скрипте. Нажмите на узел-источник правой кнопкой мыши и выберите опцию Добавить узел… в контекстном меню. В новом окне выберите нужный узел, с которым хотите установить соединение. При необходимости используйте фильтр. Новый узел будет сразу добавлен на скрипт и соединен с родительским узлом.
Когда создаются соединения узлов?
Узлы можно соединить до их настройки или выполнения. Нет необходимости выполнять настройку узла до его соединения с другим узлом.
Разъединение узлов
Чтобы разъединить любые два узла, нажмите правой кнопкой мыши на линию соединения между двумя узлами и выберите опцию Разорвать. Обратите внимание, что удаление соединения влияет на состояние всех нисходящих узлов.
Если нисходящие узлы ранее находились в завершенном состоянии, то удаление соединения может привести к удалению результатов в этих нисходящих узлах и изменению их статуса (например, если узел был в завершенном состоянии, он вернется в состояние "готов"; если узел был "готов", он может перейти в состояние "не готов").
Некоторые узлы требуют установки соединения до начала настройки
Обычно окно настроек узла можно открыть в любое время после того, как вы добавили узел на скрипт. Однако некоторые узлы невозможно корректно настроить до тех пор, пока не будет создано необходимое соединение этого узла с другими. В таких случаях PolyAnalyst выдает сообщение об ошибке при попытке сконфигурировать узел до создания соединения.
Также окно настроек может отразиться не полностью, если соединение не было создано. Например, если нет соединения, и необходимые исходные данные в узле отсутствуют, отдельные вкладки могут быть скрыты или неактивны.
В некоторых редких случаях корректная настройка узла возможна только тогда, когда установлено соединение с предыдущим узлом, узел настроен и выполнен.
Настройка одного узла влияет на настройки связанных с ним узлов
Состояния узлов, которые расположены в последовательности после первого узла, зависят от состояния узлов, которые стоят до них. Например, когда вы перенастраиваете завершенный узел в последовательности завершенных узлов, результаты этого узла удаляются. Это удаление результатов вызывает ряд перенастроек в последующих узлах, что приводит к тому, что результаты последующих узлов также будут удалены.
Выполнение узла влияет на узлы в цепи
Часто пользователи выполняют узлы по отдельности. Однако некоторые предпочитают выполнить все узлы в цепи.
Когда мы даем команду Выполнить узлу, находящемуся в середине цепи, PolyAnalyst проверяет все предшествующие узлы, и постепенно выполняет все узлы в цепи с самого начала.
Если один из предшествующих узлов не выполняется, выбранный узел также не может быть выполнен.
Если в цепочке есть узлы, которые уже были успешно выполнены, PolyAnalyst не будет выполнять их заново, он просто продолжит работу с последующих узлов.
Если вам необходим другой порядок выполнения и, в частности, чтобы более ранние узлы, у которых уже есть результат, повторно выполнялись, тогда вам следует начать выполнение с одного из более ранних узлов, а не с более позднего узла.
Когда вы выполняете узел, все связанные с ним последующие узлы также выполняются. Чтобы этого не произошло, выберите опцию Выполнить до этого узла в контекстном меню узла.
В некоторых редких случаях, при выполнении узла, после которого цепь узлов разветвляется, PolyAnalyst может выполнить оба последующих узла одновременно. Одновременное выполнение узлов отключено по умолчанию, и все узлы во второй цепочке ставятся в очередь. Их выполнение не начнется до тех пор, пока не будут выполнены все узлы в первой цепочке.