Другие функции
hostName
Возвращает имя хоста, на котором была выполнена эта функция. Если функция выполняется на удаленном сервере (распределенная обработка), возвращается имя удаленного сервера. Если функция выполняется в контексте распределенной таблицы, она генерирует нормальную колонку со значениями, относящимися к каждой шард. В противном случае она выдает постоянное значение.
Синтаксис
Возвращаемое значение
- Имя хоста. Строка.
getMacro
Возвращает именованное значение из раздела макросов конфигурации сервера.
Синтаксис
Аргументы
name
— Имя макроса, чтобы извлечь из раздела<macros>
. Строка.
Возвращаемое значение
- Значение указанного макроса. Строка.
Пример
Пример секции <macros>
в файле конфигурации сервера:
Запрос:
Результат:
То же значение можно получить следующим образом:
fqdn
Возвращает полное доменное имя сервера ClickHouse.
Синтаксис
Псевдонимы: fullHostName
, FQDN
.
Возвращаемое значение
- Строка с полным доменным именем. Строка.
Пример
Результат:
basename
Извлекает окончание строки после последнего символа /
или \
. Эта функция часто используется для извлечения имени файла из пути.
Аргументы
expr
— Значение типа Строка. Обратные слэши должны быть экранированы.
Возвращаемое значение
Строка, содержащая:
- Окончание входной строки после последнего символа
/
или\
. Если входная строка заканчивается символом/
или\
(например,/
илиc:\
), функция возвращает пустую строку. - Оригинальная строка, если в ней нет символов
/
или\
.
Пример
Запрос:
Результат:
Запрос:
Результат:
Запрос:
Результат:
visibleWidth
Вычисляет приблизительную ширину при выводе значений в консоль в текстовом формате (разделенном табуляцией). Эта функция используется системой для реализации Pretty форматов.
NULL
представляется как строка, соответствующая NULL
в Pretty
форматах.
Синтаксис
Пример
Запрос:
Результат:
toTypeName
Возвращает имя типа переданного аргумента.
Если передан NULL
, функция возвращает тип Nullable(Nothing)
, который соответствует внутреннему представлению NULL
в ClickHouse.
Синтаксис
Аргументы
value
— Значение произвольного типа.
Возвращаемое значение
- Имя типа данных входного значения. Строка.
Пример
Запрос:
Результат:
blockSize
В ClickHouse запросы обрабатываются в блоках (фрагментах). Эта функция возвращает размер (количество строк) блока, на котором вызывается функция.
Синтаксис
Пример
Запрос:
Результат:
byteSize
Возвращает оценку не сжатого размера в байтах его аргументов в памяти.
Синтаксис
Аргументы
argument
— Значение.
Возвращаемое значение
- Оценка размера в байтах аргументов в памяти. UInt64.
Примеры
Для Строки аргументов функция возвращает длину строки + 8 (длина).
Запрос:
Результат:
Запрос:
Результат:
Если функция имеет несколько аргументов, функция накапливает их размеры в байтах.
Запрос:
Результат:
materialize
Преобразует константу в полноценную колонку, содержащую единичное значение. Полные колонки и константы представляются по-разному в памяти. Обычно функции выполняют различный код для нормальных и константных аргументов, хотя результат обычно должен быть одинаковым. Эта функция может быть использована для отладки этого поведения.
Синтаксис
Параметры
x
— Константа. Константа.
Возвращаемое значение
- Колонка, содержащая единичное значение
x
.
Пример
В следующем примере функция countMatches
ожидает константный второй аргумент. Это поведение можно отладить с помощью функции materialize
, чтобы преобразовать константу в полноценную колонку, проверяя, что функция выдает ошибку для неконстантного аргумента.
Запрос:
Результат:
ignore
Принимает произвольные аргументы и безусловно возвращает 0
. Аргумент все еще оценивается внутренне, что делает его полезным, например, для бенчмаркинга.
Синтаксис
Аргументы
- Принимает произвольное количество аргументов произвольного типа, включая
NULL
.
Возвращаемое значение
- Возвращает
0
.
Пример
Запрос:
Результат:
sleep
Используется для введения задержки или паузы в выполнении запроса. Он в первую очередь используется для тестирования и отладки.
Синтаксис
Аргументы
seconds
: UInt* или Float Количество секунд, на которое нужно приостановить выполнение запроса, максимум 3 секунды. Это может быть число с плавающей запятой для указания дробных секунд.
Возвращаемое значение
Эта функция не возвращает никакого значения.
Пример
Эта функция не возвращает никакого значения. Однако если вы выполните функцию с помощью clickhouse client
, вы увидите нечто подобное:
Этот запрос будет приостановлен на 2 секунды перед завершением. В это время никаких результатов возвращено не будет, и запрос будет казаться зависшим или неотзывчивым.
Детали реализации
Функция sleep()
обычно не используется в производственных средах, так как она может негативно повлиять на производительность запросов и отзывчивость системы. Тем не менее, она может быть полезной в следующих сценариях:
- Тестирование: При тестировании или бенчмаркинге ClickHouse вы можете захотеть смоделировать задержки или ввести паузы, чтобы наблюдать, как система ведет себя в определенных условиях.
- Отладка: Если вам нужно проверить состояние системы или выполнение запроса в конкретный момент времени, вы можете использовать
sleep()
, чтобы ввести паузу, позволяя вам проверить или собрать соответствующую информацию. - Симуляция: В некоторых случаях вы можете захотеть смоделировать сценарии из реальной жизни, где возникают задержки или паузы, такие как задержка сети или зависимости от внешних систем.
Важно использовать функцию sleep()
разумно и только когда это необходимо, так как это может негативно повлиять на общую производительность и отзывчивость вашей системы ClickHouse.
sleepEachRow
Приостанавливает выполнение запроса на указанное количество секунд для каждой строки в результирующем наборе.
Синтаксис
Аргументы
seconds
: UInt* или Float* Количество секунд, на которое нужно приостановить выполнение запроса для каждой строки в результирующем наборе, максимум 3 секунды. Это может быть число с плавающей запятой для указания дробных секунд.
Возвращаемое значение
Эта функция возвращает те же входные значения, которые она получает, не изменяя их.
Пример
Но вывод будет задержан с паузой в 0.5 секунды между каждой строкой.
Функция sleepEachRow()
в первую очередь используется для тестирования и отладки, аналогично функции sleep()
. Она позволяет вам смоделировать задержки или ввести паузы в обработку каждой строки, что может быть полезно в таких сценариях, как:
- Тестирование: При тестировании или бенчмаркинге производительности ClickHouse в определенных условиях вы можете использовать
sleepEachRow()
, чтобы смоделировать задержки или ввести паузы для каждой обрабатываемой строки. - Отладка: Если вам нужно проверить состояние системы или выполнение запроса для каждой обрабатываемой строки, вы можете использовать
sleepEachRow()
, чтобы ввести паузы, позволяя вам проверить или собрать соответствующую информацию. - Симуляция: В некоторых случаях вы можете захотеть смоделировать сценарии из реальной жизни, где возникают задержки или паузы для каждой обрабатываемой строки, например, при работе с внешними системами или задержками в сети.
Как и функция sleep()
, важно использовать sleepEachRow()
разумно и только когда это необходимо, так как это может значительно повлиять на общую производительность и отзывчивость вашей системы ClickHouse, особенно при работе с большими наборами результатов.
currentDatabase
Возвращает имя текущей базы данных. Полезно в параметрах движка таблицы запросов CREATE TABLE
, где вам нужно указать базу данных.
Синтаксис
Возвращаемое значение
- Возвращает имя текущей базы данных. Строка.
Пример
Запрос:
Результат:
currentUser
Возвращает имя текущего пользователя. В случае распределенного запроса возвращается имя пользователя, который инициировал запрос.
Синтаксис
Псевдонимы: user()
, USER()
, current_user()
. Псевдонимы нечувствительны к регистру.
Возвращаемые значения
- Имя текущего пользователя. Строка.
- В распределенных запросах — логин пользователя, который инициировал запрос. Строка.
Пример
Результат:
currentSchemas
Возвращает массив с одним элементом, содержащий имя текущей схемы базы данных.
Синтаксис
Псевдоним: current_schemas
.
Аргументы
bool
: Логическое значение. Bool.
Логический аргумент игнорируется. Он существует только для совместимости с реализацией этой функции в PostgreSQL.
Возвращаемые значения
- Возвращает массив с одним элементом, содержащим имя текущей базы данных.
Пример
Результат:
colorSRGBToOKLCH
Преобразует цвет, закодированный в цветовом пространстве sRGB, в перцептивно однородное цветовое пространство OKLCH.
Если любой из входных каналов находится вне диапазона [0...255]
или значение гаммы неположительное, поведение определяется реализацией.
OKLCH является цилиндрической версией цветового пространства OKLab. Его три координаты — L (светимость в диапазоне [0...1]
), C (хрома >= 0
) и H (оттенок в градусах [0...360]
)**.
OKLab/OKLCH разработаны для достижения перцептивной однородности, сохраняя простоту вычислений.
Синтаксис
Аргументы
tuple
- Три числовых значения R, G, B в диапазоне[0...255]
. Кортеж.gamma
- Необязательное числовое значение. Экспонента, которая используется для линейной обработки sRGB путем применения(x / 255)^gamma
к каждому каналуx
. По умолчанию равна2.2
.
Возвращаемые значения
- Кортеж (L, C, H) типа
Tuple(Float64, Float64, Float64)
.
Детали реализации
Преобразование состоит из трех этапов:
- sRGB в линейное sRGB
- Линейное sRGB в OKLab
- OKLab в OKLCH.
Гамма используется на первом этапе, при вычислении линейного sRGB. Для этого мы нормализуем значения sRGB и возводим их в степень гаммы. Обратите внимание, что это может потерять некоторую точность из-за округления с плавающей точкой. Этот выбор дизайна был сделан, чтобы быстро вычислять значения для различных гамм, поскольку разница незначительно изменяет восприятие цвета.
Два оставшихся этапа включают матричное умножение и тригонометрические преобразования соответственно. Для получения дополнительных сведений о математике смотрите статью о цветовом пространстве OKLab: https://bottosson.github.io/posts/OKLab/
Чтобы получить ссылки на цвета в пространстве OKLCH и их соответствие цветам sRGB, смотрите https://OKLCH.com/
Пример
Результат:
colorOKLCHToSRGB
Преобразует цвет из перцептивного цветового пространства OKLCH в знакомое цветовое пространство sRGB.
Если L находится вне диапазона [0...1]
, C отрицательная, или H находится вне диапазона [0...360]
, результат определяется реализацией.
OKLCH является цилиндрической версией цветового пространства OKLab. Его три координаты — L (светимость в диапазоне [0...1]
), C (хрома >= 0
) и H (оттенок в градусах [0...360]
)**. OKLab/OKLCH разработаны для достижения перцептивной однородности, сохраняя простоту вычислений.
Синтаксис
Аргументы
tuple
- Три числовых значения L, C, H, представленные в виде кортежа, где L находится в диапазоне[0...1]
, C>= 0
и H находится в диапазоне[0...360]
. Кортеж.gamma
- Необязательное числовое значение. Экспонента, которая используется для преобразования линейного sRGB обратно в sRGB, применяя(x ^ (1 / gamma)) * 255
для каждого каналаx
. По умолчанию равна2.2
.
Возвращаемые значения
- Кортеж (R, G, B) типа
Tuple(Float64, Float64, Float64)
.
Эта функция возвращает числа с плавающей точкой, а не целые значения, чтобы избежать принудительного округления. Пользователи могут производить округление самостоятельно.
Детали реализации
Преобразование является обратным к colorSRGBToOKLCH
:
- OKLCH в OKLab.
- OKLab в линейное sRGB
- Линейное sRGB в sRGB
Второй аргумент гамма используется на последнем этапе. Обратите внимание, что все три канала обрезаются в диапазоне [0...1]
непосредственно перед вычислением линейного sRGB, а затем возводятся в степень 1 / gamma
. Если гамма равна 0
, 1 / gamma
изменяется на 1'000'000
. Таким образом, независимо от ввода у нас обычно будут возвращены числа с плавающей запятой в диапазоне [0...255]
.
Как и в случае с colorSRGBToOKLCH
, два других этапа включают тригонометрические преобразования и матричное умножение соответственно. Для получения дополнительных сведений о математике смотрите статью о цветовом пространстве OKLab: https://bottosson.github.io/posts/oklab/
Чтобы получить ссылки на цвета в пространстве OKLCH и их соответствие цветам sRGB, смотрите https://oklch.com/
Пример
Результат:
isConstant
Возвращает, является ли аргумент константным выражением.
Константное выражение — это выражение, результат которого известен во время анализа запроса, т.е. до выполнения. Например, выражения над литералами являются константными выражениями.
Эта функция предназначена в основном для разработки, отладки и демонстрации.
Синтаксис
Аргументы
x
— Выражение для проверки.
Возвращаемые значения
Примеры
Запрос:
Результат:
Запрос:
Результат:
Запрос:
Результат:
hasColumnInTable
Учитывая имя базы данных, имя таблицы и имя колонки в виде константных строк, возвращает 1, если указанная колонка существует, иначе 0.
Синтаксис
Параметры
database
: имя базы данных. Строковый литералtable
: имя таблицы. Строковый литералcolumn
: имя колонки. Строковый литералhostname
: имя удаленного сервера для выполнения проверки. Строковой литералusername
: имя пользователя для удаленного сервера. Строковой литералpassword
: пароль для удаленного сервера. Строковой литерал
Возвращаемое значение
1
, если указанная колонка существует.0
, в противном случае.
Детали реализации
Для элементов в сложной структуре данных функция проверяет существование колонки. Для самой сложной структуры данных функция возвращает 0.
Пример
Запрос:
hasThreadFuzzer
Возвращает, эффективен ли Thread Fuzzer. Его можно использовать в тестах, чтобы предотвратить слишком долгие запуски.
Синтаксис
bar
Строит столбчатую диаграмму.
bar(x, min, max, width)
рисует полосу шириной, пропорциональной (x - min)
и равной width
символов, когда x = max
.
Аргументы
x
— Размер для отображения.min, max
— Целые константы. Значение должно помещаться вInt64
.width
— Константа, положительное целое число, может быть дробным.
Полоса рисуется с точностью до одной восьмой символа.
Пример:
transform
Преобразует значение в соответствии с явно определенной сопоставимостью некоторых элементов с другими. Существует две вариации этой функции:
transform(x, array_from, array_to, default)
x
– Что преобразовать.
array_from
– Константный массив значений для преобразования.
array_to
– Константный массив значений для преобразования значений из 'from'.
default
– Какое значение использовать, если 'x' не равно ни одному из значений в 'from'.
array_from
и array_to
должны иметь одинаковое количество элементов.
Сигнатура:
Если x
равно одному из элементов в array_from
, функция возвращает соответствующий элемент в array_to
, т.е. тот, который находится на том же индексе массива. В противном случае возвращает default
. Если существует несколько совпадающих элементов в array_from
, возвращается элемент, соответствующий первому из них.
transform(T, Array(T), Array(U), U) -> U
T
и U
могут быть числовыми, строковыми или типами Date или DateTime. Одна и та же буква (T или U) означает, что типы должны быть взаимно совместимы и не обязательно равны. Например, первый аргумент может иметь тип Int64
, в то время как второй аргумент может иметь тип Array(UInt16)
.
Пример:
transform(x, array_from, array_to)
Похоже на другую вариацию, но не имеет аргумента 'default'. Если совпадение не может быть найдено, возвращается x
.
Пример:
formatReadableDecimalSize
Учитывая размер (число байтов), эта функция возвращает читаемый округленный размер с суффиксом (КБ, МБ и т.д.) в виде строки.
Противоположные операции этой функции — parseReadableSize, parseReadableSizeOrZero и parseReadableSizeOrNull.
Синтаксис
Пример
Запрос:
Результат:
formatReadableSize
Учитывая размер (число байтов), эта функция возвращает читаемый округленный размер с суффиксом (KiB, MiB и т.д.) в виде строки.
Противоположные операции этой функции — parseReadableSize, parseReadableSizeOrZero и parseReadableSizeOrNull.
Синтаксис
Псевдоним: FORMAT_BYTES
.
Эта функция принимает любой числовой тип в качестве входного значения, но внутренне приводит их к Float64. Результаты могут быть не оптимальными для больших значений.
Пример
Запрос:
Результат:
formatReadableQuantity
Учитывая число, эта функция возвращает округленное число с суффиксом (тысяча, миллион, миллиард и т.д.) в виде строки.
Синтаксис
Эта функция принимает любой числовой тип в качестве входного значения, но внутренне приводит их к Float64. Результаты могут быть не оптимальными для больших значений.
Пример
Запрос:
Результат:
formatReadableTimeDelta
Учитывая временной интервал (дельту) в секундах, эта функция возвращает временную дельту с годом/месяцем/днем/часом/мутиной/секундой/миллисекундой/микросекундой/наносекундой в виде строки.
Синтаксис
Эта функция принимает любой числовой тип в качестве входного значения, но внутренне приводит их к Float64. Результаты могут быть не оптимальными для больших значений.
Аргументы
column
— Колонка с числовой временной дельтой.maximum_unit
— Необязательный. Максимальная единица для отображения.- Допустимые значения:
наносекунды
,микросекунды
,миллисекунды
,секунды
,минуты
,часы
,дни
,месяцы
,годы
. - Значение по умолчанию:
годы
.
- Допустимые значения:
minimum_unit
— Необязательный. Минимальная единица для отображения. Все меньшие единицы отсекаются.- Допустимые значения:
наносекунды
,микросекунды
,миллисекунды
,секунды
,минуты
,часы
,дни
,месяцы
,годы
. - Если явно указанное значение больше, чем
maximum_unit
, будет выброшено исключение. - Значение по умолчанию:
секунды
, еслиmaximum_unit
-секунды
или больше,наносекунды
в противном случае.
- Допустимые значения:
Пример
parseReadableSize
Учитывая строку, содержащую размер в байтах и B
, KiB
, KB
, MiB
, MB
и т.д. как единицу (т.е. ISO/IEC 80000-13 или десятичную единицу байтов), эта функция возвращает соответствующее количество байтов.
Если функция не может распарсить входное значение, она выбрасывает исключение.
Противоположные операции этой функции — formatReadableSize и formatReadableDecimalSize.
Синтаксис
Аргументы
x
: Читаемый размер с единицей ISO/IEC 80000-13 или десятичной единицей байтов (Строка).
Возвращаемое значение
- Количество байтов, округленное до ближайшего целого числа (UInt64).
Пример
parseReadableSizeOrNull
Учитывая строку, содержащую размер в байтах и B
, KiB
, KB
, MiB
, MB
и т.д. как единицу (т.е. ISO/IEC 80000-13 или десятичную единицу байтов), эта функция возвращает соответствующее количество байтов.
Если функция не может распарсить входное значение, она возвращает NULL
.
Противоположные операции этой функции — formatReadableSize и formatReadableDecimalSize.
Синтаксис
Аргументы
x
: Читаемый размер с единицей ISO/IEC 80000-13 или десятичной единицей байтов (Строка).
Возвращаемое значение
- Количество байтов, округленное до ближайшего целого числа, или NULL, если не удалось распарсить входные данные (Nullable(UInt64)).
Пример
parseReadableSizeOrZero
Учитывая строку, содержащую размер в байтах и B
, KiB
, KB
, MiB
, MB
и т.д. как единицу (т.е. ISO/IEC 80000-13 или десятичную единицу байтов), эта функция возвращает соответствующее количество байтов. Если функция не может распарсить входное значение, она возвращает 0
.
Противоположные операции этой функции — formatReadableSize и formatReadableDecimalSize. Синтаксис
Аргументы
x
: Читаемый размер с единицей ISO/IEC 80000-13 или десятичной единицей байтов (Строка).
Возвращаемое значение
- Количество байтов, округленное до ближайшего целого числа, или 0, если не удалось распарсить входные данные (UInt64).
Пример
parseTimeDelta
Парсит последовательность чисел, за которыми следует что-то, напоминающее временную единицу.
Синтаксис
Аргументы
timestr
— Последовательность чисел, за которой следует что-то, напоминающее временную единицу.
Возвращаемое значение
- Число с плавающей точкой с количеством секунд.
Пример
least
Возвращает наименьший аргумент из одного или нескольких входных аргументов. Аргументы NULL
игнорируются.
Синтаксис
Версия 24.12 ввела изменения, не совместимые с предыдущими версиями, так что значения NULL
игнорируются, в то время как ранее возвращалось NULL
, если один из аргументов был NULL
. Чтобы сохранить предыдущее поведение, установите параметр least_greatest_legacy_null_behavior
(по умолчанию: false
) в true
.
greatest
Возвращает наибольший аргумент из одного или нескольких входных аргументов. Аргументы NULL
игнорируются.
Синтаксис
Версия 24.12 ввела изменения, не совместимые с предыдущими версиями, так что значения NULL
игнорируются, в то время как ранее возвращалось NULL
, если один из аргументов был NULL
. Чтобы сохранить предыдущее поведение, установите параметр least_greatest_legacy_null_behavior
(по умолчанию: false
) в true
.
uptime
Возвращает время работы сервера в секундах. Если выполняется в контексте распределенной таблицы, эта функция генерирует нормальную колонку со значениями, относящимися к каждой шард. В противном случае она выдает постоянное значение.
Синтаксис
Возвращаемое значение
- Значение времени в секундах. UInt32.
Пример
Запрос:
Результат:
version
Возвращает текущую версию ClickHouse в виде строки в формате:
- Основная версия
- Вспомогательная версия
- Версия патча
- Количество коммитов с момента предыдущего стабильного релиза.
Если выполняется в контексте распределенной таблицы, эта функция генерирует нормальную колонку со значениями, относящимися к каждой шард. В противном случае она выдает постоянное значение.
Синтаксис
Аргументы
Нет.
Возвращаемое значение
- Текущая версия ClickHouse. Строка.
Детали реализации
Нет.
Пример
Запрос:
Результат:
buildId
Возвращает ID сборки, сгенерированный компилятором для работающего бинарного файла ClickHouse сервера. Если выполняется в контексте распределенной таблицы, эта функция генерирует нормальную колонку со значениями, относящимися к каждой шард. В противном случае она выдает постоянное значение.
Синтаксис
blockNumber
Возвращает монотонно возрастающий номер последовательности блока, содержащего строку. Возвращаемый номер блока обновляется на основе лучших усилий, т.е. он может быть не полностью точным.
Синтаксис
Возвращаемое значение
- Номер последовательности блока данных, в котором находится строка. UInt64.
Пример
Запрос:
Результат:
rowNumberInBlock
Возвращает для каждого блока, обрабатываемого rowNumberInBlock
, номер текущей строки. Возвращаемый номер начинается для каждого блока с 0.
Синтаксис
Возвращаемое значение
- Порядковый номер строки в блоке данных, начиная с 0. UInt64.
Пример
Запрос:
Результат:
rowNumberInAllBlocks
Возвращает уникальный номер строки для каждой строки, обрабатываемой rowNumberInAllBlocks
. Возвращаемые номера начинаются с 0.
Синтаксис
Возвращаемое значение
- Порядковый номер строки в блоке данных, начиная с 0. UInt64.
Пример
Запрос:
Результат:
normalizeQuery
Заменяет литералы, последовательности литералов и сложные псевдонимы (содержащие пробел, более двух цифр или по крайней мере 36 байтов, например, UUID) на плейсхолдер ?
.
Синтаксис
Аргументы
x
— Последовательность символов. Строка.
Возвращаемое значение
- Последовательность символов с плейсхолдерами. Строка.
Пример
Запрос:
Результат:
normalizeQueryKeepNames
Заменяет литералы, последовательности литералов на плейсхолдер ?
, но не заменяет сложные псевдонимы (содержащие пробел, более двух цифр или по крайней мере 36 байтов, например, UUID). Это помогает лучше анализировать сложные журналы запросов.
Синтаксис
Аргументы
x
— Последовательность символов. Строка.
Возвращаемое значение
- Последовательность символов с плейсхолдерами. Строка.
Пример
Запрос:
Результат:
normalizedQueryHash
Возвращает идентичные 64-битные хэш-значения без значений литералов для аналогичных запросов. Может быть полезным для анализа журналов запросов.
Синтаксис
Аргументы
x
— Последовательность символов. Строка.
Возвращаемое значение
- Хэш-значение. UInt64.
Пример
Запрос:
Результат:
normalizedQueryHashKeepNames
Как и normalizedQueryHash, возвращает идентичные 64-битные хэш-значения без значений литералов для аналогичных запросов, но не заменяет сложные псевдонимы (содержащие пробел, более двух цифр или по крайней мере 36 байтов, например, UUID) на плейсхолдер перед хешированием. Может быть полезным для анализа журналов запросов.
Синтаксис
Аргументы
x
— Последовательность символов. Строка.
Возвращаемое значение
- Хэш-значение. UInt64.
Пример
Результат:
neighbor
Функция окна, которая предоставляет доступ к строке с заданным смещением до или после текущей строки заданного столбца.
Синтаксис
Результат функции зависит от затронутых блоков данных и порядка данных в блоке.
Возвращает соседние значения только внутри текущего обрабатываемого блока данных. Из-за этого ошибки чувствительного поведения функция устарела, пожалуйста, используйте правильные функции окон вместо нее.
Порядок строк при расчете neighbor()
может отличаться от порядка строк, возвращаемых пользователю.
Чтобы предотвратить это, вы можете создать подзапрос с ORDER BY и вызвать функцию из внешнего запроса.
Аргументы
column
— Имя столбца или скалярное выражение.offset
— Количество строк, которые нужно посмотреть до или после текущей строки вcolumn
. Int64.default_value
— По желанию. Возвращаемое значение, если смещение выходит за пределы блока. Тип затронутых блоков данных.
Возвращаемые значения
- Значение
column
с расстояниемoffset
от текущей строки, еслиoffset
не выходит за пределы блока. - Значение по умолчанию для
column
илиdefault_value
(если указано), еслиoffset
выходит за пределы блока.
Тип возвращаемого значения будет соответствовать типу затронутых блоков данных или типу значения по умолчанию.
Пример
Запрос:
Результат:
Запрос:
Результат:
Эта функция может быть использована для вычисления значения метрики по годам:
Запрос:
Результат:
runningDifference
Вычисляет разницу между значениями двух последовательных строк в блоке данных. Возвращает 0 для первой строки, а для последующих строк — разницу с предыдущей строкой.
Возвращает разницы только внутри текущего обрабатываемого блока данных. Из-за этого ошибки чувствительного поведения функция устарела, пожалуйста, используйте правильные функции окон вместо нее.
Результат функции зависит от затронутых блоков данных и порядка данных в блоке.
Порядок строк при расчете runningDifference()
может отличаться от порядка строк, возвращаемых пользователю.
Чтобы предотвратить это, вы можете создать подзапрос с ORDER BY и вызвать функцию из внешнего запроса.
Синтаксис
Пример
Запрос:
Результат:
Пожалуйста, обратите внимание, что размер блока влияет на результат. Внутреннее состояние runningDifference
сбрасывается для каждого нового блока.
Запрос:
Результат:
Запрос:
Результат:
runningDifferenceStartingWithFirstValue
Эта функция устарела (см. примечание для runningDifference
).
Так же, как runningDifference, но возвращает значение первой строки в качестве значения первой строки.
runningConcurrency
Вычисляет количество параллельных событий. Каждое событие имеет время начала и время окончания. Время начала включается в событие, а время окончания исключается. Столбцы с временем начала и временем окончания должны быть одного и того же типа данных. Функция вычисляет общее количество активных (параллельных) событий для каждого времени начала событий.
События должны быть упорядочены по времени начала в порядке возрастания. Если это требование не выполнено, функция вызовет исключение. Каждый блок данных обрабатывается отдельно. Если события из разных блоков данных перекрываются, их не удастся обработать корректно.
Синтаксис
Аргументы
start
— Столбец с временем начала событий. Date, DateTime, или DateTime64.end
— Столбец с временем окончания событий. Date, DateTime, или DateTime64.
Возвращаемые значения
- Количество параллельных событий в каждое время начала событий. UInt32
Пример
Рассмотрим таблицу:
Запрос:
Результат:
MACNumToString
Интерпретирует число UInt64 как MAC-адрес в формате big endian. Возвращает соответствующий MAC-адрес в формате AA:BB:CC:DD:EE:FF (числа, разделенные двоеточием, в шестнадцатеричном формате) в виде строки.
Синтаксис
MACStringToNum
Обратная функция к MACNumToString. Если MAC-адрес имеет недопустимый формат, возвращает 0.
Синтаксис
MACStringToOUI
Дается MAC-адрес в формате AA:BB:CC:DD:EE:FF (числа, разделенные двоеточием, в шестнадцатеричном формате), возвращает первые три октета в виде числа UInt64. Если MAC-адрес имеет недопустимый формат, возвращает 0.
Синтаксис
getSizeOfEnumType
Возвращает количество полей в Enum.
Исключение вызывается, если тип не Enum
.
Синтаксис
Аргументы:
value
— Значение типаEnum
.
Возвращаемые значения
- Количество полей с входными значениями
Enum
.
Пример
blockSerializedSize
Возвращает размер на диске без учета сжатия.
Аргументы
value
— любое значение.
Возвращаемые значения
- Количество байт, которое будет записано на диск для блока значений без сжатия.
Пример
Запрос:
Результат:
toColumnTypeName
Возвращает внутреннее название типа данных, представляющего значение.
Синтаксис
Аргументы:
value
— любое значение.
Возвращаемые значения
- Внутреннее название типа данных, используемое для представления
value
.
Пример
Различие между toTypeName
и toColumnTypeName
:
Результат:
Запрос:
Результат:
Пример показывает, что тип данных DateTime
внутренне хранится как Const(UInt32)
.
dumpColumnStructure
Выводит подробное описание структур данных в оперативной памяти.
Аргументы:
value
— любое значение.
Возвращаемые значения
- Описание структуры столбца, используемого для представления
value
.
Пример
defaultValueOfArgumentType
Возвращает значение по умолчанию для данного типа данных.
Не включает значения по умолчанию для пользовательских столбцов, заданных пользователем.
Синтаксис
Аргументы:
expression
— Произвольный тип значения или выражение, которое дает значение произвольного типа.
Возвращаемые значения
0
для чисел.- Пустая строка для строк.
ᴺᵁᴸᴸ
для Nullable.
Пример
Запрос:
Результат:
Запрос:
Результат:
defaultValueOfTypeName
Возвращает значение по умолчанию для данного имени типа.
Не включает значения по умолчанию для пользовательских столбцов, заданных пользователем.
Аргументы:
type
— Строка, представляющая имя типа.
Возвращаемые значения
0
для чисел.- Пустая строка для строк.
ᴺᵁᴸᴸ
для Nullable.
Пример
Запрос:
Результат:
Запрос:
Результат:
indexHint
Эта функция предназначена для отладки и анализа. Она игнорирует свой аргумент и всегда возвращает 1. Аргументы не вычисляются.
Но при анализе индекса аргумент этой функции предполагается не обернутым в indexHint
. Это позволяет выбирать данные в диапазонах индекса по соответствующему условию, но без последующей фильтрации по этому условию. Индекс в ClickHouse разреженный, и использование indexHint
приведет к получению большего объема данных, чем прямое указание того же условия.
Синтаксис
Возвращаемое значение
1
. Uint8.
Пример
Вот пример тестовых данных из таблицы ontime.
Таблица:
В таблице есть индексы на полях (FlightDate, (Year, FlightDate))
.
Создайте запрос, который не использует индекс:
ClickHouse обработал всю таблицу (Обработано 4.28 миллиона строк
).
Результат:
Чтобы применить индекс, выберите конкретную дату:
ClickHouse теперь использует индекс для обработки значительно меньшего количества строк (Обработано 32.74 тысячи строк
).
Результат:
Теперь оберните выражение k = '2017-09-15'
в функцию indexHint
:
Запрос:
ClickHouse использовал индекс так же, как и ранее (Обработано 32.74 тысячи строк
).
Выражение k = '2017-09-15'
не использовалось при генерации результата.
В примере функция indexHint
позволяет увидеть соседние даты.
Результат:
replicate
Создает массив с одним значением.
Эта функция используется для внутренней реализации arrayJoin.
Синтаксис
Аргументы
x
— Значение для заполнения результирующего массива.arr
— Массив. Array.
Возвращаемое значение
Массив такой же длины, как arr
, заполненный значением x
. Array.
Пример
Запрос:
Результат:
revision
Возвращает текущую ревизию сервера ClickHouse.
Синтаксис
Возвращаемое значение
- Текущая ревизия сервера ClickHouse. UInt32.
Пример
Запрос:
Результат:
filesystemAvailable
Возвращает количество свободного места в файловой системе, хранящей постоянные данные базы данных. Возвращаемое значение всегда меньше общего свободного пространства (filesystemUnreserved), так как часть места зарезервирована для операционной системы.
Синтаксис
Возвращаемое значение
- Количество оставшегося свободного места в байтах. UInt64.
Пример
Запрос:
Результат:
filesystemUnreserved
Возвращает общее количество свободного места на файловой системе, хранящей постоянные данные базы данных. (ранее filesystemFree
). Смотрите также filesystemAvailable
.
Синтаксис
Возвращаемое значение
- Количество свободного места в байтах. UInt64.
Пример
Запрос:
Результат:
filesystemCapacity
Возвращает вместимость файловой системы в байтах. Необходим путь к каталогу данных.
Синтаксис
Возвращаемое значение
- Вместимость файловой системы в байтах. UInt64.
Пример
Запрос:
Результат:
initializeAggregation
Вычисляет результат агрегатной функции на основе одного значения. Эта функция может использоваться для инициализации агрегатных функций с комбинированием -State. Вы можете создавать состояния агрегатных функций и вставлять их в столбцы типа AggregateFunction или использовать инициализированные агрегаты как значения по умолчанию.
Синтаксис
Аргументы
aggregate_function
— Имя агрегатной функции для инициализации. String.arg
— Аргументы агрегатной функции.
Возвращаемое значение(я)
- Результат агрегации для каждой строки, переданной функции.
Тип возвращаемого значения такой же, как тип возвращаемого значения функции, которую initializeAggregation
принимает в качестве первого аргумента.
Пример
Запрос:
Результат:
Запрос:
Результат:
Пример с движком таблицы AggregatingMergeTree
и столбцом AggregateFunction
:
Смотрите также
finalizeAggregation
Данная функция возвращает результат агрегации (или финализированное состояние при использовании комбинирования -State).
Синтаксис
Аргументы
state
— Состояние агрегации. AggregateFunction.
Возвращаемое значение(я)
- Значение/значения, которые были агрегированы.
Тип возвращаемого значения равен любым типам, которые были агрегированы.
Примеры
Запрос:
Результат:
Запрос:
Результат:
Обратите внимание, что значения NULL
игнорируются.
Запрос:
Результат:
Комбинированный пример:
Запрос:
Результат:
Смотрите также
runningAccumulate
Аккумулирует состояния агрегатной функции для каждой строки блока данных.
Состояние сбрасывается для каждого нового блока данных. Из-за этого ошибки чувствительного поведения функция устарела, пожалуйста, используйте правильные функции окон вместо нее.
Синтаксис
Аргументы
agg_state
— Состояние агрегатной функции. AggregateFunction.grouping
— Ключ группировки. По желанию. Состояние функции сбрасывается, если значениеgrouping
изменяется. Это может быть любым из поддерживаемых типов данных, для которых определен оператор равенства.
Возвращаемое значение
- Каждая результирующая строка содержит результат агрегатной функции, накопленный для всех входных строк с 0 до текущей позиции.
runningAccumulate
сбрасывает состояния для каждого нового блока данных или когда значениеgrouping
изменяется.
Тип зависит от используемой агрегатной функции.
Примеры
Рассмотрим, как можно использовать runningAccumulate
для поиска накопительной суммы чисел без и с группировкой.
Запрос:
Результат:
Подзапрос генерирует sumState
для каждого числа от 0
до 9
. sumState
возвращает состояние функции sum, которое содержит сумму одного числа.
Весь запрос делает следующее:
- Для первой строки
runningAccumulate
принимаетsumState(0)
и возвращает0
. - Для второй строки функция объединяет
sumState(0)
иsumState(1)
, что приводит кsumState(0 + 1)
, и возвращает1
как результат. - Для третьей строки функция объединяет
sumState(0 + 1)
иsumState(2)
, что приводит кsumState(0 + 1 + 2)
, и возвращает3
как результат. - Действия повторяются до конца блока.
Следующий пример показывает использование параметра groupping
:
Запрос:
Результат:
Как вы видите, runningAccumulate
объединяет состояния для каждой группы строк отдельно.
joinGet
Функция позволяет извлекать данные из таблицы так же, как из словаря. Извлекает данные из таблиц Join с использованием указанного ключа соединения.
Поддерживает только таблицы, созданные с оператором ENGINE = Join(ANY, LEFT, <join_keys>)
.
Синтаксис
Аргументы
join_storage_table_name
— идентификатор, указывающий, где выполняется поиск.value_column
— имя столбца таблицы, содержащего требуемые данные.join_keys
— список ключей.
Идентификатор ищется в базе данных по умолчанию (см. настройку default_database
в файле конфигурации). Чтобы переопределить базу данных по умолчанию, используйте USE db_name
или укажите базу данных и таблицу через разделитель db_name.db_table
, как в примере.
Возвращаемое значение
- Возвращает список значений, соответствующих списку ключей.
Если определенный ключ отсутствует в исходной таблице, то будет возвращено 0
или null
в зависимости от настройки join_use_nulls при создании таблицы.
Больше информации о join_use_nulls
в Операциях Join.
Пример
Входная таблица:
Запрос:
Результат:
Настройка join_use_nulls
может быть использована при создании таблицы для изменения поведения того, что возвращается, если ключ отсутствует в исходной таблице.
Запрос:
Результат:
joinGetOrNull
Подобно joinGet, но возвращает NULL
, когда ключ отсутствует, вместо возвращения значения по умолчанию.
Синтаксис
Аргументы
join_storage_table_name
— идентификатор, указывающий, где выполняется поиск.value_column
— имя столбца таблицы, содержащего требуемые данные.join_keys
— список ключей.
Идентификатор ищется в базе данных по умолчанию (см. настройку default_database
в файле конфигурации). Чтобы переопределить базу данных по умолчанию, используйте USE db_name
или укажите базу данных и таблицу через разделитель db_name.db_table
, как в примере.
Возвращаемое значение
- Возвращает список значений, соответствующих списку ключей.
Если определенный ключ отсутствует в исходной таблице, то для этого ключа возвращается NULL
.
Пример
Входная таблица:
Запрос:
Результат:
catboostEvaluate
Эта функция недоступна в ClickHouse Cloud.
Оценка внешней модели catboost. CatBoost — это библиотека градиентного бустинга с открытым кодом, разработанная Яндексом для машинного обучения. Принимает путь к модели catboost и аргументы модели (признаки). Возвращает Float64.
Синтаксис
Пример
Предварительные условия
- Построить библиотеку оценки catboost
Перед оценкой моделей catboost, библиотека libcatboostmodel.<so|dylib>
должна быть доступна. Смотрите документацию CatBoost, как ее скомпилировать.
Далее укажите путь к libcatboostmodel.<so|dylib>
в конфигурации ClickHouse:
По соображениям безопасности и изоляции оценка модели не выполняется в процессе сервера, а в процессе моста clickhouse-library.
При первом выполнении catboostEvaluate()
сервер запускает процесс моста библиотеки, если он еще не запущен. Оба процесса
взаимодействуют с использованием HTTP интерфейса. По умолчанию используется порт 9012
. Другой порт можно указать следующим образом - это полезно, если порт
9012
уже занят другим сервисом.
- Обучите модель catboost с использованием libcatboost
Смотрите Обучение и применение моделей для получения информации о том, как обучать модели catboost из обучающего набора данных.
throwIf
Вызывает исключение, если аргумент x
истинный.
Синтаксис
Аргументы
x
- условие для проверки.message
- постоянная строка, обеспечивающая пользовательское сообщение об ошибке. По желанию.error_code
- Постоянное целое число, обеспечивающее пользовательский код ошибки. По желанию.
Чтобы использовать аргумент error_code
, параметр конфигурации allow_custom_error_code_in_throwif
должен быть включен.
Пример
Результат:
identity
Возвращает свой аргумент. Предназначен для отладки и тестирования. Позволяет отменить использование индекса и получить производительность запроса полного сканирования. Когда запрос анализируется на возможность использования индекса, анализатор игнорирует все в функциях identity
. Также отключает свертку констант.
Синтаксис
Пример
Запрос:
Результат:
getSetting
Возвращает текущее значение пользовательской настройки.
Синтаксис
Параметр
custom_setting
— Имя настройки. String.
Возвращаемое значение
- Текущее значение настройки.
Пример
Запрос:
Результат:
Смотрите также
getSettingOrDefault
Возвращает текущее значение пользовательской настройки или возвращает значение по умолчанию, указанное во втором аргументе, если пользовательская настройка не установлена в текущем профиле.
Синтаксис
Параметр
custom_setting
— Имя настройки. String.default_value
— Значение, которое возвращается, если custom_setting не установлена. Значение может быть любого типа данных или Null.
Возвращаемое значение
- Текущее значение настройки или значение по умолчанию, если настройка не установлена.
Пример
Запрос:
Результат:
Смотрите также
isDecimalOverflow
Проверяет, находится ли значение Decimal вне его точности или вне указанной точности.
Синтаксис
Аргументы
d
— значение. Decimal.p
— точность. По желанию. Если опущен, используется исходная точность первого аргумента. Этот параметр может быть полезен для миграции данных из/в другую базу данных или файл. UInt8.
Возвращаемые значения
1
— Значение Decimal имеет больше цифр, чем позволяет его точность,0
— Значение Decimal удовлетворяет указанной точности.
Пример
Запрос:
Результат:
countDigits
Возвращает количество десятичных цифр, необходимых для представления значения.
Синтаксис
Аргументы
Возвращаемое значение
- Количество цифр. UInt8.
Для значений Decimal
учитывает их шкалы: подсчитывает результат по базовому целому типу, который равен (value * scale)
. Например: countDigits(42) = 2
, countDigits(42.000) = 5
, countDigits(0.04200) = 4
. То есть вы можете проверить переполнение десятичных значений для Decimal64
, проверяя countDecimal(x) > 18
. Это медленный вариант isDecimalOverflow.
Пример
Запрос:
Результат:
errorCodeToName
- Текстовое имя кода ошибки. LowCardinality(String).
Синтаксис
Результат:
tcpPort
Возвращает номер TCP-порта native interface, который слушает этот сервер. Если выполнено в контексте распределенной таблицы, эта функция генерирует нормальный столбец со значениями, актуальными для каждого шарда. В противном случае она производит постоянное значение.
Синтаксис
Аргументы
- Нет.
Возвращаемое значение
- Номер TCP-порта. UInt16.
Пример
Запрос:
Результат:
Смотрите также
currentProfiles
Возвращает список текущих профилей настроек для текущего пользователя.
Команда SET PROFILE может быть использована для изменения текущего профиля настроек. Если команда SET PROFILE
не использовалась, функция возвращает профили, указанные в определении текущего пользователя (см. CREATE USER).
Синтаксис
Возвращаемое значение
enabledProfiles
Возвращает профили настроек, назначенные текущему пользователю как явно, так и неявно. Явно назначенные профили такие же, как возвращаемые функцией currentProfiles. Неявно назначенные профили включают родительские профили других назначенных профилей, профили, назначенные через предоставленные роли, профили, назначенные посредством собственных настроек, и основной профиль по умолчанию (см. раздел default_profile
в основном файле конфигурации сервера).
Синтаксис
Возвращаемое значение
defaultProfiles
Возвращает все профили, указанные в определении текущего пользователя (см. оператор CREATE USER).
Синтаксис
Возвращаемое значение
currentRoles
Возвращает роли, назначенные текущему пользователю. Роли могут быть изменены оператором SET ROLE. Если оператор SET ROLE
не использовался, функция currentRoles
возвращает то же, что и defaultRoles
.
Синтаксис
Возвращаемое значение
enabledRoles
Возвращает названия текущих ролей и ролей, предоставленных некоторым из текущих ролей.
Синтаксис
Возвращаемое значение
defaultRoles
Возвращает роли, которые включены по умолчанию для текущего пользователя при его входе. Первоначально это все роли, предоставленные текущему пользователю (см. GRANT), но это может быть изменено с помощью оператора SET DEFAULT ROLE.
Синтаксис
Возвращаемое значение
getServerPort
Возвращает номер порта сервера. Когда порт не используется сервером, вызывается исключение.
Синтаксис
Аргументы
-
port_name
— Имя порта сервера. String. Возможные значения:- 'tcp_port'
- 'tcp_port_secure'
- 'http_port'
- 'https_port'
- 'interserver_http_port'
- 'interserver_https_port'
- 'mysql_port'
- 'postgresql_port'
- 'grpc_port'
- 'prometheus.port'
Возвращаемое значение
- Номер порта сервера. UInt16.
Пример
Запрос:
Результат:
queryID
Возвращает ID текущего запроса. Другие параметры запроса можно извлечь из таблицы system.query_log через query_id
.
В отличие от функции initialQueryID, queryID
может возвращать разные результаты на разных шардах (см. пример).
Синтаксис
Возвращаемое значение
- ID текущего запроса. String
Пример
Запрос:
Результат:
initialQueryID
Возвращает ID начального текущего запроса. Другие параметры запроса можно извлечь из таблицы system.query_log через initial_query_id
.
В отличие от функции queryID, initialQueryID
возвращает одни и те же результаты на разных шардах (см. пример).
Синтаксис
Возвращаемое значение
- ID начального текущего запроса. String
Пример
Запрос:
Результат:
initialQueryStartTime
Возвращает время начала начального текущего запроса.
initialQueryStartTime
возвращает одни и те же результаты на разных шардах (см. пример).
Синтаксис
Возвращаемое значение
- Время начала начального текущего запроса. DateTime
Пример
Запрос:
Результат:
partitionID
Вычисляет ID партиции.
Эта функция медленная и не должна вызываться для большого количества строк.
Синтаксис
Аргументы
x
— Столбец, для которого нужно вернуть ID партиции.y, ...
— Оставшиеся N столбцов, для которых нужно вернуть ID партиции (по желанию).
Возвращаемое значение
- ID партиции, к которой будет принадлежать строка. String.
Пример
Запрос:
Результат:
shardNum
Возвращает индекс шарда, который обрабатывает часть данных в распределенном запросе. Индексы начинаются с 1
. Если запрос не распределенный, возвращается постоянное значение 0
.
Синтаксис
Возвращаемое значение
- Индекс шарда или постоянное
0
. UInt32.
Пример
В следующем примере используется конфигурация с двумя шардами. Запрос выполняется на таблице system.one на каждом шарде.
Запрос:
Результат:
См. также
shardCount
Возвращает общее количество шардов для распределенного запроса. Если запрос не распределенный, возвращается постоянное значение 0
.
Синтаксис
Возвращаемое значение
- Общее количество шардов или
0
. UInt32.
См. также
- Пример функции shardNum() также содержит вызов функции
shardCount()
.
getOSKernelVersion
Возвращает строку с текущей версией ядра ОС.
Синтаксис
Аргументы
- Нет.
Возвращаемое значение
- Текущая версия ядра ОС. String.
Пример
Запрос:
Результат:
zookeeperSessionUptime
Возвращает время работы текущей сессии ZooKeeper в секундах.
Синтаксис
Аргументы
- Нет.
Возвращаемое значение
- Время работы текущей сессии ZooKeeper в секундах. UInt32.
Пример
Запрос:
Результат:
generateRandomStructure
Генерирует случайную структуру таблицы в формате column1_name column1_type, column2_name column2_type, ...
.
Синтаксис
Аргументы
number_of_columns
— Желаемое количество столбцов в результирующей структуре таблицы. Если установлено в 0 илиNull
, количество столбцов будет случайным от 1 до 128. Значение по умолчанию:Null
.seed
- Случайное семя для получения стабильных результатов. Если семя не указано или установлено вNull
, оно генерируется случайным образом.
Все аргументы должны быть константами.
Возвращаемое значение
- Случайно сгенерированная структура таблицы. String.
Примеры
Запрос:
Результат:
Запрос:
Результат:
Запрос:
Результат:
Примечание: максимальная глубина вложения сложных типов (Array, Tuple, Map, Nested) ограничена 16.
Эту функцию можно использовать вместе с generateRandom для генерации полностью случайных таблиц.
structureToCapnProtoSchema
Преобразует структуру таблицы ClickHouse в схему CapnProto.
Синтаксис
Аргументы
structure
— Структура таблицы в форматеcolumn1_name column1_type, column2_name column2_type, ...
.root_struct_name
— Имя корневой структуры в схеме CapnProto. Значение по умолчанию -Message
;
Возвращаемое значение
- Схема CapnProto. String.
Примеры
Запрос:
Результат:
Запрос:
Результат:
Запрос:
Результат:
structureToProtobufSchema
Преобразует структуру таблицы ClickHouse в схему Protobuf.
Синтаксис
Аргументы
structure
— Структура таблицы в форматеcolumn1_name column1_type, column2_name column2_type, ...
.root_message_name
— Имя корневого сообщения в схеме Protobuf. Значение по умолчанию -Message
;
Возвращаемое значение
- Схема Protobuf. String.
Примеры
Запрос:
Результат:
Запрос:
Результат:
Запрос:
Результат:
formatQuery
Возвращает отформатированную, возможно многострочную версию данного SQL запроса.
Вызывает исключение, если запрос имеет неверный синтаксис. Для возвращения NULL
вместо этого можно использовать функцию formatQueryOrNull()
.
Синтаксис
Аргументы
query
- SQL запрос, который нужно отформатировать. String
Возвращаемое значение
- Отформатированный запрос. String.
Пример
Результат:
formatQuerySingleLine
Как и formatQuery(), но возвращаемая отформатированная строка не содержит разрывов строк.
Вызывает исключение, если запрос имеет неверный синтаксис. Для возвращения NULL
вместо этого можно использовать функцию formatQuerySingleLineOrNull()
.
Синтаксис
Аргументы
query
- SQL запрос, который нужно отформатировать. String
Возвращаемое значение
- Отформатированный запрос. String.
Пример
Результат:
variantElement
Извлекает столбец с указанным типом из колонки Variant
.
Синтаксис
Аргументы
variant
— Колонка Variant. Variant.type_name
— Название типа варианта, который нужно извлечь. String.default_value
- Значение по умолчанию, которое будет использоваться, если вариант не содержит варианта с указанным типом. Может быть любого типа. Необязательный.
Возвращаемое значение
- Подколонка из колонки
Variant
с указанным типом.
Пример
variantType
Возвращает название типа варианта для каждой строки колонки Variant
. Если строка содержит NULL, то для нее возвращается 'None'
.
Синтаксис
Аргументы
variant
— Колонка Variant. Variant.
Возвращаемое значение
- Колонка Enum8 с названием типа варианта для каждой строки.
Пример
minSampleSizeConversion
Вычисляет минимально необходимый размер выборки для A/B теста, сравнивающего конверсии (доли) в двух образцах.
Синтаксис
Использует формулу, описанную в этой статье. Предполагает равные размеры групп лечения и контроля. Возвращает необходимый размер выборки для одной группы (т.е. необходимый размер выборки для всего эксперимента вдвое больше возвращаемого значения).
Аргументы
baseline
— Базовая конверсия. Float.mde
— Минимально обнаруживаемый эффект (MDE) в процентных пунктах (например, для базовой конверсии 0.25 MDE 0.03 означает ожидаемое изменение на 0.25 ± 0.03). Float.power
— Необходимая статистическая мощность теста (1 - вероятность II рода). Float.alpha
— Необходимый уровень значимости теста (вероятность I рода). Float.
Возвращаемое значение
Именованный Tuple с 3 элементами:
"minimum_sample_size"
— Необходимый размер выборки. Float64."detect_range_lower"
— Нижняя граница диапазона значений, которые не могут быть обнаружены с помощью возвращаемого необходимого размера выборки (т.е. все значения, меньшее или равное"detect_range_lower"
, обнаруживаемы с заданнымиalpha
иpower
). Рассчитывается какbaseline - mde
. Float64."detect_range_upper"
— Верхняя граница диапазона значений, которые не могут быть обнаружены с помощью возвращаемого необходимого размера выборки (т.е. все значения, большее или равное"detect_range_upper"
, обнаруживаемы с заданнымиalpha
иpower
). Рассчитывается какbaseline + mde
. Float64.
Пример
Следующий запрос вычисляет необходимый размер выборки для A/B теста с базовой конверсией 25%, MDE 3%, уровнем значимости 5% и желаемой статистической мощностью 80%:
Результат:
minSampleSizeContinuous
Вычисляет минимально необходимый размер выборки для A/B теста, сравнивающего средние значения непрерывной метрики в двух образцах.
Синтаксис
Псевдоним: minSampleSizeContinous
Использует формулу, описанную в этой статье. Предполагает равные размеры групп лечения и контроля. Возвращает необходимый размер выборки для одной группы (т.е. необходимый размер выборки для всего эксперимента вдвое больше возвращаемого значения). Также предполагает равную дисперсию тестовой метрики в группах лечения и контроля.
Аргументы
baseline
— Базовое значение метрики. Integer или Float.sigma
— Базовое стандартное отклонение метрики. Integer или Float.mde
— Минимально обнаруживаемый эффект (MDE) в процентах от базового значения (например, для базового значения 112.25 MDE 0.03 означает ожидаемое изменение на 112.25 ± 112.25*0.03). Integer или Float.power
— Необходимая статистическая мощность теста (1 - вероятность II рода). Integer или Float.alpha
— Необходимый уровень значимости теста (вероятность I рода). Integer или Float.
Возвращаемое значение
Именованный Tuple с 3 элементами:
"minimum_sample_size"
— Необходимый размер выборки. Float64."detect_range_lower"
— Нижняя граница диапазона значений, которые не могут быть обнаружены с помощью возвращаемого необходимого размера выборки (т.е. все значения, меньшее или равное"detect_range_lower"
, обнаруживаемы с заданнымиalpha
иpower
). Рассчитывается какbaseline * (1 - mde)
. Float64."detect_range_upper"
— Верхняя граница диапазона значений, которые не могут быть обнаружены с помощью возвращаемого необходимого размера выборки (т.е. все значения, большее или равное"detect_range_upper"
, обнаруживаемы с заданнымиalpha
иpower
). Рассчитывается какbaseline * (1 + mde)
. Float64.
Пример
Следующий запрос вычисляет необходимый размер выборки для A/B теста по метрике с базовым значением 112.25, стандартным отклонением 21.1, MDE 3%, уровнем значимости 5% и желаемой статистической мощностью 80%:
Результат:
connectionId
Извлекает ID подключения клиента, который отправил текущий запрос, и возвращает его как целое число UInt64.
Синтаксис
Псевдоним: connection_id
.
Параметры
Нет.
Возвращаемое значение
Текущий ID подключения. UInt64.
Подробности реализации
Эта функция наиболее полезна в сценариях отладки или для внутренних целей в обработчике MySQL. Она была создана для совместимости с функцией CONNECTION_ID
MySQL. Обычно она не используется в производственных запросах.
Пример
Запрос:
Результат:
getClientHTTPHeader
Получает значение HTTP заголовка.
Если такого заголовка нет или текущий запрос не выполняется через HTTP интерфейс, функция возвращает пустую строку.
Некоторые HTTP заголовки (например, Authentication
и X-ClickHouse-*
) ограничены.
Функция требует включения настройки allow_get_client_http_header
.
Настройка не включена по умолчанию по соображениям безопасности, поскольку некоторые заголовки, такие как Cookie
, могут содержать конфиденциальную информацию.
HTTP заголовки регистрозависимы для этой функции.
Если функция используется в контексте распределенного запроса, она возвращает непустой результат только на инициирующем узле.
showCertificate
Показывает информацию о текущем сертификате Secure Sockets Layer (SSL) сервера, если он был настроен. См. Настройка SSL-TLS для получения дополнительной информации о том, как настроить ClickHouse для использования сертификатов OpenSSL для проверки соединений.
Синтаксис
Возвращаемое значение
Пример
Запрос:
Результат:
lowCardinalityIndices
Возвращает позицию значения в словаре колонки LowCardinality. Позиции начинаются с 1. Поскольку LowCardinality имеют словари на каждую партицию, эта функция может возвращать разные позиции для одного и того же значения в разных партициях.
Синтаксис
Аргументы
col
— колонка низкой кардинальности. LowCardinality.
Возвращаемое значение
- Позиция значения в словаре текущей партиции. UInt64.
Пример
Запрос:
Результат:
lowCardinalityKeys
Возвращает значения словаря колонки LowCardinality. Если блок меньше или больше, чем размер словаря, результат будет обрезан или расширен значениями по умолчанию. Поскольку LowCardinality имеют словари на каждую партицию, эта функция может возвращать разные значения словаря в разных партициях.
Синтаксис
Аргументы
col
— колонка низкой кардинальности. LowCardinality.
Возвращаемое значение
- Ключи словаря. UInt64.
Пример
Запрос:
Результат:
displayName
Возвращает значение display_name
из config или полностью квалифицированное доменное имя (FQDN) сервера, если не установлено.
Синтаксис
Возвращаемое значение
- Значение
display_name
из конфигурации или FQDN сервера, если не установлено. String.
Пример
display_name
может быть установлен в config.xml
. Рассмотрим, например, сервер с настроенным display_name
как 'production':
Запрос:
Результат:
transactionID
Возвращает ID транзакции.
Эта функция является частью набора экспериментальных функций. Включите экспериментальную поддержку транзакций, добавив эту настройку в вашу конфигурацию:
Для получения дополнительной информации см. страницу Поддержка транзакций (ACID).
Синтаксис
Возвращаемое значение
-
Возвращает кортеж, состоящий из
start_csn
,local_tid
иhost_id
. Tuple. -
start_csn
: Глобальный последовательный номер, самая новая метка времени фиксации, которая была зафиксирована, когда началась эта транзакция. UInt64. -
local_tid
: Локальный последовательный номер, который уникален для каждой транзакции, начатой этим узлом в пределах конкретногоstart_csn
. UInt64. -
host_id
: UUID узла, который начал эту транзакцию. UUID.
Пример
Запрос:
Результат:
transactionLatestSnapshot
Возвращает самый новый снимок (Commit Sequence Number) транзакции, который доступен для чтения.
Эта функция является частью набора экспериментальных функций. Включите экспериментальную поддержку транзакций, добавив эту настройку в вашу конфигурацию:
Для получения дополнительной информации см. страницу Поддержка транзакций (ACID).
Синтаксис
Возвращаемое значение
- Возвращает последний снимок (CSN) транзакции. UInt64
Пример
Запрос:
Результат:
transactionOldestSnapshot
Возвращает самый старый снимок (Commit Sequence Number), который виден для некоторой запущенной транзакции.
Эта функция является частью набора экспериментальных функций. Включите экспериментальную поддержку транзакций, добавив эту настройку в вашу конфигурацию:
Для получения дополнительной информации см. страницу Поддержка транзакций (ACID).
Синтаксис
Возвращаемое значение
- Возвращает самый старый снимок (CSN) транзакции. UInt64
Пример
Запрос:
Результат:
getSubcolumn
Принимает выражение таблицы или идентификатор и постоянную строку с именем подколонки и возвращает запрашиваемую подколонку, извлеченную из выражения.
Синтаксис
Аргументы
col_name
— Выражение таблицы или идентификатор. Expression, Identifier.subcol_name
— Название подколонки. String.
Возвращаемое значение
- Возвращает извлеченную подколонку.
Пример
Запрос:
Результат:
getTypeSerializationStreams
Перечисляет пути потоков для типа данных.
Эта функция предназначена для использования разработчиками.
Синтаксис
Аргументы
col
— Колонка или строковое представление типа данных, из которого будет определен тип данных.
Возвращаемое значение
Примеры
Запрос:
Результат:
Запрос:
Результат:
globalVariable
Принимает постоянную строку в качестве аргумента и возвращает значение глобальной переменной с этим именем. Эта функция предназначена для совместимости с MySQL и не требуется или полезна для нормальной работы ClickHouse. Определено только несколько фиктивных глобальных переменных.
Синтаксис
Аргументы
name
— Название глобальной переменной. String.
Возвращаемое значение
- Возвращает значение переменной
name
.
Пример
Запрос:
Результат:
getMaxTableNameLengthForDatabase
Возвращает максимальную длину имени таблицы в указанной базе данных.
Синтаксис
Аргументы
database_name
— Название указанной базы данных. String.
Возвращаемое значение
- Возвращает длину максимального имени таблицы.
Пример
Запрос:
Результат:
getServerSetting
Возвращает текущее значение одной из настроек сервера.
Синтаксис
Параметр
server_setting
— Название настройки. String.
Возвращаемое значение
- Текущее значение настройки сервера.
Пример
Результат:
getMergeTreeSetting
Возвращает текущее значение одной из настроек merge tree.
Синтаксис
Параметр
merge_tree_setting
— Название настройки. String.
Возвращаемое значение
- Текущее значение настройки merge tree.
Пример
Результат: