Работа с макросами
Использование макросов в выражениях
Чтобы использовать макрос в PDL- или SRL-выражении, наберите имя макроса в качестве первого аргумента функции макроса. Правила именования макроса такие же, как и правила составления имен колонок. Убедитесь, что в PDL-выражении вы используете макросы PDL, а в SRL-выражении – макросы SRL.
Для получения информации об использовании пользовательских аргументов с макросами обратитесь в техническую поддержку компании Мегапьютер.
Выполнение узлов с выражениями, содержащими макросы
PolyAnalyst не выполняет автоматически заново тот узел, который содержит выражение, которое ссылается на макрос, при каждом изменении этого макроса. Вам нужно самостоятельно заново выполнять узлы, которые ссылаются на макрос, каждый раз, когда вы изменяете этот макрос.
Мы рекомендуем вам всегда заново выполнять узлы сразу после редактирования макросов, чтобы избежать конфликтных ситуаций, при которых узел производит неожиданные результаты, используя предыдущую версию макроса, которую вы уже успели отредактировать.
В PDL имеются функции macro() и var(), которые позволяют вам использовать соответственно макросы и переменные в ваших PDL-выражениях. Эти типы функций часто используются для сокращения ваших поисковых запросов.
Макросы и переменные могут использоваться при решении ряда задач. В частности, использование макросов и переменных упрощает повторное использование компонентов поисковых запросов, которые вы и ваша команда часто используют в ходе анализа. Более того, поскольку выражения PDL, написанные в таксономии, иногда могут достигать больших размеров, использование макросов и переменных помогает сжать выражения до более читаемого формата. Это позволяет использовать несколько выражений (и легко им управлять) в более крупных таксономиях.
Макросы и переменные в проектах автоматически экспортируются вместе с самим проектом. Макросы сервера и пользователя автоматически экспортируются только в том случае, когда пользователь определяет это в настройках. Для этого в настройках Аналитического клиента необходимо выбрать вкладку Настройки проекта, в списке опций слева выбрать пункт Выполнение.

Пункт меню Если макрос/переменная отсутствует, то содержит несколько опций. Вы можете использовать макросы/переменные пользователя или сервера и клонировать макросы/переменные пользователя или сервера, выбрав соответствующий пункт меню.
Функция macro()
Функции PDL macro() или SRL macro() позволяют использовать макросы в выражениях и сокращать поисковые запросы.
Синтаксис функции macro(имя,аргументы). Вы можете использовать пробелы между аргументами, например macro (x, y, z). В определении макроса можно использовать различное число аргументов (через многоточие).
Рассмотрим пример работы функции macro. Допустим, имеется макрос со следующими параметрами:
Здесь "dog" отображается в первом аргументе (x), "cat" – во втором аргументе (y), а оставшиеся аргументы заменяют z.
Замещение колонок по умолчанию переменными и макросами
Выражения с макросами и переменными применяются к колонке на основе того, как именно используется макрос или переменная.
Однако, вы можете изменить части выражения макроса и применять их к разным колонкам внутри исходного массива данных. По умолчанию, каждый компонент PDL-выражения в макросе применяется к контекстуально-определенной колонке. Это обозначается использованием символа @, после которого следует имя колонки. Если имя колонки содержит пробелы или прочие специальные символы, то имя колонки нужно заключить в [квадратные скобки]. Если пробелом или специальных символов нет, то использование квадратных скобок не обязательно. Например:
Если выражение не предназначено для применения к колонкам, за исключением контекстно-определенных колонок, то нет необходимости явно добавлять модификатор @имя колонки. Данный модификатор добавляется неявно. В действительности его следует добавлять только тогда, когда вы планируете отклониться от стандартного поведения или применить выражение полностью или частично к некоторой колонке, за исключением контекстно определенной колонки по умолчанию.
Модификатор @колонка распределяется по операндам PDL-выражения.
При определении колонок, к которым применяются части PDL-выражений, необходимо учитывать несколько моментов:
-
ссылки на колонки применяются только к тем колонкам, ссылки на которые отсутствуют;
-
ссылки на колонки не заменяют те колонки, ссылки на которые присутствуют.
Другими словами, наблюдается неоднозначное поведение относительно того, как модификатор колонки, который применяется к полному выражению, применяется к его частям. В особенности наблюдается некоторая неоднозначность в том, что происходит, если вы работаете с таким выражением, как например (слово1@колонка1)@колонка2. Какую колонку нужно найти? Поскольку слово1 явно ссылается на колонку1, используется колонка1, а не колонка2. Другими словами, в этом случае колонка1 имеет приоритет над колонкой 1. Выражение (слово1)@колонка2 эквивалентно выражению слово1@колонка2 после распределения, поскольку на слово 1 ссылки не было (не было явного квалификатора/модификатора, который определял колонку как искомую). Например: