FQDN
Добавленный в: v20.1.0
Возвращает полное доменное имя сервера ClickHouse.
Синтаксис
FQDN()Псевдонимы: fullHostName
Аргументы
- Отсутствуют.
Возвращаемое значение
Возвращает полное доменное имя (FQDN) сервера ClickHouse. String
Примеры
Пример использования
SELECT fqdn()┌─FQDN()────────────────────────┐
│ clickhouse.us-east-2.internal │
└───────────────────────────────┘MACNumToString
Добавленный в: v1.1.0
Интерпретирует число UInt64 как MAC-адрес в формате big-endian.
Возвращает соответствующий MAC-адрес в формате AA:BB:CC:DD:EE:FF (шестнадцатеричные числа, разделённые двоеточиями) в виде строки.
Синтаксис
MACNumToString(num)Аргументы
num— число типа UInt64.UInt64
Возвращаемое значение
Возвращает MAC-адрес в формате AA:BB:CC:DD:EE:FF. String
Примеры
Пример использования
SELECT MACNumToString(149809441867716) AS mac_address;┌─mac_address───────┐
│ 88:40:3A:91:07:C4 │
└───────────────────┘MACStringToNum
Добавленный в: v1.1.0
Обратная функция для MACNumToString. Если MAC-адрес имеет недопустимый формат, возвращает 0.
Синтаксис
MACStringToNum(s)Аргументы
s— строка MAC-адреса.String
Возвращаемое значение
Возвращает число типа UInt64. UInt64
Примеры
Пример использования
SELECT MACStringToNum('01:02:03:04:05:06') AS mac_numeric;1108152157446MACStringToOUI
Добавленный в: v1.1.0
Для MAC-адреса в формате AA:BB:CC:DD:EE:FF (шестнадцатеричные числа, разделённые двоеточиями) возвращает первые три октета в виде числа UInt64. Если MAC-адрес имеет неверный формат, возвращает 0.
Синтаксис
MACStringToOUI(s)Аргументы
s— строка MAC-адреса.String
Возвращаемое значение
Первые три октета в виде числа типа UInt64. UInt64
Примеры
Пример использования
SELECT MACStringToOUI('00:50:56:12:34:56') AS oui;20566authenticatedUser
Добавленный в: v25.11.0
Если пользователь сеанса был переключён с помощью команды EXECUTE AS, эта функция возвращает имя исходного пользователя, использованного для аутентификации и создания сеанса. Псевдоним: authUser()
Синтаксис
authenticatedUser()Псевдонимы: authUser
Аргументы
- Нет.
Возвращаемое значение
Имя прошедшего аутентификацию пользователя. String
Примеры
Пример использования
CREATE USER u1;
EXECUTE AS u1 SELECT currentUser(), authenticatedUser();
DROP USER u1;┌─currentUser()─┬─authenticatedUser()─┐
│ u1 │ default │
└───────────────┴─────────────────────┘bar
Добавленный в: v1.1.0
Строит столбчатую диаграмму.
Рисует полосу, ширина которой пропорциональна (x - min) и составляет width символов при x = max.
Полоса рисуется с точностью до одной восьмой символа.
Синтаксис
bar(x, min, max[, width])Аргументы
x— Отображаемое значение.(U)Int*илиFloat*илиDecimalmin— Минимальное значение.(U)Int*илиFloat*илиDecimalmax— Максимальное значение.(U)Int*илиFloat*илиDecimalwidth— Необязательный параметр. Ширина полосы в символах. Значение по умолчанию —80.const (U)Int*илиconst Float*илиconst Decimal
Возвращаемое значение
Возвращает строку с полосой в стиле Unicode-арт. String
Примеры
Пример использования
CREATE TABLE hits (EventTime DateTime('UTC')) ENGINE = Memory;
-- One row per page view, spread over the hours of a day.
INSERT INTO hits
SELECT toDateTime('2026-01-01 00:00:00', 'UTC') + toIntervalHour(hour)
FROM (
SELECT
number AS hour,
[293, 181, 115, 85, 69, 78, 113, 171, 278, 391, 458, 494, 510, 523, 540, 528, 539, 524, 506, 521, 522, 542, 494, 400][number + 1] AS count
FROM numbers(24)
)
ARRAY JOIN range(count);
SELECT
toHour(EventTime) AS h,
count() AS c,
bar(c, 0, 600, 20) AS bar
FROM hits
GROUP BY h
ORDER BY h ASC┌──h─┬───c─┬─bar────────────────┐
│ 0 │ 293 │ █████████▊ │
│ 1 │ 181 │ ██████ │
│ 2 │ 115 │ ███▊ │
│ 3 │ 85 │ ██▊ │
│ 4 │ 69 │ ██▎ │
│ 5 │ 78 │ ██▌ │
│ 6 │ 113 │ ███▊ │
│ 7 │ 171 │ █████▋ │
│ 8 │ 278 │ █████████▎ │
│ 9 │ 391 │ █████████████ │
│ 10 │ 458 │ ███████████████▎ │
│ 11 │ 494 │ ████████████████▍ │
│ 12 │ 510 │ █████████████████ │
│ 13 │ 523 │ █████████████████▍ │
│ 14 │ 540 │ ██████████████████ │
│ 15 │ 528 │ █████████████████▌ │
│ 16 │ 539 │ █████████████████▉ │
│ 17 │ 524 │ █████████████████▍ │
│ 18 │ 506 │ ████████████████▊ │
│ 19 │ 521 │ █████████████████▎ │
│ 20 │ 522 │ █████████████████▍ │
│ 21 │ 542 │ ██████████████████ │
│ 22 │ 494 │ ████████████████▍ │
│ 23 │ 400 │ █████████████▎ │
└────┴─────┴────────────────────┘blockNumber
Добавленный в: v1.1.0
Возвращает монотонно возрастающий порядковый номер блока, содержащего строку. Возвращаемый номер блока обновляется по мере возможности, поэтому он может быть не совсем точным.
Синтаксис
blockNumber()Аргументы
- Отсутствуют.
Возвращаемое значение
Порядковый номер блока данных, в котором находится строка. UInt64
Примеры
Базовое использование
SELECT blockNumber()
FROM
(
SELECT *
FROM system.numbers
LIMIT 10
) SETTINGS max_block_size = 2┌─blockNumber()─┐
│ 6 │
│ 6 │
│ 7 │
│ 7 │
│ 8 │
│ 8 │
│ 9 │
│ 9 │
│ 10 │
│ 10 │
└───────────────┘blockSerializedSize
Добавленный в: v20.3.0
Возвращает несжатый размер блока значений на диске в байтах.
Синтаксис
blockSerializedSize(x1[, x2[, ...]])Аргументы
x1[, x2, ...]— Любое количество значений, для которых нужно получить размер блока в несжатом виде.Any
Возвращаемое значение
Возвращает число байтов, которое будет записано на диск для блока значений без сжатия. UInt64
Примеры
Пример использования
SELECT blockSerializedSize(maxState(1)) AS x;┌─x─┐
│ 2 │
└───┘blockSize
Добавленный в: v1.1.0
В ClickHouse запросы обрабатываются блоками (фрагментами). Эта функция возвращает размер блока (количество строк), в котором она вызвана.
Синтаксис
blockSize()Аргументы
- Отсутствуют.
Возвращаемое значение
Возвращает количество строк в текущем блоке. UInt64
Примеры
Пример использования
SELECT blockSize()
FROM system.numbers LIMIT 5┌─blockSize()─┐
│ 5 │
│ 5 │
│ 5 │
│ 5 │
│ 5 │
└─────────────┘buildId
Добавленный в: v20.5.0
Возвращает идентификатор сборки, сгенерированный компилятором для бинарного файла запущенного сервера ClickHouse. Если функция выполняется в контексте distributed таблицы, она возвращает обычный столбец со значениями, относящимися к каждому сегменту. В противном случае она возвращает постоянное значение.
Синтаксис
buildId()Аргументы
- Отсутствуют.
Возвращаемое значение
Возвращает идентификатор сборки. String
Примеры
Пример использования
SELECT buildId()┌─buildId()────────────────────────────────┐
│ B49BA4BC500E5E850F832BEC918885516B22FC0E │
└──────────────────────────────────────────┘byteSize
Добавленный в: v21.1.0
Возвращает оценку несжатого размера своих аргументов в памяти в байтах.
Для аргументов String функция возвращает длину строки + 8 (длина).
Если у функции несколько аргументов, она суммирует их размеры в байтах.
Синтаксис
byteSize(arg1[, arg2, ...])Аргументы
arg1[, arg2, ...]— Значения любого типа данных, для которых требуется оценить размер в байтах в несжатом виде.Any
Возвращаемое значение
Возвращает оценку размера аргументов в памяти в байтах. UInt64
Примеры
Пример использования
SELECT byteSize('string')┌─byteSize('string')─┐
│ 14 │
└────────────────────┘Несколько аргументов
SELECT byteSize(NULL, 1, 0.3, '')┌─byteSize(NULL, 1, 0.3, '')─┐
│ 18 │
└────────────────────────────┘catboostEvaluate
Добавленный в: v22.9.0
Оценивает внешнюю модель CatBoost. CatBoost — библиотека градиентного бустинга с открытым исходным кодом, разработанная в Yandex для машинного обучения. Принимает путь к модели CatBoost и аргументы модели (признаки).
Предварительные требования
- Соберите библиотеку для оценки CatBoost
Перед оценкой моделей CatBoost необходимо, чтобы библиотека libcatboostmodel.<so|dylib> была доступна. См. документацию CatBoost, чтобы узнать, как ее скомпилировать.
Затем укажите путь к libcatboostmodel.<so|dylib> в конфигурации ClickHouse:
<clickhouse>
...
<catboost_lib_path>/path/to/libcatboostmodel.so</catboost_lib_path>
...
</clickhouse>По соображениям безопасности и изоляции оценка модели выполняется не в серверном процессе, а в процессе clickhouse-library-bridge.
При первом вызове catboostEvaluate() сервер запускает процесс clickhouse-library-bridge, если он ещё не запущен. Оба процесса
взаимодействуют через HTTP-интерфейс. По умолчанию используется порт 9012. Другой порт можно указать следующим образом — это полезно, если порт
9012 уже занят другим сервисом.
<library_bridge>
<port>9019</port>
</library_bridge>- Обучите модель CatBoost с использованием libcatboost
См. раздел Обучение и применение моделей, чтобы узнать, как обучать модели CatBoost на обучающем наборе данных.
Файл модели должен находиться в каталоге user_files, как и для функции file.
Синтаксис
catboostEvaluate(path_to_model, feature_1[, feature_2, ..., feature_n])Аргументы
path_to_model— Путь к модели CatBoost, расположенной в каталогеuser_files.const Stringfeature— Один или несколько признаков (аргументов) модели.Float*
Возвращаемое значение
Возвращает результат оценки модели. Float64
Примеры
catboostEvaluate
SELECT catboostEvaluate('/var/lib/clickhouse/user_files/occupy.bin', Temperature, Humidity, Light, CO2, HumidityRatio) AS prediction FROM occupancy LIMIT 14.695691092573497colorOKLABToSRGB
Добавленный в: v26.2.0
Преобразует цвет из перцептивного цветового пространства OKLab в цветовое пространство sRGB.
Входной цвет задается в цветовом пространстве OKLab. Если входные значения выходят за пределы типичных диапазонов OKLab, результат зависит от реализации.
OKLab использует три компонента:
- L: перцептивная светлота (обычно в диапазоне [0..1])
- a: зелено-красная оппонентная ось
- b: сине-желтая оппонентная ось
Компоненты a и b теоретически не ограничены, но на практике обычно находятся в пределах от -0.4 до 0.4. OKLab разработано так, чтобы быть перцептуально равномерным и при этом не требовать больших вычислительных затрат.
Преобразование задумано как обратное к colorSRGBToOKLAB и состоит из следующих этапов:
- Преобразование из OKLab в линейный sRGB.
- Преобразование из линейного sRGB в sRGB с гамма-кодированием.
Необязательный аргумент gamma задает показатель степени, используемый при преобразовании из линейного sRGB в значения RGB с гамма-кодированием. Если он не указан, используется значение gamma по умолчанию для согласованности с colorSRGBToOKLAB.
Дополнительные сведения о цветовом пространстве OKLab и его связи с sRGB см. по адресу https://developer.mozilla.org/en-US/docs/Web/CSS/Reference/Values/color_value/oklab .
Синтаксис
colorOKLABToSRGB(tuple [, gamma])Аргументы
tuple— Кортеж из трёх числовых значенийL,a,b, гдеLнаходится в диапазоне[0...1].Tuple(Float64, Float64, Float64)gamma— Необязательный параметр. Показатель степени, используемый для преобразования линейного sRGB обратно в sRGB путём применения(x ^ (1 / gamma)) * 255к каждому каналуx. Значение по умолчанию —2.2.Float64
Возвращаемое значение
Возвращает кортеж (R, G, B), представляющий значения цвета в sRGB. Tuple(Float64, Float64, Float64)
Примеры
Преобразование OKLAB в sRGB (Float)
SELECT colorOKLABToSRGB((0.4466, 0.0991, 0.44)) AS rgb;┌─rgb──────────────────────┐
│ (198.07056923258935,0,0) │
└──────────────────────────┘Преобразование OKLAB в sRGB (UInt8)
WITH colorOKLABToSRGB((0.7, 0.1, 0.54)) AS t
SELECT tuple(toUInt8(t.1), toUInt8(t.2), toUInt8(t.3)) AS RGB;┌─RGB───────┐
│ (255,0,0) │
└───────────┘colorOKLCHToSRGB
Добавленный в: v25.7.0
Преобразует цвет из перцептуально равномерного цветового пространства OKLCH в привычное цветовое пространство sRGB.
Если L выходит за пределы диапазона [0...1], C отрицательно или H выходит за пределы диапазона [0...360], результат зависит от реализации.
Преобразование обратно colorSRGBToOKLCH:
- Из OKLCH в OKLab.
- Из OKLab в линейный sRGB
- Из линейного sRGB в sRGB
Второй аргумент gamma используется на последнем этапе.
Справочную информацию о цветах в пространстве OKLCH и о том, как они соответствуют цветам sRGB, см. на https://oklch.com/.
Синтаксис
colorOKLCHToSRGB(tuple [, gamma])Аргументы
tuple— Кортеж из трёх числовых значенийL,C,H, гдеLнаходится в диапазоне[0...1],C >= 0, аH— в диапазоне[0...360].Tuple(Float64, Float64, Float64)gamma— Необязательный параметр. Показатель степени, используемый для преобразования линейного sRGB обратно в sRGB по формуле(x ^ (1 / gamma)) * 255для каждого каналаx. Значение по умолчанию —2.2.Float64
Возвращаемое значение
Возвращает кортеж (R, G, B), представляющий значения цвета в sRGB. Tuple(Float64, Float64, Float64)
Примеры
Преобразование OKLCH в sRGB
SELECT colorOKLCHToSRGB((0.6, 0.12, 40)) AS rgb;┌─rgb───────────────────────────────────────────────────────┐
│ (186.02058688365264,100.68677189684993,71.67819977081575) │
└───────────────────────────────────────────────────────────┘Преобразовать OKLCH в sRGB (UInt8)
WITH colorOKLCHToSRGB((0.6, 0.12, 40)) AS t
SELECT tuple(toUInt8(t.1), toUInt8(t.2), toUInt8(t.3)) AS RGB;┌─RGB──────────┐
│ (186,100,71) │
└──────────────┘colorSRGBToOKLAB
Добавленный в: v26.2.0
Преобразует цвет, закодированный в цветовом пространстве sRGB, в перцептуально равномерное цветовое пространство OKLAB.
Если какой-либо входной канал выходит за пределы [0...255] или значение гаммы не является положительным, поведение зависит от реализации.
Преобразование состоит из двух этапов:
- из sRGB в линейный sRGB
- из линейного sRGB в OKLab
Синтаксис
colorSRGBToOKLAB(tuple[, gamma])Аргументы
tuple— Кортеж из трёх значений R, G, B в диапазоне[0...255].Tuple(UInt8, UInt8, UInt8)gamma— Необязательно. Показатель степени, используемый для линеаризации sRGB путём применения(x / 255)^gammaк каждому каналуx. Значение по умолчанию —2.2.Float64
Возвращаемое значение
Возвращает кортеж (L, a, b), представляющий значения в цветовом пространстве OKLAB. Tuple(Float64, Float64, Float64)
Примеры
Преобразование sRGB в OKLAB
SELECT colorSRGBToOKLAB((128, 64, 32), 2.2) AS lab;┌─lab──────────────────────────────────────────────────────────┐
│ (0.4436238384931984,0.07266246769242975,0.07500108778529994) │
└──────────────────────────────────────────────────────────────┘colorSRGBToOKLCH
Добавленный в: v25.7.0
Преобразует цвет, закодированный в цветовом пространстве sRGB, в перцептуально равномерное цветовое пространство OKLCH.
Если какой-либо входной канал выходит за пределы [0...255] или значение гаммы не является положительным, поведение зависит от реализации.
Преобразование состоит из трёх этапов:
- из sRGB в линейный sRGB
- из линейного sRGB в OKLab
- из OKLab в OKLCH.
Справочную информацию о цветах в пространстве OKLCH и о том, как они соотносятся с цветами sRGB, см. на https://OKLCH.com/.
Синтаксис
colorSRGBToOKLCH(tuple[, gamma])Аргументы
tuple— Кортеж из трёх значений R, G, B в диапазоне[0...255].Tuple(UInt8, UInt8, UInt8)gamma— Необязательный параметр. Показатель степени, используемый для линеаризации sRGB: к каждому каналуxприменяется(x / 255)^gamma. Значение по умолчанию —2.2.Float64
Возвращаемое значение
Возвращает кортеж (L, C, H), содержащий значения в цветовом пространстве OKLCH. Tuple(Float64, Float64, Float64)
Примеры
Преобразование sRGB в OKLCH
SELECT colorSRGBToOKLCH((128, 64, 32), 2.2) AS lch;┌─lch───────────────────────────────────────────────────────┐
│ (0.4436238384931984,0.1044269954567863,45.90734548193018) │
└───────────────────────────────────────────────────────────┘connectionId
Добавленный в: v21.3.0
Возвращает идентификатор соединения клиента, отправившего текущий запрос.
Эта функция особенно полезна при отладке.
Она была создана для совместимости с функцией MySQL CONNECTION_ID.
Обычно она не используется в запросах для продакшна.
Синтаксис
connectionId()Аргументы
- Отсутствуют.
Возвращаемое значение
Возвращает идентификатор соединения текущего клиента. UInt64
Примеры
Пример использования
SELECT connectionId();┌─connectionId()─┐
│ 0 │
└────────────────┘countDigits
Добавленный в: v20.8.0
Возвращает количество десятичных цифр, необходимое для представления значения.
Синтаксис
countDigits(x)Аргументы
Возвращаемое значение
Возвращает количество цифр, необходимое для представления числа x. UInt8
Примеры
Пример использования
SELECT countDigits(toDecimal32(1, 9)), countDigits(toDecimal32(-1, 9)),
countDigits(toDecimal64(1, 18)), countDigits(toDecimal64(-1, 18)),
countDigits(toDecimal128(1, 38)), countDigits(toDecimal128(-1, 38));┌─countDigits(toDecimal32(1, 9))─┬─countDigits(toDecimal32(-1, 9))─┬─countDigits(toDecimal64(1, 18))─┬─countDigits(toDecimal64(-1, 18))─┬─countDigits(toDecimal128(1, 38))─┬─countDigits(toDecimal128(-1, 38))─┐
│ 10 │ 10 │ 19 │ 19 │ 39 │ 39 │
└────────────────────────────────┴─────────────────────────────────┴─────────────────────────────────┴──────────────────────────────────┴──────────────────────────────────┴───────────────────────────────────┘currentDatabase
Добавленный в: v1.1.0
Возвращает имя текущей базы данных.
Полезно в параметрах движка таблицы в запросах CREATE TABLE, где требуется указать базу данных.
См. также оператор SET.
Синтаксис
currentDatabase()Псевдонимы: current_database, DATABASE, SCHEMA
Аргументы
- None.
Возвращаемое значение
Возвращает имя текущей базы данных. String
Примеры
Пример использования
SELECT currentDatabase()┌─currentDatabase()─┐
│ default │
└───────────────────┘Стандартный синтаксис SQL без скобок
SELECT CURRENT_DATABASE┌─CURRENT_DATABASE─┐
│ default │
└──────────────────┘currentHandler
Добавлено в: v26.6.0
Возвращает имя HTTP-обработчика, определённого в SQL (созданного с помощью CREATE HANDLER), который вызвал запрос.
Возвращает пустую строку, если запрос был вызван не через такой обработчик.
Полезна для настройки поведения запроса в зависимости от вызвавшего его обработчика.
Синтаксис
currentHandler()Аргументы
- Нет.
Возвращаемое значение
Возвращает имя текущего обработчика. String
Примеры
Пример использования
SELECT currentHandler()currentProfiles
Добавленный в: v21.9.0
Возвращает массив профилей настроек текущего пользователя.
Синтаксис
currentProfiles()Аргументы
- Отсутствуют.
Возвращаемое значение
Возвращает массив профилей настроек для текущего пользователя. Array(String)
Примеры
Пример использования
SELECT currentProfiles();┌─currentProfiles()─┐
│ ['default'] │
└───────────────────┘currentQueryID
Добавленный в: v25.2.0
Возвращает текущий Query id.
Синтаксис
currentQueryID()Псевдонимы: current_query_id
Аргументы
- Отсутствуют.
Возвращаемое значение
Примеры
Пример
SELECT currentQueryID();┌─currentQueryID()─────────────────────┐
│ 1280d0e8-1a08-4524-be6e-77975bb68e7d │
└──────────────────────────────────────┘currentRequestURL
Добавлено в: v26.6.0
Возвращает URL HTTP-запроса (путь и строку запроса), которым был вызван запрос. Возвращает пустую строку, если запрос был выполнен не через HTTP.
Полезна в сочетании с определёнными в SQL HTTP-обработчиками (CREATE HANDLER) для извлечения параметров,
встроенных в путь запроса.
Синтаксис
currentRequestURL()Аргументы
- Нет.
Возвращаемое значение
Возвращает URL текущего HTTP-запроса. String
Примеры
Пример использования
SELECT currentRequestURL()currentRoles
Добавленный в: v21.9.0
Возвращает массив ролей, назначенных текущему пользователю.
Синтаксис
currentRoles()Аргументы
- Отсутствуют.
Возвращаемое значение
Возвращает массив ролей, назначенных текущему пользователю. Array(String)
Примеры
Пример использования
SELECT currentRoles();┌─currentRoles()─┐
│ [] │
└────────────────┘currentSchemas
Добавленный в: v23.7.0
То же, что и функция currentDatabase, но
- принимает булев аргумент, который игнорируется
- возвращает имя базы данных в виде массива с одним значением.
Функция currentSchemas существует только для совместимости с PostgreSQL.
Используйте вместо неё currentDatabase.
См. также оператор SET.
Синтаксис
currentSchemas(bool)Псевдонимы: current_schemas
Аргументы
bool— Логическое значение, которое игнорируется.Bool
Возвращаемое значение
Возвращает массив из одного элемента с именем текущей базы данных. Array(String)
Примеры
Пример использования
SELECT currentSchemas(true)┌─currentSchemas(true)─┐
│ ['default'] │
└──────────────────────┘currentUser
Добавленный в: v20.1.0
Возвращает имя текущего пользователя. При распределённом запросе возвращается имя пользователя, который инициировал запрос.
Синтаксис
currentUser()Псевдонимы: session_user, current_user, user
Аргументы
- None.
Возвращаемое значение
Возвращает имя текущего пользователя или логин пользователя, который инициировал запрос. String
Примеры
Пример использования
SELECT currentUser()┌─currentUser()─┐
│ default │
└───────────────┘Стандартный синтаксис SQL без скобок
SELECT CURRENT_USER┌─CURRENT_USER─┐
│ default │
└──────────────┘defaultProfiles
Добавленный в: v21.9.0
Возвращает массив имён профилей настроек по умолчанию для текущего пользователя.
Синтаксис
defaultProfiles()Аргументы
- Отсутствуют.
Возвращаемое значение
Возвращает массив имён профилей настроек, используемых по умолчанию для текущего пользователя. Array(String)
Примеры
Пример использования
SELECT defaultProfiles();┌─defaultProfiles()─┐
│ ['default'] │
└───────────────────┘defaultRoles
Добавленный в: v21.9.0
Возвращает массив ролей по умолчанию для текущего пользователя.
Синтаксис
defaultRoles()Аргументы
- Нет.
Возвращаемое значение
Возвращает массив ролей по умолчанию для текущего пользователя. Array(String)
Примеры
Пример использования
SELECT defaultRoles();┌─defaultRoles()─┐
│ [] │
└────────────────┘defaultValueOfArgumentType
Добавленный в: v1.1.0
Возвращает значение по умолчанию для указанного типа данных. Не включает значения по умолчанию для пользовательских столбцов, заданных пользователем.
Синтаксис
defaultValueOfArgumentType(expression)Аргументы
expression— значение произвольного типа или выражение, результатом которого является значение произвольного типа.Any
Возвращаемое значение
Возвращает 0 для чисел, пустую строку для строк или NULL для типа Nullable. UInt8 или String или NULL
Примеры
Пример использования
SELECT defaultValueOfArgumentType(CAST(1 AS Int8));┌─defaultValueOfArgumentType(CAST(1, 'Int8'))─┐
│ 0 │
└─────────────────────────────────────────────┘Пример Nullable
SELECT defaultValueOfArgumentType(CAST(1 AS Nullable(Int8)));┌─defaultValueOfArgumentType(CAST(1, 'Nullable(Int8)'))─┐
│ ᴺᵁᴸᴸ │
└───────────────────────────────────────────────────────┘defaultValueOfTypeName
Добавленный в: v1.1.0
Возвращает значение по умолчанию для заданного имени типа.
Синтаксис
defaultValueOfTypeName(type)Аргументы
type— Строка с именем типа.String
Возвращаемое значение
Возвращает значение по умолчанию для указанного имени типа: 0 для чисел, пустую строку для строк или NULL для Nullable UInt8 или String или NULL
Примеры
Пример использования
SELECT defaultValueOfTypeName('Int8');┌─defaultValueOfTypeName('Int8')─┐
│ 0 │
└────────────────────────────────┘Пример Nullable
SELECT defaultValueOfTypeName('Nullable(Int8)');┌─defaultValueOfTypeName('Nullable(Int8)')─┐
│ ᴺᵁᴸᴸ │
└──────────────────────────────────────────┘digits
Добавленный в: v26.7.0
Возвращает цифры числа n, начиная с указанного смещения offset.
Отсчёт начинается с 1 по следующей логике:
- Если
offsetравен0, генерируется исключение, так какoffsetиспользует нумерацию с 1. - Если
offsetотрицательный, отсчёт начинается сoffsetцифр от конца числа, а не от начала. - Если
offsetбольше количества цифр вn, возвращается0.
Для необязательного аргумента length действует следующая логика:
- Если
lengthположительный, это количество цифр, которые нужно взять, начиная сoffset - Если
lengthотрицательный, это количество цифр справа в числе, которые нужно исключить
См. также функцию substring, которая выполняет аналогичную операцию со строками.
Синтаксис
digits(n, offset[, length])Аргументы
n— Число, цифры которого нужно вычислить.(U)Int8or(U)Int16or(U)Int32or(U)Int64offset— Начальная позиция цифры вn.(U)Int8or(U)Int16or(U)Int32or(U)Int64length— Необязательный параметр. Максимальная длина последовательности цифр.(U)Int8or(U)Int16or(U)Int32or(U)Int64
Возвращаемое значение
Выбранные цифры числа n, интерпретируемые как UInt64. Возвращает 0, если выбранный диапазон пуст. Ведущие нули не сохраняются. UInt64
Примеры
Положительное смещение
SELECT digits(1234567890, 7)7890Положительные значения смещения и длины
SELECT digits(1234567890, 7, 2)78При отрицательном смещении отсчёт ведётся справа
SELECT digits(1234567890, -3)890При отрицательной длине цифры справа не учитываются
SELECT digits(1234567890, 3, -2)345678При смещении за пределы конца возвращается 0
SELECT digits(1234567890, 11)0displayName
Добавленный в: v22.11.0
Возвращает значение display_name из конфигурации или полное доменное имя (FQDN) сервера, если оно не задано.
Синтаксис
displayName()Аргументы
- Отсутствуют.
Возвращаемое значение
Возвращает значение display_name из config или FQDN сервера, если оно не задано. String
Примеры
Пример использования
SELECT displayName();┌─displayName()─┐
│ production │
└───────────────┘dumpColumnStructure
Добавленный в: v1.1.0
Выводит подробное описание внутренней структуры столбца и его типа данных.
Синтаксис
dumpColumnStructure(x)Аргументы
x— Значение, для которого требуется получить описание.Any
Возвращаемое значение
Возвращает описание структуры столбца, используемой для представления этого значения. String
Примеры
Пример использования
SELECT dumpColumnStructure(CAST('2018-01-01 01:02:03', 'DateTime'));┌─dumpColumnStructure(CAST('2018-01-01 01:02:03', 'DateTime'))─┐
│ DateTime, Const(size = 1, UInt32(size = 1)) │
└──────────────────────────────────────────────────────────────┘enabledProfiles
Добавленный в: v21.9.0
Возвращает массив имен профилей настроек, включенных для текущего пользователя.
Синтаксис
enabledProfiles()Аргументы
- Нет.
Возвращаемое значение
Возвращает массив имен профилей настроек, включенных для текущего пользователя. Array(String)
Примеры
Пример использования
SELECT enabledProfiles();┌─enabledProfiles()─┐
│ ['default'] │
└───────────────────┘enabledRoles
Добавленный в: v21.9.0
Возвращает массив ролей, включенных для текущего пользователя.
Синтаксис
enabledRoles()Аргументы
- Нет.
Возвращаемое значение
Возвращает массив имён ролей, включённых для текущего пользователя. Array(String)
Примеры
Пример использования
SELECT enabledRoles();┌─enabledRoles()─┐
│ [] │
└────────────────┘errorCodeToName
Добавленный в: v20.12.0
Возвращает текстовое название числового кода ошибки ClickHouse. Соответствие между числовыми кодами ошибок и их названиями доступно здесь.
Синтаксис
errorCodeToName(error_code)Аргументы
Возвращаемое значение
Возвращает текстовое название error_code. String
Примеры
Пример использования
SELECT errorCodeToName(252);┌─errorCodeToName(252)─┐
│ TOO_MANY_PARTS │
└──────────────────────┘file
Добавленный в: v21.3.0
Читает файл как строку и загружает данные в указанный столбец. Содержимое файла не интерпретируется.
См. также табличную функцию file.
Синтаксис
file(path[, default])Аргументы
path— Путь к файлу относительноuser_files_path. Поддерживаются подстановочные шаблоны*,**,?,{abc,def}и{N..M}, гдеNиM— числа, а'abc'и'def'— строки.Stringdefault— Значение, которое возвращается, если файл не существует или к нему нет доступа.StringилиNULL
Возвращаемое значение
Возвращает содержимое файла в виде строки. String
Примеры
Вставка файлов в таблицу
INSERT INTO FUNCTION file('a.txt', 'RawBLOB') SELECT 'Hello' SETTINGS engine_file_truncate_on_insert = 1;
INSERT INTO FUNCTION file('b.txt', 'RawBLOB') SELECT 'World!' SETTINGS engine_file_truncate_on_insert = 1;
CREATE TABLE data (a String, b String) ENGINE = Memory;
INSERT INTO data SELECT file('a.txt'), file('b.txt');
SELECT * FROM data;┌─a─────┬─b──────┐
│ Hello │ World! │
└───────┴────────┘filesystemAvailable
Добавленный в: v20.1.0
Возвращает объём свободного места в файловой системе, где хранится постоянное хранилище базы данных.
Возвращаемое значение всегда меньше общего объёма свободного места (filesystemUnreserved), поскольку часть пространства зарезервирована для операционной системы.
Синтаксис
filesystemAvailable([disk_name])Аргументы
disk_name— Необязательный параметр. Имя диска, для которого нужно определить объём свободного места. Если не указано, используется диск по умолчанию.StringилиFixedString
Возвращаемое значение
Возвращает объём оставшегося свободного места в байтах. UInt64
Примеры
Пример использования
SELECT formatReadableSize(filesystemAvailable()) AS "Available space";┌─Available space─┐
│ 30.75 GiB │
└─────────────────┘filesystemCapacity
Добавленный в: v20.1.0
Возвращает объём файловой системы в байтах. Требуется настроить path к каталогу данных.
Синтаксис
filesystemCapacity([disk_name])Аргументы
disk_name— Необязательный. Имя диска, для которого нужно получить объём. Если не указано, используется диск по умолчанию.StringилиFixedString
Возвращаемое значение
Возвращает объём файловой системы в байтах. UInt64
Примеры
Пример использования
SELECT formatReadableSize(filesystemCapacity()) AS "Capacity";┌─Capacity──┐
│ 39.32 GiB │
└───────────┘filesystemUnreserved
Добавленный в: v22.12.0
Возвращает общий объём свободного места в файловой системе, где размещено постоянное хранилище базы данных (ранее filesystemFree).
См. также filesystemAvailable.
Синтаксис
filesystemUnreserved([disk_name])Аргументы
disk_name— Необязательный. Имя диска, для которого нужно определить общий объём свободного места. Если не указано, используется диск по умолчанию.StringилиFixedString
Возвращаемое значение
Возвращает объём свободного места в байтах. UInt64
Примеры
Пример использования
SELECT formatReadableSize(filesystemUnreserved()) AS "Free space";┌─Free space─┐
│ 32.39 GiB │
└────────────┘finalizeAggregation
Добавленный в: v1.1.0
Для состояния агрегации эта функция возвращает результат агрегации (или финализированное состояние при использовании комбинатора -State).
Синтаксис
finalizeAggregation(state)Аргументы
state— Состояние агрегации.AggregateFunction
Возвращаемое значение
Возвращает окончательный результат агрегации. Any
Примеры
Пример использования
SELECT finalizeAggregation(arrayReduce('maxState', [1, 2, 3]));┌─finalizeAggregation(arrayReduce('maxState', [1, 2, 3]))─┐
│ 3 │
└─────────────────────────────────────────────────────────┘Вместе с initializeAggregation
SET allow_deprecated_error_prone_window_functions = 1;
WITH initializeAggregation('sumState', number) AS one_row_sum_state
SELECT
number,
finalizeAggregation(one_row_sum_state) AS one_row_sum,
runningAccumulate(one_row_sum_state) AS cumulative_sum
FROM numbers(5);┌─number─┬─one_row_sum─┬─cumulative_sum─┐
│ 0 │ 0 │ 0 │
│ 1 │ 1 │ 1 │
│ 2 │ 2 │ 3 │
│ 3 │ 3 │ 6 │
│ 4 │ 4 │ 10 │
└────────┴─────────────┴────────────────┘flipCoordinates
Добавленный в: v25.11.0
Меняет местами координаты x и y геометрических объектов. Эта операция меняет широту и долготу местами, что полезно при преобразовании между различными системами координат или при исправлении порядка координат.
Для Point функция меняет местами координаты x и y. Для сложных геометрий (MultiPoint, LineString, Polygon, MultiPolygon, Ring, MultiLineString) преобразование рекурсивно применяется к каждой паре координат.
Функция поддерживает как отдельные геометрические типы (Point, MultiPoint, Ring, Polygon, MultiPolygon, LineString, MultiLineString), так и тип варианта Geometry.
Синтаксис
flipCoordinates(geometry)Аргументы
geometry— геометрия, которую нужно преобразовать. Поддерживаемые типы: Point (Tuple(Float64, Float64)), MultiPoint (Array(Point)), Ring (Array(Point)), Polygon (Array(Ring)), MultiPolygon (Array(Polygon)), LineString (Array(Point)), MultiLineString (Array(LineString)) или Geometry (вариант, содержащий любой из этих типов).
Возвращаемое значение
Геометрия с переставленными координатами. Возвращаемый тип соответствует входному типу. Point или MultiPoint или Ring или Polygon или MultiPolygon или LineString или MultiLineString или Geometry
Примеры
basic_point
SELECT flipCoordinates((1.0, 2.0));(2,1)Ring
SELECT flipCoordinates([(1.0, 2.0), (3.0, 4.0)]);[(2,1),(4,3)]polygon
SELECT flipCoordinates([[(1.0, 2.0), (3.0, 4.0)], [(5.0, 6.0), (7.0, 8.0)]]);[[(2,1),(4,3)],[(6,5),(8,7)]]geometry_wkt
SELECT flipCoordinates(readWkt('POINT(10 20)'));(20,10)geometry_polygon_wkt
SELECT flipCoordinates(readWkt('POLYGON((0 0, 5 0, 5 5, 0 5, 0 0))'));[[(0,0),(0,5),(5,5),(5,0),(0,0)]]formatQuery
Добавленный в: v23.10.0
Возвращает отформатированную, возможно, многострочную версию указанного SQL-запроса. Генерирует исключение в случае ошибки разбора. [example:multiline]
Синтаксис
formatQuery(query)Аргументы
query— SQL-запрос, который требуется отформатировать. String
Возвращаемое значение
Отформатированный запрос String
Примеры
Многострочный
SELECT formatQuery('select a, b FRom tab WHERE a > 3 and b < 3');SELECT\n a,\n b\nFROM tab\nWHERE (a > 3) AND (b < 3)formatQueryFromJSON
Добавленный в: v26.8.0
Принимает JSON-представление SQL AST (созданное parseQueryToJSON) и преобразует его обратно в строку SQL-запроса.
При использовании одного аргумента возвращает SQL в каноническом формате.
При использовании двух аргументов (json, original_query) по возможности сохраняет комментарии, пробельные символы и отступы исходного запроса.
Десериализованный AST ограничен текущими настройками сеанса max_ast_depth и max_ast_elements.
Вместе с parseQueryToJSON эта функция позволяет программно анализировать и преобразовывать запросы
в виде их JSON AST.
Синтаксис
formatQueryFromJSON(json[, original_query])Аргументы
json— JSON-строка, представляющая SQL AST.Stringoriginal_query— Необязательный параметр. Исходный SQL-запрос для сохранения форматирования.String
Возвращаемое значение
Строка SQL-запроса. String
Примеры
Цикл преобразования
SELECT formatQueryFromJSON(parseQueryToJSON('SELECT a, b FROM t WHERE x > 1'));┌─formatQueryFromJSON(parseQueryToJSON('SELECT a, b FROM t WHERE x > 1'))─┐
│ SELECT a, b FROM t WHERE x > 1 │
└─────────────────────────────────────────────────────────────────────────┘Сохранять форматирование
SELECT formatQueryFromJSON(parseQueryToJSON('SELECT a FROM t'), 'SELECT /* comment */ a FROM t');┌─formatQueryFromJSON(parseQueryToJSON('SELECT a FROM t'), 'SELECT /* comment */ a FROM t')─┐
│ SELECT /* comment */ a FROM t │
└───────────────────────────────────────────────────────────────────────────────────────────┘formatQueryOrNull
Добавленный в: v23.11.0
Возвращает отформатированную, возможно, многострочную версию заданного SQL-запроса. В случае ошибки разбора возвращает NULL. [example:multiline]
Синтаксис
formatQueryOrNull(query)Аргументы
query— SQL-запрос для форматирования. String
Возвращаемое значение
Отформатированный запрос String
Примеры
многострочный
SELECT formatQuery('select a, b FRom tab WHERE a > 3 and b < 3');SELECT\n a,\n b\nFROM tab\nWHERE (a > 3) AND (b < 3)formatQuerySingleLine
Добавленный в: v23.10.0
Как formatQuery(), но возвращаемая форматированная строка не содержит переводов строки. Генерирует исключение в случае ошибки разбора.
[example:multiline]
Синтаксис
formatQuerySingleLine(query)Аргументы
query— SQL-запрос, который нужно отформатировать. String
Возвращаемое значение
Отформатированный запрос String
Примеры
многострочный
SELECT formatQuerySingleLine('select a, b FRom tab WHERE a > 3 and b < 3');SELECT a, b FROM tab WHERE (a > 3) AND (b < 3)formatQuerySingleLineOrNull
Добавленный в: v23.11.0
Аналогично formatQuery(), но возвращаемая форматированная строка не содержит разрывов строк. В случае ошибки разбора возвращает NULL. [example:multiline]
Синтаксис
formatQuerySingleLineOrNull(query)Аргументы
query— SQL-запрос, который нужно отформатировать.String
Возвращаемое значение
Отформатированный запрос String
Примеры
многострочный
SELECT formatQuerySingleLine('select a, b FRom tab WHERE a > 3 and b < 3');SELECT a, b FROM tab WHERE (a > 3) AND (b < 3)formatReadableDecimalSize
Добавленный в: v22.11.0
Для заданного размера (количества байт) эта функция возвращает удобочитаемое округлённое значение с суффиксом (KB, MB и т. д.) в виде строки.
Обратной операцией для этой функции является parseReadableSize.
Синтаксис
formatReadableDecimalSize(value[, precision])Аргументы
value— Размер в байтах.Int8илиInt16илиInt32илиInt64илиUInt8илиUInt16илиUInt32илиUInt64илиFloat32илиFloat64илиDecimalprecision— Необязательно. Количество цифр после десятичной точки. По умолчанию 2.const UInt8
Возвращаемое значение
Возвращает округлённый размер в удобочитаемом виде с суффиксом в виде строки. String
Примеры
Форматирование размеров файлов
SELECT
arrayJoin([1, 1024, 1024*1024, 192851925]) AS filesize_bytes,
formatReadableDecimalSize(filesize_bytes) AS filesize┌─filesize_bytes─┬─filesize──┐
│ 1 │ 1.00 B │
│ 1024 │ 1.02 KB │
│ 1048576 │ 1.05 MB │
│ 192851925 │ 192.85 MB │
└────────────────┴───────────┘С указанием точности
SELECT
formatReadableDecimalSize(192851925, 0) AS no_decimals,
formatReadableDecimalSize(192851925, 4) AS four_decimals┌─no_decimals─┬─four_decimals─┐
│ 193 MB │ 192.8519 MB │
└─────────────┴───────────────┘formatReadableQuantity
Добавленный в: v20.10.0
Для заданного числа эта функция возвращает строку с округлённым числом и суффиксом (тысяча, миллион, миллиард и т. д.).
Эта функция принимает на вход любой числовой тип, но внутри приводит его к Float64.
При больших значениях результат может быть неоптимальным.
Синтаксис
formatReadableQuantity(value[, precision])Аргументы
value— число для форматирования.Int8orInt16orInt32orInt64orUInt8orUInt16orUInt32orUInt64orFloat32orFloat64orDecimalprecision— необязательный параметр. Количество цифр после десятичной точки. Значение по умолчанию — 2.const UInt8
Возвращаемое значение
Возвращает округлённое число с суффиксом в виде строки. String
Примеры
Форматирование чисел с суффиксами
SELECT
arrayJoin([1024, 1234 * 1000, (4567 * 1000) * 1000, 98765432101234]) AS number,
formatReadableQuantity(number) AS number_for_humans┌─────────number─┬─number_for_humans─┐
│ 1024 │ 1.02 thousand │
│ 1234000 │ 1.23 million │
│ 4567000000 │ 4.57 billion │
│ 98765432101234 │ 98.77 trillion │
└────────────────┴───────────────────┘С указанием точности
SELECT
formatReadableQuantity(98765432101234, 0) AS no_decimals,
formatReadableQuantity(98765432101234, 4) AS four_decimals┌─no_decimals─┬─four_decimals────┐
│ 99 trillion │ 98.7654 trillion │
└─────────────┴──────────────────┘formatReadableSize
Добавленный в: v1.1.0
Для заданного размера (числа байтов) эта функция возвращает удобочитаемый округлённый размер с суффиксом (KiB, MiB и т. д.) в виде строки.
Обратными операциями для этой функции являются parseReadableSize, parseReadableSizeOrZero и parseReadableSizeOrNull.
Эта функция принимает на вход любой числовой тип, но внутри приводит его к Float64. При больших значениях результаты могут быть не самыми точными.
Синтаксис
formatReadableSize(value[, precision])Псевдонимы: FORMAT_BYTES
Аргументы
value— Размер в байтах.Int8илиInt16илиInt32илиInt64илиUInt8илиUInt16илиUInt32илиUInt64илиFloat32илиFloat64илиDecimalprecision— Необязательно. Количество цифр после десятичной точки. По умолчанию равно 2.const UInt8
Возвращаемое значение
Возвращает округлённый размер с суффиксом в удобочитаемом виде в виде строки. String
Примеры
Форматирование размеров файлов
SELECT
arrayJoin([1, 1024, 1024*1024, 192851925]) AS filesize_bytes,
formatReadableSize(filesize_bytes) AS filesize┌─filesize_bytes─┬─filesize───┐
│ 1 │ 1.00 B │
│ 1024 │ 1.00 KiB │
│ 1048576 │ 1.00 MiB │
│ 192851925 │ 183.92 MiB │
└────────────────┴────────────┘С указанием точности
SELECT
formatReadableSize(192851925, 0) AS no_decimals,
formatReadableSize(192851925, 4) AS four_decimals┌─no_decimals─┬─four_decimals─┐
│ 184 MiB │ 183.9179 MiB │
└─────────────┴───────────────┘formatReadableTimeDelta
Добавленный в: v20.12.0
Для временного интервала (delta) в секундах или выражения INTERVAL эта функция возвращает строковое представление временной дельты в year/month/day/hour/minute/second/millisecond/microsecond/nanosecond.
Эта функция принимает на вход любой числовой тип, но внутри приводит его к Float64. При больших значениях результаты могут быть неточными.
Когда передаётся выражение INTERVAL, его значение преобразуется в секунды. Единицы INTERVAL MONTH и больше (MONTH, QUARTER, YEAR) не поддерживаются, так как они не представляют собой интервал фиксированной длины в секундах.
Синтаксис
formatReadableTimeDelta(column[, maximum_unit, minimum_unit])Аргументы
column— Столбец с числовой дельтой времени или выражениемINTERVAL. ЕдиницыINTERVALMONTHи больше не поддерживаются.Float64илиIntervalmaximum_unit— Необязательный параметр. Максимальная единица, которую нужно отображать. Допустимые значения:nanoseconds,microseconds,milliseconds,seconds,minutes,hours,days,months,years. Значение по умолчанию:years.const Stringminimum_unit— Необязательный параметр. Минимальная единица, которую нужно отображать. Все меньшие единицы отбрасываются. Допустимые значения:nanoseconds,microseconds,milliseconds,seconds,minutes,hours,days,months,years. Если явно указанное значение большеmaximum_unit, будет сгенерировано исключение. Значение по умолчанию:seconds, еслиmaximum_unitравенsecondsили больше, в противном случае —nanoseconds.const String
Возвращаемое значение
Возвращает дельту времени в виде строки. String
Примеры
Пример использования
SELECT
arrayJoin([100, 12345, 432546534]) AS elapsed,
formatReadableTimeDelta(elapsed) AS time_delta┌───elapsed─┬─time_delta──────────────────────────────────────────────────────┐
│ 100 │ 1 minute and 40 seconds │
│ 12345 │ 3 hours, 25 minutes and 45 seconds │
│ 432546534 │ 13 years, 8 months, 17 days, 7 hours, 48 minutes and 54 seconds │
└───────────┴─────────────────────────────────────────────────────────────────┘С максимальной единицей измерения
SELECT
arrayJoin([100, 12345, 432546534]) AS elapsed,
formatReadableTimeDelta(elapsed, 'minutes') AS time_delta┌───elapsed─┬─time_delta─────────────────────┐
│ 100 │ 1 minute and 40 seconds │
│ 12345 │ 205 minutes and 45 seconds │
│ 432546534 │ 7209108 minutes and 54 seconds │
└───────────┴────────────────────────────────┘С использованием выражения INTERVAL
SELECT formatReadableTimeDelta(INTERVAL 12345 SECOND) AS time_delta┌─time_delta─────────────────────────┐
│ 3 hours, 25 minutes and 45 seconds │
└────────────────────────────────────┘fuzzQuery
Добавленный в: v26.2.0
Разбирает указанную строку запроса и применяет к ней случайные мутации AST (фаззинг). Возвращает полученный в результате фаззинга запрос в виде строки. Недетерминирована: каждый вызов может возвращать разный результат. Требует allow_fuzz_query_functions = 1.
Синтаксис
fuzzQuery(query)Аргументы
query— SQL-запрос для фаззинга. String
Возвращаемое значение
Строка запроса после фаззинга String
Примеры
базовый
SET allow_fuzz_query_functions = 1; SELECT fuzzQuery('SELECT 1');generateRandomStructure
Добавленный в: v23.5.0
Генерирует случайную структуру таблицы в формате column1_name column1_type, column2_name column2_type, ....
Синтаксис
generateRandomStructure([number_of_columns, seed])Аргументы
number_of_columns— Требуемое количество столбцов в итоговой структуре таблицы. Если задано значение 0 илиNull, число столбцов будет случайным — от 1 до 128. Значение по умолчанию:Null.UInt64seed— seed для получения стабильных результатов. Еслиseedне указан или задан какNull, он генерируется случайным образом.UInt64
Возвращаемое значение
Случайно сгенерированная структура таблицы. String
Примеры
Пример использования
SELECT generateRandomStructure()c1 Decimal32(5), c2 Date, c3 Tuple(LowCardinality(String), Int128, UInt64, UInt16, UInt8, IPv6), c4 Array(UInt128), c5 UInt32, c6 IPv4, c7 Decimal256(64), c8 Decimal128(3), c9 UInt256, c10 UInt64, c11 DateTimeс заданным количеством столбцов
SELECT generateRandomStructure(1)c1 Map(UInt256, UInt16)с заданным seed
SELECT generateRandomStructure(NULL, 33)c1 DateTime, c2 Enum8(\'c2V0\' = -123, \'c2V1\' = 94, \'c2V2\' = -105, \'c2V3\' = 67), c3 Nullable(UInt8), c4 String, c5 Nested(e1 IPv4, e2 UInt8, e3 UInt16, e4 UInt16, e5 Int32, e6 Map(Date, Decimal256(71))), c6 UInt32, c7 Bool, c8 Float64generateSerialID
Добавленный в: v25.1.0
Генерирует и возвращает последовательные числа, начиная с предыдущего значения счётчика.
Эта функция принимает строковый аргумент — идентификатор серии, а также необязательное начальное значение.
Сервер должен быть настроен для работы с Keeper.
Серии хранятся в узлах Keeper по пути, который можно настроить в series_keeper_path в конфигурации сервера.
Синтаксис
generateSerialID(series_identifier[, start_value])Аргументы
series_identifier— Идентификатор серииconst Stringstart_value— Необязательный. Начальное значение счётчика. По умолчанию — 0. Примечание: это значение используется только при создании новой серии и игнорируется, если серия уже существуетUInt*
Возвращаемое значение
Возвращает последовательные числа, начиная с предыдущего значения счётчика. UInt64
Примеры
первый вызов
SELECT generateSerialID('id1')┌─generateSerialID('id1')─┐
│ 0 │
└─────────────────────────┘второй вызов
SELECT generateSerialID('id1')┌─generateSerialID('id1')─┐
│ 1 │
└─────────────────────────┘обращение к столбцу
CREATE TABLE test_table (CounterID UInt32, UserID UInt32, ver UInt32) ENGINE = Memory;
INSERT INTO test_table VALUES (1, 3, 3), (1, 1, 1), (1, 2, 2), (1, 5, 5), (1, 4, 4);
SELECT *, generateSerialID('id1') FROM test_table┌─CounterID─┬─UserID─┬─ver─┬─generateSerialID('id1')─┐
│ 1 │ 3 │ 3 │ 2 │
│ 1 │ 1 │ 1 │ 3 │
│ 1 │ 2 │ 2 │ 4 │
│ 1 │ 5 │ 5 │ 5 │
│ 1 │ 4 │ 4 │ 6 │
└───────────┴────────┴─────┴─────────────────────────┘с начальным значением
SELECT generateSerialID('id2', 100)┌─generateSerialID('id2', 100)─┐
│ 100 │
└──────────────────────────────┘со начальным значением — второй вызов
SELECT generateSerialID('id2', 100)┌─generateSerialID('id2', 100)─┐
│ 101 │
└──────────────────────────────┘getClientHTTPHeader
Добавленный в: v24.5.0
Возвращает значение HTTP-заголовка.
Если такого заголовка нет или текущий запрос выполняется не через HTTP-интерфейс, функция возвращает пустую строку.
Некоторые HTTP-заголовки (например, Authorization, Authentication и X-ClickHouse-*) недоступны.
HTTP-заголовки регистронезависимы в соответствии с RFC 9110. Если функция используется в контексте распределенного запроса, она возвращает непустой результат только на узле-инициаторе.
getClientHTTPHeader читает заголовки текущего запроса, поэтому возвращает непустое значение только в том случае, если запрос отправлен через HTTP-интерфейс.
Например, передайте заголовок вместе с запросом и прочитайте его обратно через HTTP:
echo "SELECT getClientHTTPHeader('Content-Type') SETTINGS allow_get_client_http_header = 1" | \
curl 'http://localhost:8123/' --data-binary @- -H 'Content-Type: application/x-www-form-urlencoded'Приведённая выше команда возвращает application/x-www-form-urlencoded.
Синтаксис
getClientHTTPHeader(name)Аргументы
name— Имя HTTP-заголовка.String
Возвращаемое значение
Возвращает значение заголовка. String
Примеры
Пример использования
-- Over a non-HTTP interface (such as `clickhouse-client` or `clickhouse-local`) there are
-- no request headers, so the function returns an empty string. See the description above
-- for an HTTP example that returns the actual header value.
SELECT getClientHTTPHeader('Content-Type') SETTINGS allow_get_client_http_header = 1getMacro
Добавленный в: v20.1.0
Возвращает значение макроса из файла конфигурации сервера.
Макросы определяются в разделе <macros> файла конфигурации и могут использоваться, чтобы различать серверы по удобным именам, даже если у них сложные имена узлов.
Если функция выполняется в контексте distributed таблицы, она создаёт обычный столбец со значениями для каждого сегмента.
Синтаксис
getMacro(name)Аргументы
name— Имя макроса, который нужно получить.const String
Возвращаемое значение
Возвращает значение указанного макроса. String
Примеры
Базовое использование
SELECT getMacro('test');┌─getMacro('test')─┐
│ Value │
└──────────────────┘getMaxTableNameLengthForDatabase
Добавленный в: v25.1.0
Возвращает максимальную длину имени таблицы в указанной базе данных.
Синтаксис
getMaxTableNameLengthForDatabase(database_name)Аргументы
database_name— имя указанной базы данных.String
Возвращаемое значение
Возвращает длину самого длинного имени таблицы, целое число.
Примеры
обычный
SELECT getMaxTableNameLengthForDatabase('default');┌─getMaxTableNameLengthForDatabase('default')─┐
│ 206 │
└─────────────────────────────────────────────┘getMergeTreeSetting
Добавленный в: v25.6.0
Возвращает текущее значение настройки MergeTree.
Синтаксис
getMergeTreeSetting(setting_name)Аргументы
setting_name— Название настройки.String
Возвращаемое значение
Возвращает текущее значение настройки MergeTree.
Примеры
Пример использования
SELECT getMergeTreeSetting('index_granularity');┌─getMergeTreeSetting('index_granularity')─┐
│ 8192 │
└──────────────────────────────────────────┘getOSKernelVersion
Добавленный в: v21.11.0
Возвращает строку с версией ядра операционной системы.
Синтаксис
getOSKernelVersion()Аргументы
- Отсутствуют.
Возвращаемое значение
Возвращает текущую версию ядра операционной системы. String
Примеры
Пример использования
SELECT getOSKernelVersion();┌─getOSKernelVersion()────┐
│ Linux 4.15.0-55-generic │
└─────────────────────────┘getServerPort
Добавленный в: v21.10.0
Возвращает номер порта сервера для заданного протокола.
Синтаксис
getServerPort(port_name)Аргументы
port_name— Название порта.String
Возвращаемое значение
Возвращает номер порта сервера. UInt16
Примеры
Пример использования
SELECT getServerPort('tcp_port');┌─getServerPort('tcp_port')─┐
│ 9000 │
└───────────────────────────┘getServerSetting
Добавленный в: v25.6.0
Возвращает текущее значение по имени настройки сервера.
Синтаксис
getServerSetting(setting_name')Аргументы
setting_name— Название настройки сервера.String
Возвращаемое значение
Возвращает текущее значение настройки сервера. Any
Примеры
Пример использования
SELECT getServerSetting('allow_use_jemalloc_memory');┌─getServerSetting('allow_use_jemalloc_memory')─┐
│ true │
└───────────────────────────────────────────────┘getSetting
Добавленный в: v20.7.0
Возвращает текущее значение настройки.
Синтаксис
getSetting(setting_name)Аргументы
setting_Name— Имя настройки.const String
Возвращаемое значение
Возвращает текущее значение настройки. Any
Примеры
Пример использования
SELECT getSetting('enable_analyzer');
SET enable_analyzer = false;
SELECT getSetting('enable_analyzer');┌─getSetting('enable_analyzer')─┐
│ true │
└───────────────────────────────┘
┌─getSetting('enable_analyzer')─┐
│ false │
└───────────────────────────────┘getSettingOrDefault
Добавленный в: v24.10.0
Возвращает текущее значение настройки или, если в текущем профиле она не задана, значение по умолчанию, указанное во втором аргументе.
Синтаксис
getSettingOrDefault(setting_name, default_value)Аргументы
setting_name— Имя настройки.Stringdefault_value— Значение, которое возвращается, если custom_setting не задан. Значение может быть любого типа данных илиNULL.
Возвращаемое значение
Возвращает текущее значение указанной настройки или default_value, если настройка не задана.
Примеры
Пример использования
SELECT getSettingOrDefault('custom_undef1', 'my_value');
SELECT getSettingOrDefault('custom_undef2', 100);
SELECT getSettingOrDefault('custom_undef3', NULL);my_value
100
\NgetSizeOfEnumType
Добавленный в: v1.1.0
Возвращает количество полей в указанном Enum.
Синтаксис
getSizeOfEnumType(x)Аргументы
x— значение типаEnum.Enum
Возвращаемое значение
Возвращает количество полей с входными значениями типа Enum. UInt8/16
Примеры
Пример использования
SELECT getSizeOfEnumType(CAST('a' AS Enum8('a' = 1, 'b' = 2))) AS x;┌─x─┐
│ 2 │
└───┘getSubcolumn
Добавленный в: v23.3.0
Принимает выражение или идентификатор, а также константную строку с именем подстолбца.
Возвращает запрошенный подстолбец, извлечённый из выражения.
Синтаксис
getSubcolumn(nested_value, subcolumn_name)Аргументы
- Нет.
Возвращаемое значение
Примеры
getSubcolumn
SELECT getSubcolumn(array_col, 'size0'), getSubcolumn(tuple_col, 'elem_name')
FROM values('array_col Array(UInt32), tuple_col Tuple(elem_name String)', ([1, 2, 3], tuple('abc')));┌─getSubcolumn(array_col, 'size0')─┬─getSubcolumn(tuple_col, 'elem_name')─┐
│ 3 │ abc │
└──────────────────────────────────┴──────────────────────────────────────┘getTypeSerializationStreams
Добавленный в: v22.6.0
Перечисляет пути потоков типа данных. Эта функция предназначена для использования при разработке.
Синтаксис
getTypeSerializationStreams(col)Аргументы
col— Столбец или строковое представление типа данных, по которому будет определён тип данных.Any
Возвращаемое значение
Возвращает массив со всеми путями подпотоков сериализации. Array(String)
Примеры
tuple
SELECT getTypeSerializationStreams(tuple('a', 1, 'b', 2))['{TupleElement(1), InlinedStringSizes()}','{TupleElement(1), Regular}','{TupleElement(2), Regular}','{TupleElement(3), InlinedStringSizes()}','{TupleElement(3), Regular}','{TupleElement(4), Regular}']map
SELECT getTypeSerializationStreams('Map(String, Int64)')['{ArraySizes}','{ArrayElements, TupleElement(keys), InlinedStringSizes()}','{ArrayElements, TupleElement(keys), Regular}','{ArrayElements, TupleElement(values), Regular}']globalVariable
Добавленный в: v20.5.0
Принимает константный строковый аргумент и возвращает значение глобальной переменной с этим именем. Эта функция предназначена для совместимости с MySQL и не нужна и не полезна при обычной работе ClickHouse. Определено лишь несколько фиктивных глобальных переменных.
Синтаксис
globalVariable(name)Аргументы
name— имя глобальной переменной.String
Возвращаемое значение
Возвращает значение переменной name. Any
Примеры
globalVariable
SELECT globalVariable('max_allowed_packet')67108864hasColumnInTable
Добавленный в: v1.1.0
Проверяет, существует ли указанный столбец в таблице базы данных.
Для элементов во вложенной структуре данных функция проверяет наличие столбца.
Для самой вложенной структуры данных функция возвращает 0.
Синтаксис
hasColumnInTable(database, table, column)Аргументы
database— Имя базы данных.const Stringtable— Имя таблицы.const Stringcolumn— Имя столбца.const String
Возвращаемое значение
Возвращает 1, если указанный столбец существует, и 0 в противном случае. UInt8
Примеры
Проверка существующего столбца
SELECT hasColumnInTable('system','metrics','metric')1Проверка несуществующего столбца
SELECT hasColumnInTable('system','metrics','non-existing_column')0hasThreadFuzzer
Добавленный в: v20.6.0
Возвращает, включен ли thread fuzzer. Эта функция полезна только при тестировании и отладке.
Синтаксис
hasThreadFuzzer()Аргументы
- Нет.
Возвращаемое значение
Возвращает, активен ли Thread Fuzzer. UInt8
Примеры
Проверка статуса Thread Fuzzer
SELECT hasThreadFuzzer()┌─hasThreadFuzzer()─┐
│ 0 │
└───────────────────┘highlightQuery
Добавленный в: v26.5.0
Разбирает строку запроса ClickHouse SQL и возвращает массив диапазонов для подсветки синтаксиса. Каждый диапазон представляет собой именованный кортеж с начальной позицией (в байтах), конечной позицией и типом подсветки. Типы подсветки описывают синтаксическую роль фрагмента (ключевое слово, идентификатор, функция и т. д.) и могут использоваться для назначения цветов в интерфейсе. Внутри строковых шаблонов LIKE и REGEXP метасимволы и символы экранирования подсвечиваются отдельно.
Синтаксис
highlightQuery(query)Аргументы
query— Строка запроса ClickHouse SQL. String.
Возвращаемое значение
Массив именованных кортежей (begin UInt64, end UInt64, type Enum8(...)), представляющих выделенные диапазоны. Array(Tuple(begin UInt64, end UInt64, type Enum8(...)))
Примеры
простой
SELECT highlightQuery('SELECT 1')[(0,6,'keyword'),(7,8,'number')]hostName
Добавленный в: v20.5.0
Возвращает имя хоста, на котором выполняется эта функция. Если функция выполняется на удалённом сервере (распределённая обработка), возвращается имя удалённого серввера. Если функция выполняется в контексте distributed таблицы, она формирует обычный столбец со значениями для каждого сегмента. В противном случае возвращается константное значение.
Синтаксис
hostName()Псевдонимы: hostname
Аргументы
- Нет.
Возвращаемое значение
Возвращает имя хоста. String
Примеры
Пример использования
SELECT hostName()┌─hostName()─┐
│ clickhouse │
└────────────┘icebergBucket
Добавленный в: v25.5.0
Реализует логику бакет-преобразования в Iceberg
Синтаксис
icebergBucket(N, value)Аргументы
N— Количество бакетов, модуль.const (U)Int*value— Исходное значение для преобразования.(U)Int*илиBoolилиDecimalилиFloat*илиStringилиFixedStringилиUUIDилиDateилиTimeилиDateTime
Возвращаемое значение
Возвращает 32-битный хеш исходного значения. Int32
Примеры
Пример
SELECT icebergBucket(5, 1.0 :: Float32)4icebergTruncate
Добавленный в: v25.3.0
Реализует логику truncate-преобразования в Iceberg: https://iceberg.apache.org/spec/#truncate-transform-details.
Синтаксис
icebergTruncate(N, value)Аргументы
Возвращаемое значение
Тот же тип, что и у аргумента
Примеры
Пример
SELECT icebergTruncate(3, 'iceberg')iceidentity
Добавленный в: v1.1.0
Эта функция возвращает переданный ей аргумент, что полезно при отладке и тестировании. Она позволяет обойти использование индексов и вместо этого оценить производительность полного сканирования. Анализатор запросов игнорирует всё внутри функций identity при поиске подходящих индексов, а также отключает свёртку констант.
Синтаксис
identity(x)Аргументы
x— Входное значение.Any
Возвращаемое значение
Возвращает входное значение без изменений. Any
Примеры
Пример использования
SELECT identity(42)42ignore
Добавленный в: v1.1.0
Принимает произвольные аргументы и всегда возвращает 0.
Синтаксис
ignore(x)Аргументы
x— Входное значение, которое не используется и передаётся только для избежания синтаксической ошибки.Any
Возвращаемое значение
Всегда возвращает 0. UInt8
Примеры
Пример использования
SELECT ignore(0, 'ClickHouse', NULL)┌─ignore(0, 'ClickHouse', NULL)─┐
│ 0 │
└───────────────────────────────┘indexHint
Добавленный в: v1.1.0
Эта функция предназначена для отладки и интроспекции. Она игнорирует свой аргумент и всегда возвращает 1. Аргументы не вычисляются.
При анализе индекса предполагается, что аргумент этой функции не заключён в indexHint.
Это позволяет выбирать данные в диапазонах индекса по соответствующему условию, но без последующей фильтрации по этому условию.
Индекс в ClickHouse разреженный, поэтому использование indexHint вернёт больше данных, чем прямое указание того же условия.
Объяснение
Когда вы выполняете:
SELECT * FROM test WHERE key = 123;ClickHouse делает две вещи:
- Использует индекс, чтобы определить, какие гранулы (блоки примерно по 8192 строк) могут содержать
key = 123 - Читает эти гранулы и построчно фильтрует их, чтобы вернуть только строки, где
key = 123
Поэтому, даже если с диска считываются 8 192 строки, возвращается только 1 строка, которая действительно соответствует условию.
С indexHint, когда вы выполняете:
SELECT * FROM test WHERE indexHint(key = 123);ClickHouse делает только одно:
- Использует индекс, чтобы определить, какие гранулы могут содержать key = 123, и возвращает все строки из этих гранул без фильтрации.
Возвращаются все 8 192 строки, включая строки, где key = 456, key = 789 и т. д. (То есть всё, что оказалось сохранено в той же грануле.)
indexHint() предназначен не для повышения производительности. Он нужен для отладки и понимания того, как работает индекс ClickHouse:
- Какие гранулы выбирает моё условие?
- Сколько строк находится в этих гранулах?
- Эффективно ли используется мой индекс?
Примечание: Оптимизировать запрос с помощью функции indexHint невозможно. Функция indexHint не оптимизирует запрос, поскольку не предоставляет никакой дополнительной информации для анализа запроса. Наличие выражения внутри функции indexHint ничем не лучше, чем его отсутствие. Функцию indexHint можно использовать только для интроспекции и отладки, и она не повышает производительность. Если вы видите, что indexHint использует кто-либо, кроме участников ClickHouse, скорее всего, это ошибка, и его следует удалить.
Синтаксис
indexHint(expression)Аргументы
expression— Любое выражение для выбора диапазона индекса.Expression
Возвращаемое значение
Во всех случаях возвращает 1. UInt8
Примеры
Пример использования с фильтрацией по дате
-- `index_granularity` is lowered to 8 here only to keep the example small enough to follow.
-- Do not change it in production: the default of 8192 is what makes the index sparse and cheap,
-- and a small value makes the index large and slows queries down.
CREATE TABLE ontime (FlightDate Date, Carrier String)
ENGINE = MergeTree ORDER BY FlightDate
SETTINGS index_granularity = 8;
-- Ten flights on each of four days, so a granule of eight rows spans more than one day.
INSERT INTO ontime SELECT toDate('2025-09-14') + intDiv(number, 10), 'AA' FROM numbers(40);
-- The granules that hold the rows of 2025-09-15 also hold rows of the neighbouring days,
-- and `indexHint` returns all of them.
SELECT FlightDate AS k, count() FROM ontime WHERE indexHint(k = '2025-09-15') GROUP BY k ORDER BY k ASC;┌──────────k─┬─count()─┐
│ 2025-09-14 │ 2 │
│ 2025-09-15 │ 10 │
│ 2025-09-16 │ 4 │
└────────────┴─────────┘initialQueryID
Добавленный в: v1.1.0
Возвращает ID исходного запроса.
Другие параметры запроса можно извлечь из поля initial_query_id в system.query_log.
В отличие от функции queryID, initialQueryID возвращает одинаковые результаты на разных сегментах.
Синтаксис
initialQueryID()Псевдонимы: initial_query_id
Аргументы
- Нет.
Возвращаемое значение
Возвращает идентификатор исходного запроса. String
Примеры
Пример использования
CREATE TABLE tmp (str String) ENGINE = Log;
INSERT INTO tmp (*) VALUES ('a');
SELECT count(DISTINCT t) FROM (SELECT initialQueryID() AS t FROM remote('127.0.0.{1..3}', currentDatabase(), 'tmp') GROUP BY queryID());┌─countDistinct(t)─┐
│ 1 │
└──────────────────┘initialQueryStartTime
Добавленный в: v25.4.0
Возвращает время начала исходного запроса.
initialQueryStartTime возвращает одинаковый результат на разных сегментах.
Синтаксис
initialQueryStartTime()Псевдонимы: initial_query_start_time
Аргументы
- Нет.
Возвращаемое значение
Возвращает время начала исходного запроса. DateTime
Примеры
Пример использования
CREATE TABLE tmp (str String) ENGINE = Log;
INSERT INTO tmp (*) VALUES ('a');
SELECT count(DISTINCT t) FROM (SELECT initialQueryStartTime() AS t FROM remote('127.0.0.{1..3}', currentDatabase(), 'tmp') GROUP BY queryID());┌─countDistinct(t)─┐
│ 1 │
└──────────────────┘initializeAggregation
Добавленный в: v20.6.0
Вычисляет результат агрегатной функции по одному значению.
Эту функцию можно использовать для инициализации агрегатных функций с комбинатором -State.
Вы можете создавать состояния агрегатных функций и вставлять их в столбцы типа AggregateFunction или использовать инициализированные агрегаты в качестве значений по умолчанию.
Синтаксис
initializeAggregation(aggregate_function, arg1[, arg2, ...])Аргументы
aggregate_function— Имя агрегатной функции, которую нужно инициализировать.Stringarg1[, arg2, ...]— Аргументы агрегатной функции.Any
Возвращаемое значение
Возвращает результат агрегации для каждой строки, переданной в функцию. Возвращаемый тип совпадает с возвращаемым типом функции, переданной в initializeAggregation первым аргументом. Any
Примеры
Базовое использование с uniqState
SELECT uniqMerge(state) FROM (SELECT initializeAggregation('uniqState', number % 3) AS state FROM numbers(10000));┌─uniqMerge(state)─┐
│ 3 │
└──────────────────┘Использование функций sumState и finalizeAggregation
SELECT finalizeAggregation(state), toTypeName(state) FROM (SELECT initializeAggregation('sumState', number % 3) AS state FROM numbers(5));┌─finalizeAggregation(state)─┬─toTypeName(state)─────────────┐
│ 0 │ AggregateFunction(sum, UInt8) │
│ 1 │ AggregateFunction(sum, UInt8) │
│ 2 │ AggregateFunction(sum, UInt8) │
│ 0 │ AggregateFunction(sum, UInt8) │
│ 1 │ AggregateFunction(sum, UInt8) │
└────────────────────────────┴───────────────────────────────┘isConstant
Добавленный в: v20.3.0
Возвращает, является ли аргумент константным выражением. Константное выражение — это выражение, результат которого известен на этапе анализа запроса, то есть до выполнения. Например, выражения над литералами являются константными выражениями. Эта функция предназначена главным образом для разработки, отладки и демонстрации.
Синтаксис
isConstant(x)Аргументы
x— выражение для проверки.Any
Возвращаемое значение
Возвращает 1, если x — константа, и 0, если x не является константой. UInt8
Примеры
Константное выражение
SELECT isConstant(x + 1)
FROM (SELECT 43 AS x)┌─isConstant(plus(x, 1))─┐
│ 1 │
└────────────────────────┘Константа с функцией
WITH 3.14 AS pi
SELECT isConstant(cos(pi))┌─isConstant(cos(pi))─┐
│ 1 │
└─────────────────────┘Неконстантное выражение
SELECT isConstant(number)
FROM numbers(1)┌─isConstant(number)─┐
│ 0 │
└────────────────────┘Поведение функции now()
SELECT isConstant(now())┌─isConstant(now())─┐
│ 1 │
└───────────────────┘isDecimalOverflow
Добавленный в: v20.8.0
Проверяет, не содержит ли десятичное число слишком много цифр, чтобы поместиться в тип Decimal с заданной точностью.
Синтаксис
isDecimalOverflow(value[, precision])Аргументы
value— Проверяемое значение типа Decimal.Decimalprecision— Необязательно. Точность типа Decimal. Если не указано, используется исходная точность первого аргумента.UInt8
Возвращаемое значение
Возвращает 1, если десятичное значение содержит больше цифр, чем допускает его точность, и 0, если десятичное значение соответствует указанной точности. UInt8
Примеры
Пример использования
SELECT isDecimalOverflow(toDecimal32(1000000000, 0), 9),
isDecimalOverflow(toDecimal32(1000000000, 0)),
isDecimalOverflow(toDecimal32(-1000000000, 0), 9),
isDecimalOverflow(toDecimal32(-1000000000, 0));┌─isDecimalOverflow(toDecimal32(1000000000, 0), 9)─┬─isDecimalOverflow(toDecimal32(1000000000, 0))─┬─isDecimalOverflow(toDecimal32(-1000000000, 0), 9)─┬─isDecimalOverflow(toDecimal32(-1000000000, 0))─┐
│ 1 │ 1 │ 1 │ 1 │
└──────────────────────────────────────────────────┴───────────────────────────────────────────────┴───────────────────────────────────────────────────┴────────────────────────────────────────────────┘joinGet
Добавленный в: v18.16.0
Позволяет извлекать данные из таблицы так же, как из словаря. Получает данные из таблиц Join по указанному ключу JOIN.
Синтаксис
joinGet(join_storage_table_name, value_column, join_keys)Аргументы
join_storage_table_name— Идентификатор, указывающий, где выполнять поиск. Идентификатор ищется в базе данных по умолчанию (см. параметрdefault_databaseв файле конфигурации). Чтобы переопределить базу данных по умолчанию, используйте запросUSE database_nameили укажите базу данных и таблицу через точку, напримерdatabase_name.table_name.Stringvalue_column— Имя столбца таблицы, содержащего необходимые данные.const Stringjoin_keys— Список ключей JOIN.Any
Возвращаемое значение
Возвращает список значений, соответствующих списку ключей. Any
Примеры
Пример использования
CREATE TABLE id_val(`id` UInt32, `val` UInt32) ENGINE = Join(ANY, LEFT, id);
INSERT INTO id_val VALUES (1,11)(2,12)(4,13);
SELECT joinGet(id_val, 'val', toUInt32(1));┌─joinGet('id_val', 'val', toUInt32(1))─┐
│ 11 │
└───────────────────────────────────────┘Использование таблицы из текущей базы данных
SELECT joinGet(id_val, 'val', toUInt32(2));┌─joinGet('id_val', 'val', toUInt32(2))─┐
│ 12 │
└───────────────────────────────────────┘Использование массивов как ключей JOIN
CREATE TABLE some_table (id1 UInt32, id2 UInt32, name String) ENGINE = Join(ANY, LEFT, id1, id2);
INSERT INTO some_table VALUES (1, 11, 'a') (2, 12, 'b') (3, 13, 'c');
SELECT joinGet(some_table, 'name', toUInt32(1), toUInt32(11));┌─joinGet('some_table', 'name', toUInt32(1), toUInt32(11))─┐
│ a │
└──────────────────────────────────────────────────────────┘joinGetOrNull
Добавленный в: v20.4.0
Позволяет извлекать данные из таблицы так же, как из словаря.
Извлекает данные из таблиц Join по указанному ключу JOIN.
В отличие от joinGet возвращает NULL, если ключ отсутствует.
Синтаксис
joinGetOrNull(join_storage_table_name, value_column, join_keys)Аргументы
join_storage_table_name— Идентификатор, указывающий, где выполнять поиск. Поиск по идентификатору выполняется в базе данных по умолчанию (см. параметр default_database в файле конфигурации). Чтобы переопределить базу данных по умолчанию, используйте запросUSE database_nameили укажите базу данных и таблицу через точку, напримерdatabase_name.table_name.Stringvalue_column— Имя столбца таблицы, содержащего необходимые данные.const Stringjoin_keys— Список ключей JOIN.Any
Возвращаемое значение
Возвращает список значений, соответствующих списку ключей, или NULL, если ключ не найден. Any
Примеры
Пример использования
CREATE TABLE id_val(`id` UInt32, `val` UInt32) ENGINE = Join(ANY, LEFT, id);
INSERT INTO id_val VALUES (1,11)(2,12)(4,13);
SELECT joinGetOrNull(id_val, 'val', toUInt32(1)), joinGetOrNull(id_val, 'val', toUInt32(999));┌─joinGetOrNull('id_val', 'val', toUInt32(1))─┬─joinGetOrNull('id_val', 'val', toUInt32(999))─┐
│ 11 │ ᴺᵁᴸᴸ │
└─────────────────────────────────────────────┴───────────────────────────────────────────────┘lowCardinalityIndices
Добавленный в: v18.12.0
Возвращает позицию значения в словаре столбца LowCardinality. Нумерация позиций начинается с 1. Поскольку у LowCardinality используются словари на уровне частей, эта функция может возвращать разные позиции для одного и того же значения в разных частях.
Синтаксис
lowCardinalityIndices(col)Аргументы
col— Столбец с низкой кардинальностью.LowCardinality
Возвращаемое значение
Позиция значения в словаре текущей части. UInt64
Примеры
Примеры использования
DROP TABLE IF EXISTS test;
CREATE TABLE test (s LowCardinality(String)) ENGINE = Memory;
-- create two parts:
INSERT INTO test VALUES ('ab'), ('cd'), ('ab'), ('ab'), ('df');
INSERT INTO test VALUES ('ef'), ('cd'), ('ab'), ('cd'), ('ef');
-- the order the blocks are read in is not defined, so sort the result to make it reproducible:
SELECT s, lowCardinalityIndices(s) AS index FROM test ORDER BY s, index;┌─s──┬─index─┐
│ ab │ 1 │
│ ab │ 1 │
│ ab │ 1 │
│ ab │ 3 │
│ cd │ 2 │
│ cd │ 2 │
│ cd │ 2 │
│ df │ 3 │
│ ef │ 1 │
│ ef │ 1 │
└────┴───────┘lowCardinalityKeys
Добавленный в: v18.12.0
Возвращает значения словаря столбца LowCardinality. Если размер блока меньше или больше размера словаря, результат будет усечён или дополнен значениями по умолчанию. Поскольку LowCardinality использует словари на уровне частей, эта функция может возвращать разные значения словаря в разных частях.
Синтаксис
lowCardinalityKeys(col)Аргументы
col— Столбец с низкой кардинальностью.LowCardinality
Возвращаемое значение
Возвращает ключи словаря. UInt64
Примеры
lowCardinalityKeys
DROP TABLE IF EXISTS test;
CREATE TABLE test (s LowCardinality(String)) ENGINE = Memory;
-- create two parts:
INSERT INTO test VALUES ('ab'), ('cd'), ('ab'), ('ab'), ('df');
INSERT INTO test VALUES ('ef'), ('cd'), ('ab'), ('cd'), ('ef');
SELECT s, lowCardinalityKeys(s) FROM test;┌─s──┬─lowCardinalityKeys(s)─┐
│ ef │ │
│ cd │ ef │
│ ab │ cd │
│ cd │ ab │
│ ef │ │
└────┴───────────────────────┘
┌─s──┬─lowCardinalityKeys(s)─┐
│ ab │ │
│ cd │ ab │
│ ab │ cd │
│ ab │ df │
│ df │ │
└────┴───────────────────────┘materialize
Добавленный в: v1.1.0
Преобразует константу в полный столбец, содержащий одно значение. Полные столбцы и константы по-разному представлены в памяти. Функции обычно выполняют разный код для обычных и константных аргументов, хотя результат, как правило, должен быть одинаковым. Эту функцию можно использовать для отладки такого поведения.
Синтаксис
materialize(x)Аргументы
x— Константа.Any
Возвращаемое значение
Возвращает полный столбец, содержащий константное значение. Any
Примеры
Пример использования
-- In the example below the `countMatches` function expects a constant second argument.
-- This behaviour can be debugged by using the `materialize` function to turn a constant into a full column,
-- verifying that the function throws an error for a non-constant argument.
SELECT countMatches('foobarfoo', 'foo');2Преобразование константы в полный столбец
SELECT countMatches('foobarfoo', materialize('foo'));Received exception:
Code: 44. DB::Exception: A value of illegal type was provided as 2nd argument 'pattern' to function 'countMatches'. Expected: constant String, got: String. (ILLEGAL_COLUMN)minSampleSizeContinuous
Добавленный в: v23.10.0
Вычисляет минимально необходимый размер выборки для A/B-теста, сравнивающего средние значения непрерывной метрики в двух выборках.
Использует формулу, описанную в этой статье. Предполагаются одинаковые размеры экспериментальной и контрольной групп. Возвращает требуемый размер выборки для одной группы (то есть для всего эксперимента нужен размер выборки вдвое больше возвращаемого значения). Также предполагается одинаковая дисперсия тестовой метрики в экспериментальной и контрольной группах.
Синтаксис
minSampleSizeContinuous(baseline, sigma, mde, power, alpha)Псевдонимы: minSampleSizeContinous
Аргументы
baseline— Базовое значение метрики.(U)Int*илиFloat*sigma— Базовое стандартное отклонение метрики.(U)Int*илиFloat*mde— Минимальный обнаруживаемый эффект (MDE) в процентах от базового значения (например, для базового значения 112.25 MDE 0.03 означает ожидаемое изменение до 112.25 ± 112.25*0.03).(U)Int*илиFloat*power— Требуемая статистическая мощность теста (1 - вероятность ошибки II рода).(U)Int*илиFloat*alpha— Требуемый уровень значимости теста (вероятность ошибки I рода).(U)Int*илиFloat*
Возвращаемое значение
Возвращает именованный Tuple с 3 элементами: minimum_sample_size, detect_range_lower и detect_range_upper. Это соответственно: требуемый размер выборки, нижняя граница диапазона значений, которые нельзя обнаружить при вычисленном требуемом размере выборки, рассчитываемая как baseline * (1 - mde), и верхняя граница диапазона значений, которые нельзя обнаружить при вычисленном требуемом размере выборки, рассчитываемая как baseline * (1 + mde) (Float64). Tuple(Float64, Float64, Float64)
Примеры
minSampleSizeContinuous
SELECT minSampleSizeContinuous(112.25, 21.1, 0.03, 0.80, 0.05) AS sample_size(616.2931945826209,108.8825,115.6175)minSampleSizeConversion
Добавленный в: v22.6.0
Вычисляет минимально необходимый размер выборки для A/B-теста, сравнивающего конверсии (доли) в двух выборках.
Использует формулу, описанную в этой статье. Предполагается, что размеры экспериментальной и контрольной групп одинаковы. Возвращает размер выборки, необходимый для одной группы (то есть для всего эксперимента требуется выборка вдвое больше возвращаемого значения).
Синтаксис
minSampleSizeConversion(baseline, mde, power, alpha)Аргументы
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, detect_range_lower, detect_range_upper. Это, соответственно: требуемый размер выборки, нижняя граница диапазона значений, которые невозможно обнаружить при вычисленном требуемом размере выборки, рассчитываемая как baseline - mde, и верхняя граница диапазона значений, которые невозможно обнаружить при вычисленном требуемом размере выборки, рассчитываемая как baseline + mde. Tuple(Float64, Float64, Float64)
Примеры
minSampleSizeConversion
SELECT minSampleSizeConversion(0.25, 0.03, 0.80, 0.05) AS sample_size(3396.077603219163,0.22,0.28)neighbor
Добавленный в: v20.1.0
Возвращает значение из столбца с указанным смещением относительно текущей строки. Эта функция устарела и подвержена ошибкам, поскольку работает с физическим порядком блоков данных, который может не совпадать с логическим порядком, ожидаемым пользователями. Вместо неё рекомендуется использовать корректные оконные функции.
Функцию можно включить, установив allow_deprecated_error_prone_window_functions = 1.
Синтаксис
neighbor(column, offset[, default_value])Аргументы
column— Исходный столбец.Anyoffset— Смещение относительно текущей строки. Положительные значения указывают вперёд, отрицательные — назад.Integerdefault_value— Необязательно. Значение, которое возвращается, если смещение выходит за пределы данных. Если не указано, используется значение по умолчанию для типа столбца.Any
Возвращаемое значение
Возвращает значение по указанному смещению или значение по умолчанию, если смещение выходит за пределы данных. Any
Примеры
Пример использования
SET allow_deprecated_error_prone_window_functions = 1;
SELECT number, neighbor(number, 2) FROM system.numbers LIMIT 10;┌─number─┬─neighbor(number, 2)─┐
│ 0 │ 2 │
│ 1 │ 3 │
│ 2 │ 4 │
│ 3 │ 5 │
│ 4 │ 6 │
│ 5 │ 7 │
│ 6 │ 8 │
│ 7 │ 9 │
│ 8 │ 0 │
│ 9 │ 0 │
└────────┴─────────────────────┘С значением по умолчанию
SET allow_deprecated_error_prone_window_functions = 1;
SELECT number, neighbor(number, 2, 999) FROM system.numbers LIMIT 10;┌─number─┬─neighbor(number, 2, 999)─┐
│ 0 │ 2 │
│ 1 │ 3 │
│ 2 │ 4 │
│ 3 │ 5 │
│ 4 │ 6 │
│ 5 │ 7 │
│ 6 │ 8 │
│ 7 │ 9 │
│ 8 │ 999 │
│ 9 │ 999 │
└────────┴──────────────────────────┘normalizeQuery
Добавленный в: v20.8.0
Заменяет литералы, последовательности литералов и сложные псевдонимы (с пробельными символами, более чем двумя цифрами или длиной не менее 36 байт, например UUID) плейсхолдером ?.
Синтаксис
normalizeQuery(x)Аргументы
x— Строка символов.String
Возвращаемое значение
Возвращает указанную строку символов с плейсхолдерами. String
Примеры
Пример использования
SELECT normalizeQuery('[1, 2, 3, x]') AS query┌─query────┐
│ [?.., x] │
└──────────┘normalizeQueryKeepNames
Добавленный в: v21.2.0
Заменяет литералы и последовательности литералов плейсхолдером ?, но не заменяет сложные псевдонимы (содержащие пробельные символы, более двух цифр или имеющие длину не менее 36 байт, например UUID).
Это помогает лучше анализировать журналы сложных запросов.
Синтаксис
normalizeQueryKeepNames(x)Аргументы
x— Последовательность символов.String
Возвращаемое значение
Возвращает указанную последовательность символов с плейсхолдерами. String
Примеры
Пример использования
SELECT normalizeQuery('SELECT 1 AS aComplexName123'), normalizeQueryKeepNames('SELECT 1 AS aComplexName123')┌─normalizeQuery('SELECT 1 AS aComplexName123')─┬─normalizeQueryKeepNames('SELECT 1 AS aComplexName123')─┐
│ SELECT ? AS `?` │ SELECT ? AS aComplexName123 │
└───────────────────────────────────────────────┴────────────────────────────────────────────────────────┘normalizedQueryHash
Добавленный в: v20.8.0
Возвращает одинаковые 64-битные хеш-значения для похожих запросов без учёта значений литералов. Может быть полезно при анализе журнала запросов.
Синтаксис
normalizedQueryHash(x)Аргументы
x— Последовательность символов.String
Возвращаемое значение
Возвращает 64-битное хеш-значение. UInt64
Примеры
Пример использования
SELECT normalizedQueryHash('SELECT 1 AS `xyz`') != normalizedQueryHash('SELECT 1 AS `abc`') AS res┌─res─┐
│ 1 │
└─────┘normalizedQueryHashKeepNames
Добавленный в: v21.2.0
Как и normalizedQueryHash, возвращает одинаковые 64-битные хеш-значения для похожих запросов без учёта значений литералов, но не заменяет сложные псевдонимы (содержащие пробелы, более двух цифр или имеющие длину не менее 36 байт, например UUID) на плейсхолдер перед хешированием.
Может быть полезна при анализе журнала запросов.
Синтаксис
normalizedQueryHashKeepNames(x)Аргументы
x— Последовательность символов.String
Возвращаемое значение
Возвращает 64-битное хеш-значение. UInt64
Примеры
Пример использования
SELECT normalizedQueryHash('SELECT 1 AS `xyz123`') != normalizedQueryHash('SELECT 1 AS `abc123`') AS normalizedQueryHash;
SELECT normalizedQueryHashKeepNames('SELECT 1 AS `xyz123`') != normalizedQueryHashKeepNames('SELECT 1 AS `abc123`') AS normalizedQueryHashKeepNames;┌─normalizedQueryHash─┐
│ 0 │
└─────────────────────┘
┌─normalizedQueryHashKeepNames─┐
│ 1 │
└──────────────────────────────┘obfuscateQuery
Добавленный в: v26.4.0
Позволяет обфусцировать SQL-запрос, заменяя идентификаторы случайными словами, а литералы — случайными значениями, при этом сохраняя структуру запроса.
Эта функция полезна для анонимизации запросов перед логированием или предоставлением в общий доступ в целях отладки. Даже для одного и того же исходного запроса разные строки будут давать разные обфусцированные результаты, что помогает сохранять конфиденциальность при работе с несколькими запросами.
Необязательный параметр tag предотвращает устранение общих подвыражений, когда один и тот же вызов функции
используется в запросе несколько раз. Это гарантирует, что каждый вызов даст свой обфусцированный результат.
Возможности:
- Заменяет имена таблиц, имена столбцов и псевдонимы случайными словами
- Заменяет числовые и строковые литералы случайными значениями
- Сохраняет общую структуру запроса и синтаксис SQL
- Выдаёт разные результаты для разных строк
Синтаксис
obfuscateQuery(query[, tag])Аргументы
query— SQL-запрос, который нужно обфусцировать.Stringtag— Необязательно. Значение, которое позволяет предотвратить устранение общих подвыражений, если один и тот же вызов функции используется несколько раз.
Возвращаемое значение
Обфусцированный запрос, в котором идентификаторы и литералы заменены, а исходная структура запроса сохранена. String
Примеры
Базовое использование
SELECT obfuscateQuery('SELECT name, age FROM users WHERE age > 30')SELECT fruit, number FROM table WHERE number > 12С тегом для предотвращения устранения общих подвыражений
SELECT obfuscateQuery('SELECT * FROM t', 1), obfuscateQuery('SELECT * FROM t', 2)SELECT a FROM b, SELECT c FROM dДля разных строк результаты различаются
SELECT obfuscateQuery('SELECT 1') AS a, obfuscateQuery('SELECT 1') AS bSELECT 1 SELECT 1obfuscateQueryWithSeed
Добавленный в: v26.4.0
Обфусцирует SQL-запрос с использованием указанного seed, обеспечивая детерминированные результаты.
В отличие от obfuscateQuery(), эта функция выдает детерминированные результаты при использовании одного и того же seed.
Это полезно, когда требуется согласованная обфускация в нескольких запусках или когда нужно
воспроизвести один и тот же обфусцированный запрос для тестирования или отладки.
Возможности:
- Детерминированная обфускация на основе указанного seed
- Один и тот же seed всегда дает один и тот же обфусцированный результат
- Разные seed дают разные результаты
- Сохраняет структуру запроса, как и obfuscateQuery()
Сценарии использования:
- Воспроизводимые тестовые сценарии
- Согласованная анонимизация в нескольких запусках
- Отладка с согласованно обфусцированными запросами
Синтаксис
obfuscateQueryWithSeed(query, seed)Аргументы
query— SQL-запрос для обфускации.Stringseed— seed для обфускации. Один и тот же seed даёт детерминированные результаты.IntegerилиString
Возвращаемое значение
Обфусцированный запрос, детерминированно сгенерированный на основе указанного seed. String
Примеры
Детерминированная обфускация с целочисленным seed
SELECT obfuscateQueryWithSeed('SELECT name FROM users', 42)SELECT name FROM usersДетерминированная обфускация со строковым значением seed
SELECT obfuscateQueryWithSeed('SELECT id, value FROM data', 'myseed')SELECT id, value FROM dataОдинаковый seed даёт одинаковый результат
SELECT obfuscateQueryWithSeed('SELECT 1', 100) = obfuscateQueryWithSeed('SELECT 1', 100)1parseQueryToJSON
Добавлено в: v26.8.0
Разбирает строку SQL-запроса в AST (абстрактное синтаксическое дерево) и возвращает JSON-представление этого дерева.
Полученный JSON можно передать в formatQueryFromJSON для восстановления SQL-запроса или напрямую отправить
на сервер, указав значение clickhouse_json для настройки dialect (при включённой настройке enable_json_ast_dialect).
Это полезно для инструментов, которым необходимо программно анализировать или преобразовывать запросы, минуя грамматику SQL.
Не для каждого SQL-запроса можно получить точное JSON-представление. Запросы, содержащие данные, которые невозможно
воспроизвести в JSON-форме (например, встроенные данные INSERT ... VALUES / INSERT ... FORMAT), а также типы узлов AST,
для которых ещё не реализована JSON-сериализация, отклоняются с ошибкой BAD_ARGUMENTS, вместо создания JSON, который
formatQueryFromJSON не сможет прочитать обратно.
Ограничения разбора (max_query_size, max_parser_depth, max_parser_backtracks) берутся из текущих
настроек сеанса.
Синтаксис
parseQueryToJSON(sql)Аргументы
sql— строка SQL-запроса для разбора.String
Возвращаемое значение
JSON-строка, представляющая AST. String
Примеры
Простой SELECT
SELECT formatQueryFromJSON(parseQueryToJSON('SELECT 1'));┌─formatQueryFromJSON(parseQueryToJSON('SELECT 1'))─┐
│ SELECT 1 │
└───────────────────────────────────────────────────┘parseReadableSize
Добавленный в: v24.6.0
Эта функция принимает строку, содержащую размер в байтах и единицу измерения B, KiB, KB, MiB, MB и т. д. (то есть ISO/IEC 80000-13 или десятичную байтовую единицу), и возвращает соответствующее количество байт.
Если функция не может разобрать входное значение, она генерирует исключение.
Обратными операциями этой функции являются formatReadableSize и formatReadableDecimalSize.
Синтаксис
parseReadableSize(x)Аргументы
x— Размер в удобочитаемом формате с единицами ISO/IEC 80000-13 или десятичными байтовыми единицами.String
Возвращаемое значение
Возвращает количество байтов, округлённое вверх до ближайшего целого числа. UInt64
Примеры
Пример использования
SELECT arrayJoin(['1 B', '1 KiB', '3 MB', '5.314 KiB']) AS readable_sizes, parseReadableSize(readable_sizes) AS sizes;┌─readable_sizes─┬───sizes─┐
│ 1 B │ 1 │
│ 1 KiB │ 1024 │
│ 3 MB │ 3000000 │
│ 5.314 KiB │ 5442 │
└────────────────┴─────────┘parseReadableSizeOrNull
Добавленный в: v24.6.0
Если строка содержит размер в байтах и единицу измерения B, KiB, KB, MiB, MB и т. д. (то есть ISO/IEC 80000-13 или десятичную единицу измерения байтов), эта функция возвращает соответствующее количество байтов.
Если функция не может разобрать входное значение, она возвращает NULL.
Обратными операциями для этой функции являются formatReadableSize и formatReadableDecimalSize.
Синтаксис
parseReadableSizeOrNull(x)Аргументы
x— Размер в удобочитаемом формате с единицами ISO/IEC 80000-13 или десятичными байтовыми единицами.String
Возвращаемое значение
Возвращает количество байтов, округлённое вверх до ближайшего целого, или NULL, если входное значение не удаётся разобрать Nullable(UInt64)
Примеры
Пример использования
SELECT arrayJoin(['1 B', '1 KiB', '3 MB', '5.314 KiB', 'invalid']) AS readable_sizes, parseReadableSizeOrNull(readable_sizes) AS sizes;┌─readable_sizes─┬───sizes─┐
│ 1 B │ 1 │
│ 1 KiB │ 1024 │
│ 3 MB │ 3000000 │
│ 5.314 KiB │ 5442 │
│ invalid │ ᴺᵁᴸᴸ │
└────────────────┴─────────┘parseReadableSizeOrZero
Добавленный в: v24.6.0
Для строки, содержащей размер в байтах и единицу измерения B, KiB, KB, MiB, MB и т. д. (то есть ISO/IEC 80000-13 или десятичную байтовую единицу), эта функция возвращает соответствующее количество байтов.
Если функция не может разобрать входное значение, она возвращает 0.
Обратными операциями для этой функции являются formatReadableSize и formatReadableDecimalSize.
Синтаксис
parseReadableSizeOrZero(x)Аргументы
x— Размер в удобочитаемом формате по ISO/IEC 80000-13 или в десятичных единицах измерения байтов.String
Возвращаемое значение
Возвращает количество байтов, округлённое вверх до ближайшего целого, или 0, если не удалось разобрать входное значение. UInt64
Примеры
Пример использования
SELECT arrayJoin(['1 B', '1 KiB', '3 MB', '5.314 KiB', 'invalid']) AS readable_sizes, parseReadableSizeOrZero(readable_sizes) AS sizes;┌─readable_sizes─┬───sizes─┐
│ 1 B │ 1 │
│ 1 KiB │ 1024 │
│ 3 MB │ 3000000 │
│ 5.314 KiB │ 5442 │
│ invalid │ 0 │
└────────────────┴─────────┘parseTimeDelta
Добавленный в: v22.7.0
Разбирает последовательность чисел, за которой следует обозначение, похожее на единицу времени.
Строка с дельтой времени использует следующие обозначения единиц времени:
years,year,yr,ymonths,month,moweeks,week,wdays,day,dhours,hour,hr,hminutes,minute,min,mseconds,second,sec,smilliseconds,millisecond,millisec,msmicroseconds,microsecond,microsec,μs,µs,usnanoseconds,nanosecond,nanosec,ns
Можно комбинировать несколько единиц времени, используя разделители (пробел, ;, -, +, ,, :).
Длительность года и месяца приблизительна: год принимается равным 365 дням, месяц — 30,5 дня.
Синтаксис
parseTimeDelta(timestr)Аргументы
timestr— Последовательность чисел, за которой следует нечто, напоминающее единицу времени.String
Возвращаемое значение
Число секунд. Float64
Примеры
Пример использования
SELECT parseTimeDelta('11s+22min')┌─parseTimeDelta('11s+22min')─┐
│ 1331 │
└─────────────────────────────┘Сложные единицы времени
SELECT parseTimeDelta('1yr2mo')┌─parseTimeDelta('1yr2mo')─┐
│ 36806400 │
└──────────────────────────┘partitionId
Добавленный в: v21.4.0
Вычисляет идентификатор партиции.
Синтаксис
partitionId(column1[, column2, ...])Псевдонимы: partitionID
Аргументы
column1, column2, ...— Столбец, для которого возвращается идентификатор партиции.
Возвращаемое значение
Возвращает идентификатор партиции, к которой принадлежит строка. String
Примеры
Пример использования
DROP TABLE IF EXISTS tab;
CREATE TABLE tab
(
i int,
j int
)
ENGINE = MergeTree
PARTITION BY i
ORDER BY tuple();
INSERT INTO tab VALUES (1, 1), (1, 2), (1, 3), (2, 4), (2, 5), (2, 6);
SELECT i, j, partitionId(i), _partition_id FROM tab ORDER BY i, j;┌─i─┬─j─┬─partitionId(i)─┬─_partition_id─┐
│ 1 │ 1 │ 1 │ 1 │
│ 1 │ 2 │ 1 │ 1 │
│ 1 │ 3 │ 1 │ 1 │
│ 2 │ 4 │ 2 │ 2 │
│ 2 │ 5 │ 2 │ 2 │
│ 2 │ 6 │ 2 │ 2 │
└───┴───┴────────────────┴───────────────┘pgGetUserById
Добавлена в версии v26.8.0
Функция совместимости с протоколом PostgreSQL, аналог pg_catalog.pg_get_userbyid.
Клиенты PostgreSQL (например, команда \d в psql) используют её для отображения владельца таблицы.
ClickHouse не отслеживает владельцев таблиц, поэтому функция игнорирует аргумент и возвращает имя текущего пользователя.
Синтаксис
pgGetUserById(oid)Псевдонимы: pg_get_userbyid
Аргументы
oid— идентификатор объекта роли. Значение игнорируется.UInt32
Возвращаемое значение
Возвращает имя текущего пользователя. String
Примеры
Пример использования
SELECT pg_get_userbyid(10)┌─pg_get_userbyid(10)─┐
│ default │
└─────────────────────┘pgTableIsVisible
Добавлено в: v26.8.0
Функция совместимости с протоколом PostgreSQL, аналог pg_catalog.pg_table_is_visible.
Клиенты PostgreSQL (например, команда \d в psql) используют её для фильтрации таблиц, видимых в пути поиска.
Поскольку эмулируемое ClickHouse представление pg_class содержит только таблицы текущей базы данных, все они видимы, поэтому функция всегда возвращает 1.
Синтаксис
pgTableIsVisible(oid)Псевдонимы: pg_table_is_visible
Аргументы
oid— идентификатор объекта таблицы, предоставляемый эмулируемым представлениемpg_class. Значение игнорируется.UInt32
Возвращаемое значение
Всегда возвращает 1. UInt8
Примеры
Пример использования
SELECT pg_table_is_visible(0)┌─pg_table_is_visible(0)─┐
│ 1 │
└────────────────────────┘queryID
Добавленный в: v21.9.0
Возвращает идентификатор текущего запроса.
Другие параметры запроса можно извлечь из поля query_id таблицы system.query_log.
В отличие от функции initialQueryID, queryID может возвращать разные результаты на разных сегментах.
Синтаксис
queryID()Псевдонимы: query_id
Аргументы
- Нет.
Возвращаемое значение
Возвращает идентификатор текущего запроса. String
Примеры
Пример использования
CREATE TABLE tmp (str String) ENGINE = Log;
INSERT INTO tmp (*) VALUES ('a');
SELECT count(DISTINCT t) FROM (SELECT queryID() AS t FROM remote('127.0.0.{1..3}', currentDatabase(), 'tmp') GROUP BY queryID());┌─countDistinct(t)─┐
│ 3 │
└──────────────────┘revision
Добавленный в: v22.7.0
Возвращает текущую ревизию сервера ClickHouse.
Синтаксис
revision()Аргументы
- Нет.
Возвращаемое значение
Возвращает текущую ревизию сервера ClickHouse. UInt32
Примеры
Пример использования
SELECT revision()┌─revision()─┐
│ 54485 │
└────────────┘rowNumberInAllBlocks
Добавленный в: v1.1.0
Возвращает уникальный номер для каждой обрабатываемой строки.
Синтаксис
rowNumberInAllBlocks()Аргументы
- None.
Возвращаемое значение
Возвращает порядковый номер строки в блоке данных, начиная с 0. UInt64
Примеры
Пример использования
-- The data is processed in blocks of two rows: rowNumberInBlock restarts from 0 in every block,
-- while rowNumberInAllBlocks keeps counting across them.
SELECT
number,
rowNumberInBlock(),
rowNumberInAllBlocks()
FROM system.numbers
LIMIT 6
SETTINGS max_block_size = 2┌─number─┬─rowNumberInBlock()─┬─rowNumberInAllBlocks()─┐
│ 0 │ 0 │ 0 │
│ 1 │ 1 │ 1 │
│ 2 │ 0 │ 2 │
│ 3 │ 1 │ 3 │
│ 4 │ 0 │ 4 │
│ 5 │ 1 │ 5 │
└────────┴────────────────────┴────────────────────────┘rowNumberInBlock
Добавленный в: v1.1.0
Для каждого блока, обрабатываемого функцией rowNumberInBlock, возвращает номер текущей строки.
Возвращаемый номер начинается с 0 в каждом блоке.
Синтаксис
rowNumberInBlock()Аргументы
- Нет.
Возвращаемое значение
Возвращает порядковый номер строки в блоке данных, начиная с 0. UInt64
Примеры
Пример использования
SELECT rowNumberInBlock()
FROM
(
SELECT *
FROM system.numbers_mt
LIMIT 10
) SETTINGS max_block_size = 2┌─rowNumberInBlock()─┐
│ 0 │
│ 1 │
│ 0 │
│ 1 │
│ 0 │
│ 1 │
│ 0 │
│ 1 │
│ 0 │
│ 1 │
└────────────────────┘runningAccumulate
Добавленный в: v1.1.0
Накапливает состояния агрегатной функции для каждой строки блока данных.
Синтаксис
runningAccumulate(agg_state[, grouping])Аргументы
agg_state— Состояние агрегатной функции.AggregateFunctiongrouping— Необязательный. Ключ группировки. Состояние функции сбрасывается при изменении значенияgrouping. Это может быть любой из поддерживаемых типов данных, для которых определён оператор равенства.Any
Возвращаемое значение
Возвращает накопленный результат для каждой строки. Any
Примеры
Пример использования с initializeAggregation
SET allow_deprecated_error_prone_window_functions = 1;
WITH initializeAggregation('sumState', number) AS one_row_sum_state
SELECT
number,
finalizeAggregation(one_row_sum_state) AS one_row_sum,
runningAccumulate(one_row_sum_state) AS cumulative_sum
FROM numbers(5);┌─number─┬─one_row_sum─┬─cumulative_sum─┐
│ 0 │ 0 │ 0 │
│ 1 │ 1 │ 1 │
│ 2 │ 2 │ 3 │
│ 3 │ 3 │ 6 │
│ 4 │ 4 │ 10 │
└────────┴─────────────┴────────────────┘runningConcurrency
Добавленный в: v21.3.0
Вычисляет количество параллельно происходящих событий. У каждого события есть время начала и время окончания. Время начала включается в событие, а время окончания — нет. Столбцы со временем начала и временем окончания должны иметь один и тот же тип данных. Функция вычисляет общее количество активных (параллельных) событий для каждого времени начала события.
Синтаксис
runningConcurrency(start, end)Аргументы
start— столбец со временем начала событий.DateилиDateTimeилиDateTime64end— столбец со временем окончания событий.DateилиDateTimeилиDateTime64
Возвращаемое значение
Возвращает количество одновременно происходящих событий в момент начала каждого события. UInt32
Примеры
Пример использования
CREATE TABLE example_table (start Date, end Date) ENGINE = Memory;
INSERT INTO example_table VALUES ('2025-03-03', '2025-03-11'), ('2025-03-06', '2025-03-08'), ('2025-03-07', '2025-03-09'), ('2025-03-11', '2025-03-12');
SELECT start, runningConcurrency(start, end) FROM example_table;┌──────start─┬─runningConcurrency(start, end)─┐
│ 2025-03-03 │ 1 │
│ 2025-03-06 │ 2 │
│ 2025-03-07 │ 3 │
│ 2025-03-11 │ 1 │
└────────────┴────────────────────────────────┘runningDifference
Добавленный в: v1.1.0
Вычисляет разность между значениями двух последовательных строк в блоке данных.
Возвращает 0 для первой строки, а для каждой следующей — разность относительно предыдущей строки.
Результат функции зависит от того, какие блоки данных были затронуты, и от порядка данных в блоке.
Порядок строк при вычислении runningDifference() может отличаться от порядка строк, возвращаемых пользователю.
Чтобы этого избежать, можно создать подзапрос с ORDER BY и вызвать функцию вне этого подзапроса.
Обратите внимание, что размер блока влияет на результат.
Внутреннее состояние runningDifference сбрасывается для каждого нового блока.
Синтаксис
runningDifference(x)Аргументы
x— столбец, для которого вычисляется разность с предыдущим значением.Any
Возвращаемое значение
Возвращает разность между последовательными значениями; для первой строки возвращается 0.
Примеры
Пример использования
SET allow_deprecated_error_prone_window_functions = 1;
CREATE TABLE events
(
EventID UInt32,
EventDate Date,
EventTime DateTime
)
ENGINE = Memory;
INSERT INTO events VALUES
(1106, '2025-11-24', '2025-11-24 00:00:04'),
(1107, '2025-11-24', '2025-11-24 00:00:05'),
(1108, '2025-11-24', '2025-11-24 00:00:05'),
(1109, '2025-11-24', '2025-11-24 00:00:09'),
(1110, '2025-11-24', '2025-11-24 00:00:10');
SELECT
EventID,
EventTime,
runningDifference(EventTime) AS delta
FROM
(
SELECT
EventID,
EventTime
FROM events
WHERE EventDate = '2025-11-24'
ORDER BY EventTime ASC, EventID ASC
LIMIT 5
);┌─EventID─┬───────────EventTime─┬─delta─┐
│ 1106 │ 2025-11-24 00:00:04 │ 0 │
│ 1107 │ 2025-11-24 00:00:05 │ 1 │
│ 1108 │ 2025-11-24 00:00:05 │ 0 │
│ 1109 │ 2025-11-24 00:00:09 │ 4 │
│ 1110 │ 2025-11-24 00:00:10 │ 1 │
└─────────┴─────────────────────┴───────┘Пример влияния размера блока
SET allow_deprecated_error_prone_window_functions = 1;
SELECT
number,
runningDifference(number + 1) AS diff
FROM numbers(100000)
WHERE diff != 1;┌─number─┬─diff─┐
│ 0 │ 0 │
│ 65409 │ 0 │
└────────┴──────┘runningDifferenceStartingWithFirstValue
Добавленный в: v1.1.0
Вычисляет разность между значениями соседних строк в блоке данных, но, в отличие от runningDifference, возвращает фактическое значение первой строки вместо 0.
Синтаксис
runningDifferenceStartingWithFirstValue(x)Аргументы
x— столбец, для которого вычисляется разность с предыдущей строкой.Any
Возвращаемое значение
Возвращает разность между последовательными значениями; для первой строки возвращается значение из первой строки. Any
Примеры
Пример использования
SET allow_deprecated_error_prone_window_functions = 1;
SELECT
number,
runningDifferenceStartingWithFirstValue(number) AS diff
FROM numbers(5);┌─number─┬─diff─┐
│ 0 │ 0 │
│ 1 │ 1 │
│ 2 │ 1 │
│ 3 │ 1 │
│ 4 │ 1 │
└────────┴──────┘serverUUID
Добавленный в: v20.1.0
Возвращает случайный уникальный UUID (v4), сгенерированный при первом запуске сервера. UUID сохраняется, то есть при втором, третьем и последующих запусках сервера возвращается тот же UUID.
Синтаксис
serverUUID()Аргументы
- Отсутствуют.
Возвращаемое значение
Возвращает случайный UUID сервера. UUID
Примеры
Пример использования
SELECT serverUUID();┌─serverUUID()─────────────────────────────┐
│ 7ccc9260-000d-4d5c-a843-5459abaabb5f │
└──────────────────────────────────────────┘Добавленный в: v21.9.0
Возвращает общее количество сегментов в распределённом запросе.
Если запрос не является распределённым, возвращается константное значение 0.
Синтаксис
shardCount()Аргументы
- None.
Возвращаемое значение
Возвращает общее число сегментов или 0. UInt32
Примеры
Пример использования
-- See shardNum() example above which also demonstrates shardCount()
CREATE TABLE shard_count_example (dummy UInt8)
ENGINE=Distributed(test_cluster_two_shards_localhost, system, one, dummy);
SELECT shardCount() FROM shard_count_example;┌─shardCount()─┐
│ 2 │
│ 2 │
└──────────────┘Добавленный в: v21.9.0
Возвращает индекс сегмента, который обрабатывает часть данных в распределённом запросе.
Нумерация индексов начинается с 1.
Если запрос не является распределённым, возвращается постоянное значение 0.
Синтаксис
shardNum()Аргументы
- Нет.
Возвращаемое значение
Возвращает индекс сегмента или константу 0. UInt32
Примеры
Пример использования
CREATE TABLE shard_num_example (dummy UInt8)
ENGINE=Distributed(test_cluster_two_shards_localhost, system, one, dummy);
SELECT dummy, shardNum(), shardCount() FROM shard_num_example;┌─dummy─┬─shardNum()─┬─shardCount()─┐
│ 0 │ 1 │ 2 │
│ 0 │ 2 │ 2 │
└───────┴────────────┴──────────────┘showCertificate
Добавленный в: v22.6.0
Показывает информацию о текущем SSL-сертификате сервера, если он настроен. Возвращает пустой Map, если у сервера нет сертификата, например когда сертификат запрашивается через ACME, но ещё не выпущен. Подробнее о том, как настроить ClickHouse для использования сертификатов OpenSSL для проверки подключений, см. в разделе Настройка TLS.
Синтаксис
showCertificate()Аргументы
- Отсутствуют.
Возвращаемое значение
Возвращает Map с парами ключ-значение, относящимися к настроенному SSL-сертификату. Map(String, String)
Примеры
Пример использования
SELECT showCertificate() FORMAT LineAsString;{'version':'1','serial_number':'2D9071D64530052D48308473922C7ADAFA85D6C5','signature_algo':'sha256WithRSAEncryption','issuer':'/CN=marsnet.local CA','not_before':'May 7 17:01:21 2024 GMT','not_after':'May 7 17:01:21 2025 GMT','subject':'/CN=chnode1','pkey_algo':'rsaEncryption'}sleep
Добавленный в: v1.1.0
Приостанавливает выполнение запроса на указанное число секунд. Функция в основном используется для тестирования и отладки.
Как правило, функцию sleep() не следует использовать в продакшн-средах, так как она может отрицательно влиять на производительность запросов и отзывчивость системы.
Однако она может быть полезна в следующих сценариях:
- Тестирование: При тестировании или бенчмаркинге ClickHouse может потребоваться имитировать задержки или добавлять паузы, чтобы наблюдать, как система ведет себя в определенных условиях.
- Отладка: Если вам нужно проверить состояние системы или выполнение запроса в определенный момент времени, можно использовать
sleep()для добавления паузы, чтобы просмотреть или собрать нужную информацию. - Моделирование: В некоторых случаях может потребоваться смоделировать реальные сценарии, в которых возникают задержки или паузы, например сетевую задержку или зависимости от внешних систем.
Из соображений безопасности функцию можно выполнять только в профиле пользователя default (с включенным allow_sleep).
Синтаксис
sleep(seconds)Аргументы
seconds— Количество секунд, на которое приостанавливается выполнение запроса; не более 3 секунд. Для указания долей секунды можно использовать число с плавающей точкой.const UInt*илиconst Float*
Возвращаемое значение
Возвращает 0. UInt8
Примеры
Пример использования
-- This query will pause for 2 seconds before completing.
-- During this time, no results will be returned, and the query will appear to be hanging or unresponsive.
SELECT sleep(2);┌─sleep(2)─┐
│ 0 │
└──────────┘sleepEachRow
Добавленный в: v1.1.0
Приостанавливает выполнение запроса на указанное число секунд для каждой строки в результирующем наборе.
Функция sleepEachRow() в основном используется для тестирования и отладки, аналогично функции sleep().
Она позволяет имитировать задержки или делать паузы при обработке каждой строки, что может быть полезно в таких сценариях, как:
- Тестирование: При тестировании или бенчмаркинге производительности ClickHouse в определенных условиях можно использовать
sleepEachRow(), чтобы имитировать задержки или делать паузы при обработке каждой строки. - Отладка: Если вам нужно проверить состояние системы или выполнение запроса для каждой обрабатываемой строки, можно использовать
sleepEachRow(), чтобы делать паузы и получать возможность просматривать или собирать нужную информацию. - Моделирование: В некоторых случаях может потребоваться смоделировать реальные сценарии, в которых при обработке каждой строки возникают задержки или паузы, например при взаимодействии с внешними системами или из-за сетевых задержек.
Синтаксис
sleepEachRow(seconds)Аргументы
seconds— Количество секунд, на которое приостанавливается выполнение запроса для каждой строки результирующего набора, не более 3 секунд. Для указания долей секунды можно использовать значение с плавающей точкой.const UInt*илиconst Float*
Возвращаемое значение
Возвращает 0 для каждой строки. UInt8
Примеры
Пример использования
-- The output will be delayed, with a 0.5-second pause between each row.
SELECT number, sleepEachRow(0.5) FROM system.numbers LIMIT 5;┌─number─┬─sleepEachRow(0.5)─┐
│ 0 │ 0 │
│ 1 │ 0 │
│ 2 │ 0 │
│ 3 │ 0 │
│ 4 │ 0 │
└────────┴───────────────────┘structureToCapnProtoSchema
Добавленный в: v23.8.0
Функция, преобразующая структуру таблицы ClickHouse в схему формата CapnProto
Синтаксис
structureToCapnProtoSchema(table_structure, message)Аргументы
- Отсутствуют.
Возвращаемое значение
Примеры
random
SELECT structureToCapnProtoSchema('s String, x UInt32', 'MessageName') format TSVRawstruct MessageName
{
s @0 : Data;
x @1 : UInt32;
}structureToProtobufSchema
Добавленный в: v23.8.0
Преобразует структуру таблицы ClickHouse в схему в формате Protobuf.
Эта функция принимает описание структуры таблицы ClickHouse и преобразует его в определение схемы Protocol Buffers (Protobuf) в синтаксисе proto3. Это полезно для генерации схем Protobuf, соответствующих структурам таблиц ClickHouse, для обмена данными.
Синтаксис
structureToProtobufSchema(structure, message_name)Аргументы
structure— определение структуры таблицы ClickHouse в виде строки (например, 'column1 Type1, column2 Type2').Stringmessage_name— имя типа сообщения Protobuf в сгенерированной схеме.String
Возвращаемое значение
Возвращает определение схемы Protobuf в синтаксисе proto3, соответствующее входной структуре таблицы ClickHouse. String
Примеры
Преобразование структуры ClickHouse в схему Protobuf
SELECT structureToProtobufSchema('s String, x UInt32', 'MessageName') FORMAT TSVRaw;syntax = "proto3";
message MessageName
{
bytes s = 1;
uint32 x = 2;
}tcpPort
Добавленный в: v20.12.0
Возвращает номер TCP-порта нативного интерфейса, на котором сервер прослушивает подключения. Если функция выполняется в контексте distributed таблицы, она создает обычный столбец со значениями, относящимися к каждому сегменту. В противном случае возвращает константное значение.
Синтаксис
tcpPort()Аргументы
- Отсутствуют.
Возвращаемое значение
Возвращает номер TCP-порта. UInt16
Примеры
Пример использования
SELECT tcpPort()┌─tcpPort()─┐
│ 9000 │
└───────────┘throwIf
Добавленный в: v1.1.0
Генерирует исключение, если аргумент x равен true.
Чтобы использовать аргумент error_code, должен быть включен параметр конфигурации allow_custom_error_code_in_throw.
Синтаксис
throwIf(x[, message[, error_code]])Аргументы
x— Условие для проверки.Anymessage— Необязательно. Произвольное сообщение об ошибке.const Stringerror_code— Необязательно. Произвольный код ошибки.const Int8/16/32
Возвращаемое значение
Возвращает 0, если условие ложно, и генерирует исключение, если условие истинно. UInt8
Примеры
Пример использования
SELECT throwIf(number = 3, 'Too many') FROM numbers(10);Received exception:
Code: 395. DB::Exception: Too many. (FUNCTION_THROW_IF_VALUE_IS_NON_ZERO)toColumnTypeName
Добавленный в: v1.1.0
Возвращает внутреннее имя типа данных указанного значения.
В отличие от функции toTypeName, возвращаемый тип данных может включать внутренние столбцы-обёртки, такие как Const и LowCardinality.
Синтаксис
toColumnTypeName(value)Аргументы
value— Значение, для которого требуется вернуть внутренний тип данных.Any
Возвращаемое значение
Возвращает внутренний тип данных, используемый для представления значения. String
Примеры
Пример использования
SELECT toColumnTypeName(CAST('2025-01-01 01:02:03' AS DateTime));┌─toColumnTypeName(CAST('2025-01-01 01:02:03', 'DateTime'))─┐
│ Const(UInt32) │
└───────────────────────────────────────────────────────────┘toTypeName
Добавленный в: v1.1.0
Возвращает имя типа переданного аргумента.
Если передан NULL, функция возвращает тип Nullable(Nothing), который соответствует внутреннему представлению NULL в ClickHouse.
Синтаксис
toTypeName(x)Аргументы
x— Значение произвольного типа.Any
Возвращаемое значение
Возвращает имя типа данных переданного значения. String
Примеры
Пример использования
SELECT toTypeName(123)┌─toTypeName(123)─┐
│ UInt8 │
└─────────────────┘tokenizeQuery
Добавленный в: v26.5.0
Разбивает строку запроса ClickHouse SQL на токены и возвращает массив токенов. Каждый токен представляет собой именованный кортеж с начальной позицией (в байтах), конечной позицией и типом токена.
Синтаксис
tokenizeQuery(query)Аргументы
query— Строка запроса ClickHouse SQL. String.
Возвращаемое значение
Массив именованных Tuple (begin UInt64, end UInt64, type Enum8(...)), представляющих токены запроса. Array(Tuple(begin UInt64, end UInt64, type Enum8(...)))
Примеры
простой
SELECT tokenizeQuery('SELECT 1')[(0,6,'BareWord'),(6,7,'Whitespace'),(7,8,'Number')]transactionID
Добавленный в: v22.6.0
Экспериментальная возможность Не поддерживается в ClickHouse CloudВозвращает идентификатор транзакции.
Синтаксис
transactionID()Аргументы
- Отсутствуют.
Возвращаемое значение
Возвращает кортеж, состоящий из start_csn, local_tid и host_id.
start_csn: Глобальный последовательный номер — самая поздняя временная метка commit, видимая на момент начала этой транзакции.local_tid: Локальный последовательный номер, уникальный для каждой транзакции, начатой этим хостом в рамках конкретного start_csn.host_id: UUID хоста, который начал эту транзакцию.Tuple(UInt64, UInt64, UUID)
Примеры
Пример использования
BEGIN TRANSACTION;
SELECT transactionID();
ROLLBACK;┌─transactionID()────────────────────────────────┐
│ (32,34,'0ee8b069-f2bb-4748-9eae-069c85b5252b') │
└────────────────────────────────────────────────┘transactionLatestSnapshot
Добавленный в: v22.6.0
Экспериментальная возможность Не поддерживается в ClickHouse CloudВозвращает последний снимок (Commit Sequence Number) транзакции, доступный для чтения.
Синтаксис
transactionLatestSnapshot()Аргументы
- Отсутствуют.
Возвращаемое значение
Возвращает последний снимок (CSN) транзакции. UInt64
Примеры
Пример использования
BEGIN TRANSACTION;
SELECT transactionLatestSnapshot();
ROLLBACK;┌─transactionLatestSnapshot()─┐
│ 32 │
└─────────────────────────────┘transactionOldestSnapshot
Добавленный в: v22.6.0
Экспериментальная возможность Не поддерживается в ClickHouse CloudВозвращает самый старый снимок (Commit Sequence Number), который виден некоторой выполняющейся транзакции.
Синтаксис
transactionOldestSnapshot()Аргументы
- Отсутствуют.
Возвращаемое значение
Возвращает наиболее ранний снимок (CSN) транзакции. UInt64
Примеры
Пример использования
BEGIN TRANSACTION;
SELECT transactionOldestSnapshot();
ROLLBACK;┌─transactionOldestSnapshot()─┐
│ 32 │
└─────────────────────────────┘transform
Добавленный в: v1.1.0
Преобразует значение в соответствии с явно заданным сопоставлением одних элементов с другими.
У этой функции есть два варианта:
transform(x, array_from, array_to, default)- преобразуетxс помощью массивов сопоставления, используя значение по умолчанию для элементов без совпаденийtransform(x, array_from, array_to)- выполняет то же преобразование, но возвращает исходноеx, если совпадение не найдено
Функция ищет x в array_from и возвращает соответствующий элемент из array_to с тем же индексом.
Если x не найден в array_from, она возвращает либо значение default (версия с 4 параметрами), либо исходное x (версия с 3 параметрами).
Если в array_from есть несколько совпадающих элементов, возвращается элемент, соответствующий первому совпадению.
Требования:
array_fromиarray_toдолжны содержать одинаковое количество элементов- Для версии с 4 параметрами:
transform(T, Array(T), Array(U), U) -> U, гдеTиUмогут быть разными совместимыми типами - Для версии с 3 параметрами:
transform(T, Array(T), Array(T)) -> T, где все типы должны быть одинаковыми
Синтаксис
transform(x, array_from, array_to[, default])Аргументы
x— Значение для преобразования.(U)Int*илиDecimalилиFloat*илиStringилиDateилиDateTimearray_from— Постоянный массив значений для поиска совпадений.Array((U)Int*)илиArray(Decimal)илиArray(Float*)илиArray(String)илиArray(Date)илиArray(DateTime)array_to— Постоянный массив значений, возвращаемых при соответствующих совпадениях вarray_from.Array((U)Int*)илиArray(Decimal)илиArray(Float*)илиArray(String)илиArray(Date)илиArray(DateTime)default— Необязательно. Значение, возвращаемое, еслиxне найден вarray_from. Если не указано, возвращаетсяxбез изменений.(U)Int*илиDecimalилиFloat*илиStringилиDateилиDateTime
Возвращаемое значение
Возвращает соответствующее значение из array_to, если x совпадает с элементом в array_from; в противном случае возвращает default (если указан) или x (если default не указан). Any
Примеры
transform(T, Array(T), Array(U), U) -> U
CREATE TABLE hits (SearchEngineID UInt8, Referer String) ENGINE = Memory;
INSERT INTO hits VALUES
(2, 'http://yandex.ru/search'),
(2, 'http://yandex.ru/news'),
(2, 'http://mail.yandex.ru/'),
(3, 'http://google.ru/search'),
(4, 'http://duckduckgo.com/'),
(0, 'http://vkontakte.ru/feed'),
(0, '');
SELECT
transform(SearchEngineID, [2, 3], ['Yandex', 'Google'], 'Other') AS title,
count() AS c
FROM hits
WHERE SearchEngineID != 0
GROUP BY title
ORDER BY c DESC, title┌─title──┬─c─┐
│ Yandex │ 3 │
│ Google │ 1 │
│ Other │ 1 │
└────────┴───┘transform(T, Array(T), Array(T)) -> T
-- Without a default, a domain that is not listed is returned unchanged.
SELECT
transform(domain(Referer), ['yandex.ru', 'google.ru', 'vkontakte.ru'], ['www.yandex', 'example.com', 'vk.com']) AS s, count() AS c
FROM hits
GROUP BY domain(Referer)
ORDER BY count() DESC, s
LIMIT 10┌─s──────────────┬─c─┐
│ www.yandex │ 2 │
│ │ 1 │
│ duckduckgo.com │ 1 │
│ example.com │ 1 │
│ mail.yandex.ru │ 1 │
│ vk.com │ 1 │
└────────────────┴───┘uniqThetaIntersect
Добавленный в: v22.9.0
Два объекта типа uniqThetaSketch используются для вычисления пересечения (операция над множествами ∩); результатом является новый объект типа uniqThetaSketch.
Синтаксис
uniqThetaIntersect(uniqThetaSketch,uniqThetaSketch)Аргументы
uniqThetaSketch— объект типа uniqThetaSketch.TupleилиArrayилиDateилиDateTimeилиStringили(U)Int*илиFloat*илиDecimal
Возвращаемое значение
Новый uniqThetaSketch, содержащий результат пересечения. UInt64
Примеры
Пример использования
SELECT finalizeAggregation(uniqThetaIntersect(a, b)) AS a_intersect_b, finalizeAggregation(a) AS a_cardinality, finalizeAggregation(b) AS b_cardinality
FROM
(SELECT arrayReduce('uniqThetaState', [1, 2]) AS a, arrayReduce('uniqThetaState', [2, 3, 4]) AS b);┌─a_intersect_b─┬─a_cardinality─┬─b_cardinality─┐
│ 1 │ 2 │ 3 │
└───────────────┴───────────────┴───────────────┘uniqThetaNot
Добавленный в: v22.9.0
Выполняет вычисление a_not_b над двумя объектами типа uniqThetaSketch (операция над множествами ×); результатом является новый объект типа uniqThetaSketch.
Синтаксис
uniqThetaNot(uniqThetaSketch,uniqThetaSketch)Аргументы
uniqThetaSketch— объект типа uniqThetaSketch.TupleилиArrayилиDateилиDateTimeилиStringили(U)Int*илиFloat*илиDecimal
Возвращаемое значение
Возвращает новый uniqThetaSketch, содержащий результат a_not_b. UInt64
Примеры
Пример использования
SELECT finalizeAggregation(uniqThetaNot(a, b)) AS a_not_b, finalizeAggregation(a) AS a_cardinality, finalizeAggregation(b) AS b_cardinality
FROM
(SELECT arrayReduce('uniqThetaState', [2, 3, 4]) AS a, arrayReduce('uniqThetaState', [1, 2]) AS b);┌─a_not_b─┬─a_cardinality─┬─b_cardinality─┐
│ 2 │ 3 │ 2 │
└─────────┴───────────────┴───────────────┘uniqThetaUnion
Добавленный в: v22.9.0
Два объекта типа uniqThetaSketch для вычисления объединения (операция над множествами ∪); результатом является новый объект типа uniqThetaSketch.
Синтаксис
uniqThetaUnion(uniqThetaSketch,uniqThetaSketch)Аргументы
uniqThetaSketch— объект типа uniqThetaSketch.TupleилиArrayилиDateилиDateTimeилиStringили(U)Int*илиFloat*илиDecimal
Возвращаемое значение
Возвращает новый uniqThetaSketch, содержащий результат объединения. UInt64
Примеры
Пример использования
SELECT finalizeAggregation(uniqThetaUnion(a, b)) AS a_union_b, finalizeAggregation(a) AS a_cardinality, finalizeAggregation(b) AS b_cardinality
FROM
(SELECT arrayReduce('uniqThetaState', [1, 2]) AS a, arrayReduce('uniqThetaState', [2, 3, 4]) AS b);┌─a_union_b─┬─a_cardinality─┬─b_cardinality─┐
│ 4 │ 2 │ 3 │
└───────────┴───────────────┴───────────────┘uptime
Добавленный в: v1.1.0
Возвращает время непрерывной работы сервера в секундах. Если функция выполняется в контексте distributed таблицы, она создаёт обычный столбец со значениями для каждого сегмента. В противном случае возвращается постоянное значение.
Синтаксис
uptime()Аргументы
- Отсутствуют.
Возвращаемое значение
Возвращает время непрерывной работы сервера в секундах. UInt32
Примеры
Пример использования
SELECT uptime() AS Uptime┌─Uptime─┐
│ 55867 │
└────────┘variantElement
Добавленный в: v25.2.0
Извлекает из столбца Variant столбец указанного типа.
Синтаксис
variantElement(variant, type_name[, default_value])Аргументы
variant— столбец типа Variant.Varianttype_name— имя типа варианта, который нужно извлечь.Stringdefault_value— значение по умолчанию, которое будет использоваться, еслиvariantне содержит варианта указанного типа. Может быть любого типа. Необязательный параметр.Any
Возвращаемое значение
Возвращает столбец со значениями указанного типа варианта, извлечёнными из столбца Variant. Any
Примеры
Пример использования
CREATE TABLE test (v Variant(UInt64, String, Array(UInt64))) ENGINE = Memory;
INSERT INTO test VALUES (NULL), (42), ('Hello, World!'), ([1, 2, 3]);
SELECT v, variantElement(v, 'String'), variantElement(v, 'UInt64'), variantElement(v, 'Array(UInt64)') FROM test;┌─v─────────────┬─variantElement(v, 'String')─┬─variantElement(v, 'UInt64')─┬─variantElement(v, 'Array(UInt64)')─┐
│ ᴺᵁᴸᴸ │ ᴺᵁᴸᴸ │ ᴺᵁᴸᴸ │ [] │
│ 42 │ ᴺᵁᴸᴸ │ 42 │ [] │
│ Hello, World! │ Hello, World! │ ᴺᵁᴸᴸ │ [] │
│ [1,2,3] │ ᴺᵁᴸᴸ │ ᴺᵁᴸᴸ │ [1,2,3] │
└───────────────┴─────────────────────────────┴─────────────────────────────┴────────────────────────────────────┘variantType
Добавленный в: v24.2.0
Возвращает имя типа варианта для каждой строки столбца Variant. Если строка содержит NULL, для неё возвращается значение 'None'.
Синтаксис
variantType(variant)Аргументы
variant— столбец типа Variant.Variant
Возвращаемое значение
Возвращает столбец Enum, содержащий имя типа варианта для каждой строки. Enum
Примеры
Пример использования
CREATE TABLE test (v Variant(UInt64, String, Array(UInt64))) ENGINE = Memory;
INSERT INTO test VALUES (NULL), (42), ('Hello, World!'), ([1, 2, 3]);
SELECT variantType(v) FROM test;┌─variantType(v)─┐
│ None │
│ UInt64 │
│ String │
│ Array(UInt64) │
└────────────────┘version
Добавленный в: v1.1.0
Возвращает текущую версию ClickHouse в виде строки в формате: major_version.minor_version.patch_version.number_of_commits_since_the_previous_stable_release.
Если функция выполняется в контексте distributed таблицы, она формирует обычный столбец со значениями для каждого сегмента.
В противном случае возвращается константное значение.
Синтаксис
version()Аргументы
- Отсутствуют.
Возвращаемое значение
Возвращает текущую версию ClickHouse. String
Примеры
Пример использования
SELECT version()┌─version()─┐
│ 24.2.1.1 │
└───────────┘visibleWidth
Добавленный в: v1.1.0
Вычисляет приблизительную ширину значений при их выводе в консоль в текстовом формате (с разделением табуляцией).
Эта функция используется системой для реализации форматов Pretty.
NULL представляется строкой, соответствующей NULL в форматах Pretty.
Синтаксис
visibleWidth(x)Аргументы
x— Значение любого типа данных.Any
Возвращаемое значение
Возвращает приблизительную ширину значения при выводе в текстовом формате. UInt64
Примеры
Вычисление отображаемой ширины NULL
SELECT visibleWidth(NULL)┌─visibleWidth(NULL)─┐
│ 4 │
└────────────────────┘zookeeperSessionUptime
Добавленный в: v21.11.0
Возвращает время непрерывной работы текущего сеанса ZooKeeper в секундах.
Синтаксис
zookeeperSessionUptime()Аргументы
- Отсутствуют.
Возвращаемое значение
Возвращает время непрерывной работы текущего сеанса ZooKeeper в секундах. UInt32
Примеры
Пример использования
SELECT zookeeperSessionUptime();┌─zookeeperSessionUptime()─┐
│ 3 │
└──────────────────────────┘