when

Назначение

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

Логика функции аналогична следующему выражению: если результат первого выражения истинный, то возвращается первое значение; в противном случае, если результат второго выражения истинный, возвращается второе значение;в противном случае, если результат третьего выражения истинный, то возвращается третье значение, и т.д.

Синтаксис

when(выражение,если1,то1,…​,иначе)

Аргументы

Функция требует наличия минимум трех аргументов:

  1. Первый аргумент должен быть значением или выражением, которое возвращает значение.

  2. Второй аргумент должен быть значением.

  3. Третий аргумент также должен быть значением.

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

Обратите внимание, что в примере синтаксиса второй аргумент называется аргументом события. В функции when можно иметь любое число аргументов события (как минимум один). Для каждого события нужно иметь соответствующее значение возврата. Например, в вышеприведенном синтаксисе значение 1 соответствует событию1, а значениеN соответствует событиюN.

Последним аргументом функции when является аргумент "иначе". Это возвращаемое значение, которое возвращается в том случае, когда ни один из аргументов события не оказывается эквивалентным аргументу выражения (первому аргументу).

Функция when работает путем сравнения первого аргумента (выражения) с каждым из данных аргументов события. Аргументы события оцениваются слева направо. Сравнение проводится относительно равенства. Если выражение оказывается эквивалентными одному из событий, то возвращается соответствующее значение этого события.

Возвращаемое значение

Функция возвращает результат события - значение "истина".

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

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

Примеры

when([исходная колонка],0,"ноль",1,"один", "два").

Когда PolyAnalyst оценивает это выражение построчно, он проверяет значение [исходная колонка] в сравнении с каждым регистром. В данном случае регистры - 0, 1 и 2.

  • если значение исходной колонки равно 0, то строковое значение ноль является результатом функции when

  • иначе, если значение исходной колонки равно 1, то возвращаемое значение - один.

  • если значение исходной колонки равно 2, то возвращаемое значение - два.

По сути в данном примере мы конвертируем некую численную колонку (в данном случае это колонка, названная "исходная колонка") в строкоподобное представление. Мы конвертируем 0 в ноль, 1 в один, 2 в два.

Сравните этот пример с написанием похожего выражения составных if-выражений:

if([исходная колонка]=0,"ноль", if([исходная колонка]=1,"один", if([исходная колонка]=2,"два"))).

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