Перейти к основному содержимому

Логические функции

Логические функции

Функция between(col, interval)

Функция between c двумя аргументами принимает на вход столбец col и интервал interval и возвращает SQL условие between. В качестве аргумента col могут использоваться LPE-выражения.

Функция between(col, start, end)

Функция between c тремя аргументами принимает на вход столбец col, дату начала интервала start, дату окончания интервала end и возвращает SQL условие between. В качестве аргумента col могут использоваться LPE-выражения.

Операторы = и !=

Для сравнения значений на равенство можно использовать операторы = и !=. При этом, в отличие от операторов SQL, допускается сравнение со списком значений. В этом случае при конвертации в SQL будут использованы операторы IN и NOT IN.

Примеры:

col1 = [1,null,3]
v_rel_pp != [0,1,2,null]

При этом будут сгенерированы такие SQL выражения:

col1 IN (1,3) OR сol1 IS NULL
v_rel_pp NOT IN (0, 1, 2) AND v_rel_pp IS NOT NULL

Операторы сравнения <, >, <=, >=

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

к сведению

Операторы сравнения, как и операторы = и !=, редко используются сами по себе, но они часто используются в выражениях для функций if, countIf и подобных, где требуется сформулировать условие.

Оператор and

Выполняет логическое соединение двух выражений по условию логического И.

Пример:

(col1 + col2) > 0 and (col1/col2) < 1

if(cond0, expr0, … , condn, exprn) – Функция if с четным числом аргументов

Функция if с чётным числом аргументов может иметь несколько условий cond (нечётные аргументы) и соответствующие им значения expr (чётные аргументы). При выполнении условия cond возвращается соответствующее значение expr, а если условие не выполнено, то функция if переходит к вычислению следующего условия. Функция if c чётным количеством аргументов работает как функция IFS в MS Excel.

if(cond0, expr0, … , condn, exprn, other) – Функция if с нечетным числом аргументов

Функция if с нечётным числом аргументов работает так же, как и функция if c чётным числом аргументов. Однако, если ни одно из указанных условий cond не выполнено, то возвращается значение other — последний аргумент функции if.

Примеры:

if(min(price) >= 102, max(sales_amount), min(sales_amount)):ma
if(min(price) >= 102, if(min(sales_amount) < 10, max(sales_amount), min(sales_amount)), avg(sales_amount)):ma
подсказка

Для установки нескольких условий можно использовать вложенные if конструкции.

Оператор not

Выполняет логическое отрицание.

Пример:

not col1 > 1 and not col1 < 0

Оператор or

Выполняет логическое соединение двух выражений по условию логического ИЛИ.

Пример:

(col1 + col2) > 0 or (col1/col2) < 1

Регулярные выражения. Операторы для поиска подстрок в SQL.

  • Оператор ~ используется для регистрозависимого поиска.

Пример:

measures: [
"if(productname~'^[A,z]',productname):pr_n",
'productname:productname',
],

В этом случае в столбике будут выведены productname, которые начинаются на ‘A’ и ‘z’, остальные ячейки останутся пустыми (заменятся на null).
^ указывает на начало строки.

filters: {
'': [
'~',
[
'column',
'productname',
],
'^[A-С,b]',
],
productname: true,
},

Здесь будут выводиться productname, которые начинаются на ‘A’, ‘B’, ‘C’ и ‘b’.

  • Оператор ~* используется для нерегистрозависимого поиска.
 filters: {
'': [
'~*',
[
'column',
'productname',
],
'k$',
],
productname: true,
},

В примере выше будут показаны productname, которые заканчиваются на ‘k’ и ‘K’.
$ указывает на конец строки.

  • Оператор !~ используется для регистрозависимого поиска и учитывает результаты, которые не включают указанную подстроку.
 filters: {
'': [
'!~',
[
'column',
'country',
],
'nited',
],
productname: true,
},

В примере выше в результате фильтрации не будут учитываться country, в которых в любом месте строки есть подстрока ‘nited’.

  • Оператор !~* используется для нерегистрозависимого поиска и учитывает результаты, которые не включают указанную подстроку.
 filters: {
'': [
'!~*',
[
'column',
'country',
],
'n',
],
productname: true,
},

В примере выше в результате фильтрации не будут учитываться country, в которых в любом месте строки есть подстрока ‘n’, ‘N’.