histogram
values — выражение, которое возвращает входные значения.
Параметры
number_of_bins — Верхний предел количества интервалов в гистограмме. Функция автоматически вычисляет количество интервалов. Она пытается достичь указанного количества интервалов, но, если это не удается, использует меньшее количество.
Возвращаемые значения
-
Array из Tuple следующего формата:
lower— Нижняя граница интервала.upper— Верхняя граница интервала.height— Вычисленная высота интервала.
sequenceMatch
События, происходящие в одну и ту же секунду, могут располагаться в последовательности в неопределённом порядке, что может повлиять на результат.
-
timestamp— Столбец, содержащий временные данные. Обычно используются типы данныхDateиDateTime. Также можно использовать любой из поддерживаемых типов данных UInt. -
cond1,cond2— Условия, описывающие цепочку событий. Тип данных:UInt8. Можно передать до 32 аргументов-условий. Функция учитывает только события, описанные этими условиями. Если последовательность содержит данные, не описанные ни одним условием, функция их пропускает.
pattern— Строка шаблона регулярного выражения. См. Синтаксис шаблона.
- 1, если шаблон регулярного выражения совпал.
- 0, если шаблон регулярного выражения не совпал.
UInt8.
Синтаксис шаблона
-
(?N)— Соответствует аргументу условия с номеромN. Условия нумеруются в диапазоне[1, 32]. Например,(?1)соответствует аргументу, переданному в параметрcond1. -
.*— Соответствует любому количеству событий. Для сопоставления с этим элементом шаблона условные аргументы не требуются. -
(?t operator value)— Задаёт интервал в секундах, который должен разделять два события. Например, шаблон(?1)(?t>1800)(?2)соответствует событиям, между которыми проходит более 1800 секунд. Между этими событиями может находиться произвольное количество любых событий. Можно использовать операторы>=,>,<,<=,==.
t:
sequenceCount
События, происходящие в одну и ту же секунду, могут располагаться в последовательности в неопределённом порядке, что влияет на результат.
-
timestamp— Столбец, содержащий временные данные. Обычно используются типы данныхDateиDateTime. Также можно использовать любой из поддерживаемых типов данных UInt. -
cond1,cond2— Условия, описывающие цепочку событий. Тип данных:UInt8. Можно передать до 32 аргументов-условий. Функция учитывает только события, описанные в этих условиях. Если последовательность содержит данные, не описанные ни одним условием, функция их пропускает.
pattern— Строка шаблона регулярного выражения. См. Синтаксис шаблона.
- Количество неперекрывающихся цепочек событий, соответствующих шаблону регулярного выражения.
UInt64.
Пример
Рассмотрим данные в таблице t:
sequenceMatchEvents
События, происходящие в одну и ту же секунду, могут располагаться в последовательности в неопределённом порядке, что влияет на результат.
-
timestamp— Столбец, содержащий временные данные. Обычно используются типы данныхDateиDateTime. Также можно использовать любой из поддерживаемых типов данных UInt. -
cond1,cond2— Условия, описывающие цепочку событий. Тип данных:UInt8. Можно передать до 32 аргументов-условий. Функция учитывает только события, описанные этими условиями. Если последовательность содержит данные, не описанные ни одним условием, функция их пропускает.
pattern— Строка шаблона регулярного выражения. См. Синтаксис шаблона.
- Массив временных меток для совпавших аргументов-условий (?N) из цепочки событий. Позиция в массиве соответствует позиции аргумента-условия в шаблоне регулярного выражения.
t:
windowFunnel
- Функция ищет данные, которые удовлетворяют первому условию в цепочке, и устанавливает счётчик событий в 1. В этот момент начинается скользящее окно.
- Если события из цепочки происходят последовательно в пределах окна, счётчик увеличивается. Если последовательность событий нарушается, счётчик не увеличивается.
- Если данные содержат несколько цепочек событий с разной степенью завершённости, функция выводит только длину самой длинной цепочки.
timestamp— Имя столбца, содержащего временную метку. Поддерживаемые типы данных: Date, DateTime и другие беззнаковые целочисленные типы (обратите внимание: хотяtimestampподдерживает типUInt64, его значение не может превышать максимальное значениеInt64, то есть 2^63 - 1).cond— Условия или данные, описывающие цепочку событий. UInt8.
window— Длина скользящего окна, то есть временной интервал между первым и последним условием. Единица измеренияwindowзависит от самогоtimestampи может различаться. Определяется с помощью выраженияtimestamp of cond1 <= timestamp of cond2 <= ... <= timestamp of condN <= timestamp of cond1 + window.mode— Необязательный аргумент. Можно задать один или несколько режимов.'strict_deduplication'— Если для последовательности событий выполняется одно и то же условие, такое повторяющееся событие прерывает дальнейшую обработку. Примечание: режим может работать неожиданным образом, если для одного и того же события выполняются несколько условий.'strict_order'— Не допускает появления других событий между нужными. Например, в случаеA->B->D->CпоискA->B->Cпрекращается наD, и максимальный уровень события равен 2.'strict_increase'— Применяет условия только к событиям со строго возрастающими временными метками.'strict_once'— Учитывает каждое событие в цепочке только один раз, даже если оно удовлетворяет условию несколько раз.'allow_reentry'— Игнорирует события, нарушающие строгий порядок. Например, в случае A->A->B->C функция найдёт A->B->C, проигнорировав лишнее A, и максимальный уровень события будет равен 3.
Integer.
Пример
Определите, достаточно ли заданного периода времени, чтобы пользователь выбрал телефон и дважды купил его в интернет-магазине.
Задайте следующую цепочку событий:
- Пользователь вошёл в свою учётную запись в магазине (
eventID = 1003). - Пользователь ищет телефон (
eventID = 1007, product = 'phone'). - Пользователь оформил заказ (
eventID = 1009). - Пользователь повторно оформил заказ (
eventID = 1010).
user_id смог продвинуться по цепочке за период с января по февраль 2019 года.
Query
Response
allow_reentry работает с шаблонами повторного входа пользователей:
retention
UInt8, указывающих, было ли выполнено определённое условие для события.
В качестве аргумента можно указать любое условие (как в WHERE).
Условия, кроме первого, применяются попарно: результат для второго будет true, если первое и второе условия равны true, для третьего — если первое и третье условия равны true, и т. д.
Синтаксис
cond— Выражение, возвращающее результат типаUInt8(1 или 0).
- 1 — Условие для события выполнено.
- 0 — Условие для события не выполнено.
UInt8.
Пример
Рассмотрим пример вычисления функции retention для определения посещаемости сайта.
1. Создайте таблицу для иллюстрации примера.
Query
Query
Response
uid с помощью функции retention.
Query
Response
Query
Response
r1- количество уникальных посетителей, посетивших сайт 2020-01-01 (условиеcond1).r2- количество уникальных посетителей, посетивших сайт в определённый период времени между 2020-01-01 и 2020-01-02 (условияcond1иcond2).r3- количество уникальных посетителей, посетивших сайт в определённый период времени 2020-01-01 и 2020-01-03 (условияcond1иcond3).
uniqUpTo(N)(x)
N. Если число различных значений аргумента превышает N, функция возвращает N + 1, в противном случае вычисляется точное значение.
Рекомендуется использовать при небольших значениях N, до 10. Максимальное значение N — 100.
Для состояния агрегатной функции эта функция использует объём памяти, равный 1 + N * размер одного значения в байтах.
При работе со строками функция хранит некриптографический хеш размером 8 байт; для строк вычисление является приближённым.
Например, у вас может быть таблица, в которой регистрируется каждый поисковый запрос, выполненный пользователями на вашем сайте. Каждая строка в таблице представляет собой один поисковый запрос, со столбцами для ID пользователя, поискового запроса и временной метки запроса. Вы можете использовать uniqUpTo для создания отчёта, который показывает только те ключевые слова, по которым было не менее 5 уникальных пользователей.
uniqUpTo(4)(UserID) вычисляет число уникальных значений UserID для каждого SearchPhrase, но считает только до 4 уникальных значений. Если для какого-либо SearchPhrase уникальных значений UserID больше 4, функция возвращает 5 (4 + 1). Затем условие HAVING отфильтровывает значения SearchPhrase, для которых число уникальных значений UserID меньше 5. В результате вы получите список поисковых ключевых слов, которые использовали как минимум 5 уникальных пользователей.
sumMapFiltered
sumMapFiltered(keys_to_keep)(keys, values)
Параметры
keys_to_keep: Array ключей, используемый для фильтрации.keys: Array ключей.values: Array значений.
- Возвращает кортеж из двух массивов: ключи в отсортированном порядке и значения, просуммированные для соответствующих ключей.
Query
Query
Response
sumMapFilteredWithOverflow
sumMapFilteredWithOverflow(keys_to_keep)(keys, values)
Параметры
Возвращаемое значение
- Возвращает кортеж из двух массивов: ключи в отсортированном порядке и значения, просуммированные для соответствующих ключей.
sum_map, вставляем в нее несколько строк данных, а затем используем sumMapFilteredWithOverflow, sumMapFiltered и функцию toTypeName, чтобы сравнить результат. Поскольку в созданной таблице requests имел тип UInt8, функция sumMapFiltered повысила тип суммируемых значений до UInt64, чтобы избежать переполнения, тогда как sumMapFilteredWithOverflow сохранила тип UInt8, которого недостаточно для хранения результата, — то есть произошло переполнение.
Query
Query
Query
Response
Response
sequenceNextNode
SET allow_experimental_funnel_functions = 1.
Синтаксис
-
direction— Используется для выбора направления.- forward — Вперед.
- backward — Назад.
-
base— Используется для задания базовой точки.- head — Установить базовую точку на первое событие.
- tail — Установить базовую точку на последнее событие.
- first_match — Установить базовую точку на первое совпадение
event1. - last_match — Установить базовую точку на последнее совпадение
event1.
timestamp— Имя столбца, содержащего временную метку. Поддерживаемые типы данных: Date, DateTime и другие беззнаковые целочисленные типы.event_column— Имя столбца, содержащего значение следующего возвращаемого события. Поддерживаемые типы данных: String и Nullable(String).base_condition— Условие, которому должна удовлетворять базовая точка.event1,event2, … — Условия, описывающие цепочку событий. UInt8.
event_column[next_index]— Если шаблон совпал и следующее значение существует.NULL- Если шаблон не совпал или следующего значения не существует.
Query
Response
forward и head
backward и tail
forward и first_match
backward и last_match
base_condition