8 800 555-89-02
Войти
Infomaximum/Документация
12.2022

Функции для формул

В системе поддерживаются разные виды функций. Для создания пользовательского показателя:

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

If – условное выражение.

  • Аргументы:
    • cond – условие, которое может быть равно 0 или нет;
    • then – возвращается результат выражения, если условие cond истинно;
    • else – возвращается результат выражения, если условие cond ложно.

distinct – если указано DISTINCT, то из всех множеств полностью совпадающих строк результата будет оставляться только одна строка.

Список функций ClickHouse

Агрегатные функции

ФункцияОписаниеПример
any(x)Выбирает первое попавшееся значение xany("case_table"."duration")
argMax(arg, val)Вычисляет значение arg при максимальном значении valargMax("case_table"."duration", "case_table"."duration_type")
argMin(arg, val)Вычисляет значение arg при минимальном значении valargMin("case_table"."duration", "case_table"."duration_type")
argMaxIf(arg, val, condition)Вычисляет значение arg при максимальном значении val с условием -ifargMaxIf("case_table"."duration", "case_table"."duration_type", "case_table"."case_crm_type_lvl2"='Отсутствие услуги телефонии')
argMinIf(arg, val, condition)Вычисляет значение arg при минимальном значении val с условием -ifargMinIf("case_table"."duration", "case_table"."duration_type", "case_table"."case_crm_type_lvl2"='Отсутствие услуги телефонии')
avg(x)Вычисляет среднее значение. Работает только для чисел. Результат всегда Float64avg("case_table"."duration")
avgIf(x, condition)Вычисляет среднее значение с условием -if. Работает только для чисел. Результат всегда Float64avgIf("case_table"."duration", "case_table"."case_crm_type_lvl2"='Отсутствие соединения ШПД')
count(x)Возвращает количество записейcount("case_table"."case_crm_type_lvl3")
countIf(x, condition)Возвращает количество записей с учетом выполнения условияcountIf("case_table"."dir_tech_def", "case_table"."dir_tech_def"='PON')
max(x)Вычисляет максимумmax("case_table"."duration")
maxIf(x, condition)Вычисляет максимум с условием -ifmaxIf("case_table"."duration", "case_table"."rf_name"='ТОМСКИЙ ФИЛИАЛ')
min(x)Вычисляет минимумmin("case_table"."duration")
minIf(x, condition)Вычисляет минимум с условием -ifminIf("case_table"."duration", "case_table"."rf_name"='ТОМСКИЙ ФИЛИАЛ')
median(x)Вычисляет медиануmedian("case_table"."duration")
medianIf(x, condition)Вычисляет медиану с условием -ifmedianIf("case_table"."duration", "case_table"."rf_name"='ИРКУТСКИЙ ФИЛИАЛ')
quantile(level)(x)Вычисляет квантиль уровня level – значение, которое заданная случайная величина не превышает с фиксированной вероятностью. Для этого все переданные значения складываются в массив, который затем частично сортируетсяquantile(0.5)("case_table"."duration")
sum(x)Вычисляет сумму. Работает только для чиселsum(100)
sumIf(x, condition)Вычисляет сумму с условием -if. Работает только для чиселsumIf("case_table"."duration", "case_table"."duration_type"='1 - 5 дней')
quantileIf(level)(x, condition)Вычисляет квантиль уровня level точно с условием -ifquantileIf(0.5)("case_table"."duration", "case_table"."rf_name"='ТОМСКИЙ ФИЛИАЛ')
stddevPop (x)Рассчитывает стандартное отклонениеstddevPop("case_table"."duration")

Последовательности

ФункцияОписание
sequenceCount(pattern)(time, cond1, cond2, …)Вычисляет количество цепочек событий, соответствующих шаблону. Функция обнаруживает только непересекающиеся цепочки событий. Она начинает искать следующую цепочку только после того, как полностью совпала текущая цепочка событий
sequenceMatch(pattern)(timestamp, cond1, cond2, …)Проверяет, содержит ли последовательность событий цепочку, которая соответствует указанному шаблону
retention(cond1, cond2, …, cond32)Показывает, насколько выдерживаются те или иные условия. Например, удержание динамики/уровня посещаемости сайта. Функция принимает набор логических условий от 1 до 32 и применяет их к заданному набору данных

