Производительность и масштабируемость

Во время выполнения узла PolyAnalyst выполняет вторичную проверку настройки узла. Если система обнаружит, что какие-либо настройки некорректны, появится сообщение об ошибке (во всплывающем окне подсказки и в Списке задач). Проверка настроек выполняется очень быстро – в течение нескольких миллисекунд, вне зависимости от размера таблицы или количества отображаемых значений на вкладке Карта значений. После проверки PolyAnalyst создает для выходной таблицы данные для сохранения согласно настройке выходных колонок на вкладке Колонки. Создание схемы выходной таблицы обычно происходит в течение нескольких миллисекунд и требует большого количества времени только при одновременной работе с сотнями новых выходных колонок.

После создания схемы выходной таблицы PolyAnalyst начинает последовательно обрабатывать значения входной колонки в пакете записей. Размер пакета (количество записей) определяется автоматически и является небольшим, чтобы обрабатываемый объем значений мог легко уместиться в виртуальной памяти, доступной серверу PolyAnalyst при стандартной комплектации оборудования. Строки в таблице преобразований анализируются на предмет того, какие действия должны быть совершены по отношению к исходным значениям. Если значению предписано действие сохранить, система сразу сохраняет исходное значение. При выборе действия заменить сохраняется заданное значение замены. Действие удалить сохраняет нулевое значение в выходной колонке. После того, как первая исходная колонка будет целиком обработана, начнется обработка следующей исходной колонки, и так до тех пор, пока все колонки не будут обработаны. Далее PolyAnalyst выполнит очистку временно сохраненной информации, которая была использована в процессе обработки, после чего работа узла завершится.

Работа узла Замена категорий рассматривается как детерминированный процесс, поскольку количество исходных записей, исходных колонок и количество соответствий значений известно заранее. Ход выполнения узла, как правило, измеряется по следующей формуле: (текущая обрабатываемая исходная колонка / общее количество выбранных исходных колонок) + (номер текущей строки/номер обрабатываемого пакета исходных строк / общее число исходных записей). Ход выполнения задачи может оцениваться приблизительно, поскольку размер пакета записей – постоянное значение, на которое не делится общее количество записей.

Максимальное количество выходных атрибутов, которые можно создать с помощью узла Замена категорий, максимальное количество значений, которые могут быть созданы и настроены на вкладке Карта значений, а также максимальное количество исходных записей, которые узел Замена категорий может обработать, практически не ограничены (собственно ограничение определяется максимальным размером массива данных, который может сохранить PolyAnalyst).

Помните, что PolyAnalyst загружает весь набор соответствий между исходными и выходными значениями на вкладке Карта значений в виртуальную память на начальном этапе обработки, таким образом, каждое новое исходное значение оценивается очень быстро. В виртуальной памяти одновременно сохраняются соответствия значений и обрабатываемые в данный момент времени записи. Если общий объем виртуальной памяти превышен, то операционная система может начать страничную подкачку данных (увеличивать виртуальную память за счет ресурсов жесткого диска). При этом значительно сокращается производительность узла. Если это произойдет, вам следует сократить количество соответствий между значениями или увеличить объем доступной виртуальной памяти. Однако следует заметить, что такое может произойти лишь при работе с сотнями тысяч или миллионами уникальных записей в исходной таблице.

В системе PolyAnalyst существует несколько методов сокращения количества соответствий между значениями. Например, перед заменой категорий можно использовать узел Агрегирование для объединения значений в группы. Вы также можете несколько раз использовать узел Фильтрация строк для ограничения количества различных значений в исходной таблице, объединив их в подмножества, а затем использовать отдельно узел Замена категорий для каждого подмножества, чтобы назначить соответствия уникальным для каждого подмножества значениям, после чего использовать узел Конкатенация, чтобы объединить подмножества после применения замен.