Логические функции
Логические функции
Функция 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’.