Функции для работы с датами и временем

ФункцияОписаниеПример
today()Принимает ноль аргументов и возвращает текущую дату на один из моментов выполнения запросаtoday()
toDate(х)Преобразует дату-с-временем в датуtoDate('2022-10-31 17:00:00')
toDayOfMonth(x)Переводит дату или дату-с-временем в число типа UInt8, содержащее номер дня в месяце (1-31)toDayOfMonth(toDate('2022-10-31'))
toDayOfWeek(x)Переводит дату или дату-с-временем в число типа UInt8, содержащее номер дня в неделе (понедельник — 1, воскресенье — 7)toDayOfWeek(toDate('2022-10-31 17:00:00'))
toHour(x)Переводит дату-с-временем в число типа UInt8, содержащее номер часа в сутках (0-23). Округляет дату-с-временем вниз до начала минутыtoHour(now())
toMonth(x)Переводит дату или дату-с-временем в число типа UInt8, содержащее номер месяца (1-12)toMonth(toDate('2022-10-31 17:10:00'))
toYear(x)Переводит дату или дату-с-временем в число типа UInt16, содержащее номер года (AD)toYear(toDate('2022-10-31 17:10:00'))
toMonday(x)Округляет дату или дату-с-временем вниз до ближайшего понедельника. Возвращается датаtoMonday(toDate('2022-10-30 17:10:00'))
toStartOfDay(x)Округляет дату-с-временем вниз до начала дня. Возвращается дата-с-временемtoStartOfDay(toDate('2022-10-30 17:10:00'))
now(timezone)timezone — часовой пояс для возвращаемого значенияnow ('Europe/Moscow')
now()Возвращает текущую дату и времяnow ()
parseDateTimeBestEffortOrZeroВремя в загруженных таблицах в произвольном форматеparseDateTimeBestEffortOrZero('2022-10-31 18:00:00-5:00')
parseDateTime64BestEffortOrZeroВремя в загруженных таблицах в произвольном форматеparseDateTime64BestEffortOrZero('2022-10-31 18:00:00-5:00')
toUnixTimestamp, toUnixTimestamp64MilliДля преобразования в секунды и миллисекундыПример: toUnixTimestamp('2022-10-31 08:07:47')
date_trunc(time_unit, x)Для усечения отметки времени до нужной частиdate_trunc('hour', now())
date_add(time_unit, value, x)Для прибавления произвольной части к отметке времениdate_add(day, 10, toDate('2022-10-31'))
dateDiff(time_unit, date1, date2)Для вычитания одной отметки времени из другойdateDiff('day', toDateTime('2022-10-21 01:00:00'), toDateTime('2022-10-31 19:00:00'))
date_sub(time_unit, value, x)Для вычитания произвольной части из отметки времениdate_sub(day, 10, toDate('2022-10-31'))
formatDateTime(x, format)Для вывода отметки времени в произвольном форматеformatDateTime(toDate(2022-10-31), ' %D)
toInterval(Year — Quarter — Month — Week — Day — Hour — Minute — Second)Для операций со временемtoDate('2022-10-31')+toIntervalWeek(1)

Математические функции

ФункцияОписаниеПример
intDiv(x, y)Целочисленное делениеIntDiv(34320, 156)
modulo(x, y)Остаток от деленияmodulo(1789, 2)
sqrt(x)Извлечение квадратного корняsqrt(1089)
pow(x, y)Возведение в степеньpow(14, 7)
floor(x [, n)Округление внизfloor(1278.446, 1)
ceil(x [, n])Округление вверхceil(1278.544, 1)
abs(x)Модуль числаabs (325 / 76)
round(x[, N])Округляет значениеround(1278.546, 1)

Строковые функции

ФункцияОписаниеПример
lowerUTF8(s)Перевод строки в нижний регистрlowerUTF8("case_table"."dir_services_def")
upperUTF8(s)Перевод строки в верхний регистрupperUTF8("case_table"."dir_services_def")
substringUTF8(s, offset, length)Извлечение части строкиsubstringUTF8("case_table"."mrf_name", 1, 100000)
trim(s)Очистка строки от лишних пробеловtrim("case_table"."rf_name")
match(s, pattern)Поиск паттерна в строкеmatch("case_table"."rf_name", '\+')
extract(s, pattern)Извлечение паттерна из строкиextract("case_table"."mrf_name", '\+')
replaceRegexpOne(s, pattern, replacement) или replaceRegexpAll(s, pattern, replacement)Замена паттерна в строкеreplaceRegexpOne("case_table"."start", '\.', '\-')
arrayStringConcat(arr, [separator])Соединение элементов массива в строку-
domainWithoutWWW(url)Извлечение домена из URLdomainWithoutWWW('https://infomaximum.com/business-intelligence/')
ilike(s, pattern)Поиск шаблона без учёта регистраilike("case_table"."rf_name", '\ФИЛИАЛ')
concat(s1,s2..)Склеивает строки, перечисленные в аргументах, без разделителейconcat("case_table"."mrf_name", "case_table"."rf_name")
like(haystack, pattern)Проверка строки на соответствие простому регулярному выражению. Регулярное выражение может содержать метасимволы «%» и «_»ilike("case_table"."mrf_name", '\_')

Прочие

ФункцияОписаниеПример
if(cond, then, else)cond должно иметь тип UInt8, а then и else должны иметь тип, для которого есть наименьший общий тип-
multiIf(cond_1, then_1, cond_2, then_2…else)Позволяет более компактно записать оператор CASE в запросе-
toInt32(expr)Преобразует входное значение к типу Int. Возвращает значение типа Int32toInt32("activity"."name")
toInt64(expr)Преобразует входное значение к типу Int. Возвращает значение типа Int64toInt64("activity"."name")
toString(x)Функции преобразования между числами, строками (но не фиксированными строками), датами и датами-с-временем. Все функции принимают один аргументtoString(now())
length(x)Возвращает длину строки в байтах. Тип результата — UInt64. Функция также работает для массивовlength("case_table"."mrf_name")
isNan(x)Принимает Float32 или Float64 и возвращает UInt8, равный 1, если аргумент является NaN, иначе 0isNaN("ext_activity"."balance")
CRC32(x)Используется для обезличивания данных вместе с hexCRC32("case_table"."mrf_name")
hex(x)Используется для обезличивания данных вместе с CRC32hex("case_table"."mrf_name")
isNull(x)Проверка на NULLisNull("case_table"."rf_name")
coalesce(x, …)Поиск первого не NULLcoalesce("case_table"."mrf_name", "case_table"."rf_name")

Собственные функции Proceset

Последовательности

ФункцияОписаниеПример
begin(column/variable)Начало перехода, на вход принимает название колонки (используются только для показателя перехода)avg(end("case_table"."finish")-begin("case_table"."start"))
end(column/variable)Конец перехода (используются только для показателя перехода)avg(end("case_table"."finish")-begin("case_table"."start"))
variant(event_name, event_time)Возвращает сценарий выполнения процесса как строкуvariant("case_table"."case_id", "case_table"."duration")

Поддержка синтаксиса

  • Поддержка конкатенации (объединение нескольких строк в одну) через «||»;
  • Поддержка тернарного оператора (оператор с тремя аргументами. Первый аргумент — это условие. Если оно истинно (true), оператор вернёт второй аргумент. В ином случае он вернёт третий аргумент. Оператор проверяет условие, а затем присваивает переменной первое или второе выражение в зависимости от истинности этого условия).

Поддержка не отображается, но осуществляется.

Предыдущая
Редактор формул
Следующая
Настройки доступа к дашбордам
8 (800) 555-89-028 (495) 150-31-45team@infomaximum.com
Для бизнесаПродуктРешенияКейсыТехнологии
© 2010–2023. ООО «Инфомаксимум»Политика обработки персональных данных
Мы используем файлы cookies, чтобы сайт был лучше для вас.