Поиск и исправление ошибок в SRL

Ошибки синтаксиса SRL отображаются тогда, когда PolyAnalyst не может определить синтаксис вашего запроса.

Символы или последовательность символов после слова "at" в ошибке обозначают место, где PolyAnalyst впервые столкнулся с проблемой.

Проблемный символ также можно определить по номеру строки и колонки. Заворачивание текста не влияет на номер строки; это почти всегда 1, даже если ошибка произошла во второй строке. Номер строки будет другим, если вставить в выражение обрыв строки с помощью клавиш CTRL+Enter и ошибка появится на следующей строке.

Слово "Col" - сокращенное от column (колонка). Это смещение (число предшествующих символов) внутри текущей строки символа после слова "at" в сообщении об ошибке. Это еще один способ обнаружить то место, где PolyAnalyst впервые столкнулся с проблемой внутри выражения.

Иногда PolyAnalyst видит ошибку синтаксиса не там, где она в действительности допущена. Например, если мы наберем название [Моя колонка], опустив при этом закрывающую квадратную скобку, PolyAnalyst выдаст сообщение о том, что ошибка допущена около открывающей скобки, поскольку закрывающая не будет найдена.

Эта ошибка может быть вызвана несколькими факторами. Вот некоторые из них:

  • Неверное использование пробела - не забудьте отделить операторы от значений с помощью хотя бы одного пробела

  • Неверное использование квадратных скобок при указании колонки

  • Набор буквенного значения при неверном использовании кавычек

  • Отсутствие круглых скобок или лишние круглые скобки

  • Ошибка в названии функции

  • Использование лишней запятой или пропущенная запятая при указании аргументов функции

  • Неверное использование оператора, например, набор 1 + 2 без двойки. Или набор 1 + + 2, т.е. пропуск среднего числа или дублирование оператора

PolyAnalyst периодически принимает неверный синтаксис SRL

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

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

  • 1,2 - запятая и число 2 пропускаются, возвращаемое значение 1 (только если 2 - последняя часть выражения).

  • (1 + 2)) - лишняя закрывающая скобка пропускается (только если это - последняя часть выражения)

  • "собака"" - лишние кавычки пропускаются (только если это - последняя часть выражения)

Поиск и исправление ошибок типа "колонка не найдена"

При наборе строки, например "abc", если заключить строку в двойные кавычки, все символы внутри этих кавычек будут рассматриваться как литеральные значения. Относительно того, что находится вне двойных кавычек, PolyAnalyst полагает, что вы пытаетесь сослаться на значение в колонке таблицы. Чтобы оценить это значение, можно набрать имя колонки. Если в имени колонки есть пробел, то нужно заключить название колонки в квадратные скобки, чтобы система понимала, что вы ссылаетесь на одну колонку, например [Моя колонка].

Такая ошибка появляется тогда, когда вы ссылаетесь на имя колонки в своем выражении, но эту колонку невозможно найти в списке существующих колонок в таблице данных. Возможно вы неправильно ввели имя колонки, либо допустили ошибку в названии. Имена колонок учитывают регистр внутри SRL-выражений, следовательно вы могли допустить ошибку в регистре. Чтобы определить, существует ли колонка в узле, например в узле Фильтрации строк или Производные колонки, необходимо соединение с предшествующим узлом, причем этот предшествующий узел должен находиться в состоянии, в котором известны выходные колонки (например, настроенный узел источника данных, или узел источника данных, который завершил выполнение). Если предшествующий узел находится в состоянии, при котором выходные колонки неизвестны для соединенных с ним узлов, то узел Фильтрация строк, узел Производные колонки, а также все узлы, в которых оцениваются SRL-выражения, будут отображать такую ошибку, поскольку в этом случае отсутствует список доступных колонок для проверки существования колонки в данном выражении.

Поиск и исправление ошибок типа "неверное число аргументов"

Данная ошибка отображается тогда, когда в функции используется неверное число аргументов.

Функция abs принимает один аргумент числового типа. Если вы включаете в аргументы два числа, например abs (3, 4), то вы включаете неверное число аргументов, в результате чего система выдает ошибку.

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

Найдите такие функции, как abs(3 4), в котором между двумя значениями используется пробел. Ищите такие функции, как abs(3,), где используется лишняя запятая (обратите внимание, что после этой запятой по сути находится отсутствующее значение, что означает присутствие двух аргументов, в то время как функция abs принимает только один аргумент).

Поиск и исправление ошибок типа "несоответствие типов аргументов"

Эта ошибка отображается тогда, когда PolyAnalyst определяет использование функции внутри выражения и оценивает ее аргументы, а также определяет соответствие типа данных одного или нескольких аргументов.

Например, функция abs в SRL принимает число и возвращает абсолютное значение числа. Если вместо числа вы включаете в выражение булево или строковое значение, то вы включаете несоответствующий тип данных в выражение и получаете сообщение об ошибке.

В этом случае название функции обозначается как "X", например "abs": типы аргументов различаются.