Перейти к основному содержанию
Приведённая ниже документация по функциям сгенерирована на основе системной таблицы system.functions.

FQDN

Добавленный в: v20.1.0 Возвращает полное доменное имя сервера ClickHouse. Синтаксис
FQDN()
Псевдонимы: fullHostName Аргументы
  • Отсутствуют.
Возвращаемое значение Возвращает полное доменное имя (FQDN) сервера ClickHouse. String Примеры Пример использования
Query
SELECT fqdn()
Response
┌─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 Примеры Пример использования
Query
SELECT MACNumToString(149809441867716) AS mac_address;
Response
┌─mac_address───────┐
│ 88:00:11:22:33:44 │
└───────────────────┘

MACStringToNum

Добавленный в: v1.1.0 Обратная функция для MACNumToString. Если MAC-адрес имеет недопустимый формат, возвращает 0. Синтаксис
MACStringToNum(s)
Аргументы
  • s — строка MAC-адреса. String
Возвращаемое значение Возвращает число типа UInt64. UInt64 Примеры Пример использования
Query
SELECT MACStringToNum('01:02:03:04:05:06') AS mac_numeric;
Response
1108152157446

MACStringToOUI

Добавленный в: v1.1.0 Для MAC-адреса в формате AA:BB:CC:DD:EE:FF (шестнадцатеричные числа, разделённые двоеточиями) возвращает первые три октета в виде числа UInt64. Если MAC-адрес имеет неверный формат, возвращает 0. Синтаксис
MACStringToOUI(s)
Аргументы
  • s — строка MAC-адреса. String
Возвращаемое значение Первые три октета в виде числа типа UInt64. UInt64 Примеры Пример использования
Query
SELECT MACStringToOUI('00:50:56:12:34:56') AS oui;
Response
20566

authenticatedUser

Добавленный в: v25.11.0 Если пользователь сеанса был переключён с помощью команды EXECUTE AS, эта функция возвращает имя исходного пользователя, использованного для аутентификации и создания сеанса. Псевдоним: authUser() Синтаксис
authenticatedUser()
Псевдонимы: authUser Аргументы
  • Нет.
Возвращаемое значение Имя прошедшего аутентификацию пользователя. String Примеры Пример использования
Query
EXECUTE as u1;
            SELECT currentUser(), authenticatedUser();
Response
┌─currentUser()─┬─authenticatedUser()─┐
│ u1            │ default             │
└───────────────┴─────────────────────┘

bar

Добавленный в: v1.1.0 Строит столбчатую диаграмму. Рисует полосу, ширина которой пропорциональна (x - min) и составляет width символов при x = max. Полоса рисуется с точностью до одной восьмой символа. Синтаксис
bar(x, min, max[, width])
Аргументы Возвращаемое значение Возвращает строку с полосой в стиле Unicode-арт. String Примеры Пример использования
Query
SELECT
toHour(EventTime) AS h,
count() AS c,
bar(c, 0, 600000, 20) AS bar
FROM test.hits
GROUP BY h
ORDER BY h ASC
Response
┌──h─┬──────c─┬─bar────────────────┐
│  0 │ 292907 │ █████████▋         │
│  1 │ 180563 │ ██████             │
│  2 │ 114861 │ ███▋               │
│  3 │  85069 │ ██▋                │
│  4 │  68543 │ ██▎                │
│  5 │  78116 │ ██▌                │
│  6 │ 113474 │ ███▋               │
│  7 │ 170678 │ █████▋             │
│  8 │ 278380 │ █████████▎         │
│  9 │ 391053 │ █████████████      │
│ 10 │ 457681 │ ███████████████▎   │
│ 11 │ 493667 │ ████████████████▍  │
│ 12 │ 509641 │ ████████████████▊  │
│ 13 │ 522947 │ █████████████████▍ │
│ 14 │ 539954 │ █████████████████▊ │
│ 15 │ 528460 │ █████████████████▌ │
│ 16 │ 539201 │ █████████████████▊ │
│ 17 │ 523539 │ █████████████████▍ │
│ 18 │ 506467 │ ████████████████▊  │
│ 19 │ 520915 │ █████████████████▎ │
│ 20 │ 521665 │ █████████████████▍ │
│ 21 │ 542078 │ ██████████████████ │
│ 22 │ 493642 │ ████████████████▍  │
│ 23 │ 400397 │ █████████████▎     │
└────┴────────┴────────────────────┘

blockNumber

Добавленный в: v1.1.0 Возвращает монотонно возрастающий порядковый номер блока, содержащего строку. Возвращаемый номер блока обновляется по мере возможности, поэтому он может быть не совсем точным. Синтаксис
blockNumber()
Аргументы
  • Отсутствуют.
Возвращаемое значение Порядковый номер блока данных, в котором находится строка. UInt64 Примеры Базовое использование
Query
SELECT blockNumber()
FROM
(
    SELECT *
    FROM system.numbers
    LIMIT 10
) SETTINGS max_block_size = 2
Response
┌─blockNumber()─┐
│             7 │
│             7 │
└───────────────┘
┌─blockNumber()─┐
│             8 │
│             8 │
└───────────────┘
┌─blockNumber()─┐
│             9 │
│             9 │
└───────────────┘
┌─blockNumber()─┐
│            10 │
│            10 │
└───────────────┘
┌─blockNumber()─┐
│            11 │
│            11 │
└───────────────┘

blockSerializedSize

Добавленный в: v20.3.0 Возвращает несжатый размер блока значений на диске в байтах. Синтаксис
blockSerializedSize(x1[, x2[, ...]])
Аргументы
  • x1[, x2, ...] — Любое количество значений, для которых нужно получить размер блока в несжатом виде. Any
Возвращаемое значение Возвращает число байтов, которое будет записано на диск для блока значений без сжатия. UInt64 Примеры Пример использования
Query
SELECT blockSerializedSize(maxState(1)) AS x;
Response
┌─x─┐
│ 2 │
└───┘

blockSize

Добавленный в: v1.1.0 В ClickHouse запросы обрабатываются блоками (фрагментами). Эта функция возвращает размер блока (количество строк), в котором она вызвана. Синтаксис
blockSize()
Аргументы
  • Отсутствуют.
Возвращаемое значение Возвращает количество строк в текущем блоке. UInt64 Примеры Пример использования
Query
SELECT blockSize()
FROM system.numbers LIMIT 5
Response
┌─blockSize()─┐
│           5 │
│           5 │
│           5 │
│           5 │
│           5 │
└─────────────┘

buildId

Добавленный в: v20.5.0 Возвращает идентификатор сборки, сгенерированный компилятором для бинарного файла запущенного сервера ClickHouse. Если функция выполняется в контексте distributed таблицы, она возвращает обычный столбец со значениями, относящимися к каждому сегменту. В противном случае она возвращает постоянное значение. Синтаксис
buildId()
Аргументы
  • Отсутствуют.
Возвращаемое значение Возвращает идентификатор сборки. String Примеры Пример использования
Query
SELECT buildId()
Response
┌─buildId()────────────────────────────────┐
│ AB668BEF095FAA6BD26537F197AC2AF48A927FB4 │
└──────────────────────────────────────────┘

byteSize

Добавленный в: v21.1.0 Возвращает оценку несжатого размера своих аргументов в памяти в байтах. Для аргументов String функция возвращает длину строки + 8 (длина). Если у функции несколько аргументов, она суммирует их размеры в байтах. Синтаксис
byteSize(arg1[, arg2, ...])
Аргументы
  • arg1[, arg2, ...] — Значения любого типа данных, для которых требуется оценить размер в байтах в несжатом виде. Any
Возвращаемое значение Возвращает оценку размера аргументов в памяти в байтах. UInt64 Примеры Пример использования
Query
SELECT byteSize('string')
Response
┌─byteSize('string')─┐
│                 15 │
└────────────────────┘
Несколько аргументов
Query
SELECT byteSize(NULL, 1, 0.3, '')
Response
┌─byteSize(NULL, 1, 0.3, '')─┐
│                         19 │
└────────────────────────────┘

catboostEvaluate

Добавленный в: v22.9.0 Оценивает внешнюю модель CatBoost. CatBoost — библиотека градиентного бустинга с открытым исходным кодом, разработанная в Yandex для машинного обучения. Принимает путь к модели CatBoost и аргументы модели (признаки). Предварительные требования
  1. Соберите библиотеку для оценки 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>
  1. Обучите модель CatBoost с использованием libcatboost
См. раздел Обучение и применение моделей, чтобы узнать, как обучать модели CatBoost на обучающем наборе данных. Синтаксис
catboostEvaluate(path_to_model, feature_1[, feature_2, ..., feature_n])
Аргументы
  • path_to_model — Путь к модели CatBoost. const String
  • feature — Один или несколько признаков (аргументов) модели. Float*
Возвращаемое значение Возвращает результат оценки модели. Float64 Примеры catboostEvaluate
Query
SELECT catboostEvaluate('/root/occupy.bin', Temperature, Humidity, Light, CO2, HumidityRatio) AS prediction FROM occupancy LIMIT 1
Response
4.695691092573497

colorOKLABToSRGB

Добавленный в: v26.2.0 Преобразует цвет из перцептивного цветового пространства OKLab в цветовое пространство sRGB. Входной цвет задается в цветовом пространстве OKLab. Если входные значения выходят за пределы типичных диапазонов OKLab, результат определяется реализацией. OKLab использует три компонента:
  • L: перцептивная светлота (обычно в диапазоне [0..1])
    • a: зелено-красная оппонентная ось
    • b: сине-желтая оппонентная ось
Компоненты a и b теоретически не ограничены, но на практике обычно находятся в пределах от -0.4 до 0.4. OKLab разработано так, чтобы быть перцептивно равномерным и при этом не требовать больших вычислительных затрат. Преобразование задумано как обратное к colorSRGBToOKLAB и состоит из следующих этапов:
  1. Преобразование из OKLab в линейный sRGB. 2) Преобразование из линейного sRGB в sRGB с гамма-кодированием.
Необязательный аргумент gamma задает показатель степени, используемый при преобразовании из линейного sRGB в значения RGB с гамма-кодированием. Если он не указан, используется значение gamma по умолчанию для согласованности с colorSRGBToOKLAB. Дополнительные сведения о цветовом пространстве OKLab и его связи с sRGB см. по адресу https://developer.mozilla.org/en-US/docs/Web/CSS/Reference/Values/color&#95;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)
Query
SELECT colorOKLABToSRGB((0.4466, 0.0991, 0.44)) AS rgb;
Response
┌─rgb──────────────────────┐
│ (198.07056923258935,0,0) │
└──────────────────────────┘
Преобразование OKLAB в sRGB (UInt8)
Query
WITH colorOKLABToSRGB((0.7, 0.1, 0.54)) AS t
SELECT tuple(toUInt8(t.1), toUInt8(t.2), toUInt8(t.3)) AS RGB;
Response
┌─RGB──────────┐
│ (255,0,0)    │
└──────────────┘

colorOKLCHToSRGB

Добавленный в: v25.7.0 Преобразует цвет из перцептуально однородного цветового пространства OKLCH в привычное цветовое пространство sRGB. Если L выходит за пределы диапазона [0...1], C отрицательно или H выходит за пределы диапазона [0...360], результат зависит от реализации.
OKLCH — это цилиндрическая версия цветового пространства OKLab. Его три координаты — L (светлота в диапазоне [0...1]), C (цветность >= 0) и H (цветовой тон в градусах из диапазона [0...360]). OKLab/OKLCH спроектировано так, чтобы быть перцептуально однородным и при этом оставаться вычислительно недорогим.
Преобразование обратно colorSRGBToOKLCH:
  1. Из OKLCH в OKLab. 2) Из OKLab в линейный sRGB 3) Из линейного 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
Query
SELECT colorOKLCHToSRGB((0.6, 0.12, 40)) AS rgb;
Response
┌─rgb───────────────────────────────────────────────────────┐
│ (186.02058688365264,100.68677189684993,71.67819977081575) │
└───────────────────────────────────────────────────────────┘
Преобразовать OKLCH в sRGB (UInt8)
Query
WITH colorOKLCHToSRGB((0.6, 0.12, 40)) AS t
SELECT tuple(toUInt8(t.1), toUInt8(t.2), toUInt8(t.3)) AS RGB;
Response
┌─RGB──────────┐
│ (186,100,71) │
└──────────────┘

colorSRGBToOKLAB

Добавленный в: v26.2.0 Преобразует цвет, закодированный в цветовом пространстве sRGB, в перцептуально равномерное цветовое пространство OKLAB. Если какой-либо входной канал выходит за пределы [0...255] или значение гаммы не является положительным, поведение зависит от реализации.
OKLAB — это перцептуально равномерное цветовое пространство. Его три координаты: L (светлота в диапазоне [0...1]), a (Green-Red axis) и b (Blue-Yellow axis). OKLab спроектировано так, чтобы оставаться перцептуально равномерным и при этом требовать минимум вычислений.
Преобразование состоит из двух этапов:
  1. из sRGB в линейный sRGB 2) из линейного 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
Query
SELECT colorSRGBToOKLAB((128, 64, 32), 2.2) AS lab;
Response
┌─lab──────────────────────────────────────────────────────────┐
│ (0.4436238384931984,0.07266246769242975,0.07500108778529994) │
└──────────────────────────────────────────────────────────────┘

colorSRGBToOKLCH

Добавленный в: v25.7.0 Преобразует цвет, закодированный в цветовом пространстве sRGB, в перцептуально равномерное цветовое пространство OKLCH. Если какой-либо входной канал выходит за пределы [0...255] или значение гаммы не является положительным, поведение зависит от реализации.
OKLCH — это цилиндрическая версия цветового пространства OKLab. Его три координаты — L (светлота в диапазоне [0...1]), C (цветность >= 0) и H (цветовой тон в градусах в диапазоне [0...360]). OKLab/OKLCH спроектировано так, чтобы быть перцептуально равномерным и при этом оставаться вычислительно недорогим.
Преобразование состоит из трёх этапов:
  1. из sRGB в линейный sRGB 2) из линейного sRGB в OKLab 3) из 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
Query
SELECT colorSRGBToOKLCH((128, 64, 32), 2.2) AS lch;
Response
┌─lch───────────────────────────────────────────────────────┐
│ (0.4436238384931984,0.1044269954567863,45.90734548193018) │
└───────────────────────────────────────────────────────────┘

connectionId

Добавленный в: v21.3.0 Возвращает идентификатор соединения клиента, отправившего текущий запрос. Эта функция особенно полезна при отладке. Она была создана для совместимости с функцией MySQL CONNECTION_ID. Обычно она не используется в запросах для продакшна. Синтаксис
connectionId()
Аргументы
  • Отсутствуют.
Возвращаемое значение Возвращает идентификатор соединения текущего клиента. UInt64 Примеры Пример использования
Query
SELECT connectionId();
Response
┌─connectionId()─┐
│              0 │
└────────────────┘

countDigits

Добавленный в: v20.8.0 Возвращает количество десятичных цифр, необходимое для представления значения.
Эта функция учитывает scale десятичных значений, то есть вычисляет результат по базовому целочисленному типу, то есть по (value * scale).Например:
  • countDigits(42) = 2
  • countDigits(42.000) = 5
  • countDigits(0.04200) = 4
Переполнение Decimal для Decimal64 можно проверить с помощью countDigits(x) > 18, хотя это медленнее, чем isDecimalOverflow.
Синтаксис
countDigits(x)
Аргументы
  • x — Целое или десятичное число. (U)Int* или Decimal
Возвращаемое значение Возвращает количество цифр, необходимое для представления числа x. UInt8 Примеры Пример использования
Query
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));
Response
┌─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, SCHEMA, DATABASE Аргументы
  • None.
Возвращаемое значение Возвращает имя текущей базы данных. String Примеры Пример использования
Query
SELECT currentDatabase()
Response
┌─currentDatabase()─┐
│ default           │
└───────────────────┘
Стандартный синтаксис SQL без скобок
Query
SELECT CURRENT_DATABASE
Response
┌─CURRENT_DATABASE─┐
│ default          │
└──────────────────┘

currentProfiles

Добавленный в: v21.9.0 Возвращает массив профилей настроек текущего пользователя. Синтаксис
currentProfiles()
Аргументы
  • Отсутствуют.
Возвращаемое значение Возвращает массив профилей настроек для текущего пользователя. Array(String) Примеры Пример использования
Query
SELECT currentProfiles();
Response
┌─currentProfiles()─────────────────────────────┐
│ ['default', 'readonly_user', 'web_analytics'] │
└───────────────────────────────────────────────┘

currentQueryID

Добавленный в: v25.2.0 Возвращает текущий Query id. Синтаксис
currentQueryID()
Псевдонимы: current_query_id Аргументы
  • Отсутствуют.
Возвращаемое значение Примеры Пример
Query
SELECT currentQueryID();
Response
┌─currentQueryID()─────────────────────┐
│ 1280d0e8-1a08-4524-be6e-77975bb68e7d │
└──────────────────────────────────────┘

currentRoles

Добавленный в: v21.9.0 Возвращает массив ролей, назначенных текущему пользователю. Синтаксис
currentRoles()
Аргументы
  • Отсутствуют.
Возвращаемое значение Возвращает массив ролей, назначенных текущему пользователю. Array(String) Примеры Пример использования
Query
SELECT currentRoles();
Response
┌─currentRoles()─────────────────────────────────┐
│ ['sql-console-role:jane.smith@clickhouse.com'] │
└────────────────────────────────────────────────┘

currentSchemas

Добавленный в: v23.7.0 То же, что и функция currentDatabase, но:
  • принимает булев аргумент, который игнорируется
  • возвращает имя базы данных в виде массива с одним значением.
Функция currentSchemas существует только для совместимости с PostgreSQL. Используйте вместо неё currentDatabase. См. также оператор SET. Синтаксис
currentSchemas(bool)
Псевдонимы: current_schemas Аргументы
  • bool — Логическое значение, которое игнорируется. Bool
Возвращаемое значение Возвращает массив из одного элемента с именем текущей базы данных. Array(String) Примеры Пример использования
Query
SELECT currentSchemas(true)
Response
┌─currentSchemas(true)─┐
│ ['default']          │
└──────────────────────┘

currentUser

Добавленный в: v20.1.0 Возвращает имя текущего пользователя. При распределённом запросе возвращается имя пользователя, который инициировал запрос. Синтаксис
currentUser()
Псевдонимы: current_user, user Аргументы
  • None.
Возвращаемое значение Возвращает имя текущего пользователя или логин пользователя, который инициировал запрос. String Примеры Пример использования
Query
SELECT currentUser()
Response
┌─currentUser()─┐
│ default       │
└───────────────┘
Стандартный синтаксис SQL без скобок
Query
SELECT CURRENT_USER
Response
┌─CURRENT_USER─┐
│ default      │
└──────────────┘

defaultProfiles

Добавленный в: v21.9.0 Возвращает массив имён профилей настроек по умолчанию для текущего пользователя. Синтаксис
defaultProfiles()
Аргументы
  • Отсутствуют.
Возвращаемое значение Возвращает массив имён профилей настроек, используемых по умолчанию для текущего пользователя. Array(String) Примеры Пример использования
Query
SELECT defaultProfiles();
Response
┌─defaultProfiles()─┐
│ ['default']       │
└───────────────────┘

defaultRoles

Добавленный в: v21.9.0 Возвращает массив ролей по умолчанию для текущего пользователя. Синтаксис
defaultRoles()
Аргументы
  • Нет.
Возвращаемое значение Возвращает массив ролей по умолчанию для текущего пользователя. Array(String) Примеры Пример использования
Query
SELECT defaultRoles();
Response
┌─defaultRoles()─────────────────────────────────┐
│ ['sql-console-role:jane.smith@clickhouse.com'] │
└────────────────────────────────────────────────┘

defaultValueOfArgumentType

Добавленный в: v1.1.0 Возвращает значение по умолчанию для указанного типа данных. Не включает значения по умолчанию для пользовательских столбцов, заданных пользователем. Синтаксис
defaultValueOfArgumentType(expression)
Аргументы
  • expression — значение произвольного типа или выражение, результатом которого является значение произвольного типа. Any
Возвращаемое значение Возвращает 0 для чисел, пустую строку для строк или NULL для типа Nullable. UInt8 или String или NULL Примеры Пример использования
Query
SELECT defaultValueOfArgumentType(CAST(1 AS Int8));
Response
┌─defaultValueOfArgumentType(CAST(1, 'Int8'))─┐
│                                           0 │
└─────────────────────────────────────────────┘
Пример Nullable
Query
SELECT defaultValueOfArgumentType(CAST(1 AS Nullable(Int8)));
Response
┌─defaultValueOfArgumentType(CAST(1, 'Nullable(Int8)'))─┐
│                                                  ᴺᵁᴸᴸ │
└───────────────────────────────────────────────────────┘

defaultValueOfTypeName

Добавленный в: v1.1.0 Возвращает значение по умолчанию для заданного имени типа. Синтаксис
defaultValueOfTypeName(type)
Аргументы
  • type — Строка с именем типа. String
Возвращаемое значение Возвращает значение по умолчанию для указанного имени типа: 0 для чисел, пустую строку для строк или NULL для Nullable UInt8 или String или NULL Примеры Пример использования
Query
SELECT defaultValueOfTypeName('Int8');
Response
┌─defaultValueOfTypeName('Int8')─┐
│                              0 │
└────────────────────────────────┘
Пример Nullable
Query
SELECT defaultValueOfTypeName('Nullable(Int8)');
Response
┌─defaultValueOfTypeName('Nullable(Int8)')─┐
│                                     ᴺᵁᴸᴸ │
└──────────────────────────────────────────┘

displayName

Добавленный в: v22.11.0 Возвращает значение display_name из конфигурации или полное доменное имя (FQDN) сервера, если оно не задано. Синтаксис
displayName()
Аргументы
  • Отсутствуют.
Возвращаемое значение Возвращает значение display_name из config или FQDN сервера, если оно не задано. String Примеры Пример использования
Query
SELECT displayName();
Response
┌─displayName()─┐
│ production    │
└───────────────┘

dumpColumnStructure

Добавленный в: v1.1.0 Выводит подробное описание внутренней структуры столбца и его типа данных. Синтаксис
dumpColumnStructure(x)
Аргументы
  • x — Значение, для которого требуется получить описание. Any
Возвращаемое значение Возвращает описание структуры столбца, используемой для представления этого значения. String Примеры Пример использования
Query
SELECT dumpColumnStructure(CAST('2018-01-01 01:02:03', 'DateTime'));
Response
┌─dumpColumnStructure(CAST('2018-01-01 01:02:03', 'DateTime'))─┐
│ DateTime, Const(size = 1, UInt32(size = 1))                  │
└──────────────────────────────────────────────────────────────┘

enabledProfiles

Добавленный в: v21.9.0 Возвращает массив имен профилей настроек, включенных для текущего пользователя. Синтаксис
enabledProfiles()
Аргументы
  • Нет.
Возвращаемое значение Возвращает массив имен профилей настроек, включенных для текущего пользователя. Array(String) Примеры Пример использования
Query
SELECT enabledProfiles();
Response
┌─enabledProfiles()─────────────────────────────────────────────────┐
│ ['default', 'readonly_user', 'web_analytics', 'batch_processing'] │
└───────────────────────────────────────────────────────────────────┘

enabledRoles

Добавленный в: v21.9.0 Возвращает массив ролей, включенных для текущего пользователя. Синтаксис
enabledRoles()
Аргументы
  • Нет.
Возвращаемое значение Возвращает массив имён ролей, включённых для текущего пользователя. Array(String) Примеры Пример использования
Query
SELECT enabledRoles();
Response
┌─enabledRoles()─────────────────────────────────────────────────┐
│ ['general_data', 'sql-console-role:jane.smith@clickhouse.com'] │
└────────────────────────────────────────────────────────────────┘

errorCodeToName

Добавленный в: v20.12.0 Возвращает текстовое название числового кода ошибки ClickHouse. Соответствие между числовыми кодами ошибок и их названиями доступно здесь. Синтаксис
errorCodeToName(error_code)
Аргументы Возвращаемое значение Возвращает текстовое название error_code. String Примеры Пример использования
Query
SELECT errorCodeToName(252);
Response
┌─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' — строки. String
  • default — Значение, которое возвращается, если файл не существует или к нему нет доступа. String или NULL
Возвращаемое значение Возвращает содержимое файла в виде строки. String Примеры Вставка файлов в таблицу
Query
INSERT INTO table SELECT file('a.txt'), file('b.txt');
Response

filesystemAvailable

Добавленный в: v20.1.0 Возвращает объём свободного места в файловой системе, где хранится постоянное хранилище базы данных. Возвращаемое значение всегда меньше общего объёма свободного места (filesystemUnreserved), поскольку часть пространства зарезервирована для операционной системы. Синтаксис
filesystemAvailable([disk_name])
Аргументы
  • disk_name — Необязательный параметр. Имя диска, для которого нужно определить объём свободного места. Если не указано, используется диск по умолчанию. String или FixedString
Возвращаемое значение Возвращает объём оставшегося свободного места в байтах. UInt64 Примеры Пример использования
Query
SELECT formatReadableSize(filesystemAvailable()) AS "Available space";
Response
┌─Available space─┐
│ 30.75 GiB       │
└─────────────────┘

filesystemCapacity

Добавленный в: v20.1.0 Возвращает объём файловой системы в байтах. Требуется настроить path к каталогу данных. Синтаксис
filesystemCapacity([disk_name])
Аргументы
  • disk_name — Необязательный. Имя диска, для которого нужно получить объём. Если не указано, используется диск по умолчанию. String или FixedString
Возвращаемое значение Возвращает объём файловой системы в байтах. UInt64 Примеры Пример использования
Query
SELECT formatReadableSize(filesystemCapacity()) AS "Capacity";
Response
┌─Capacity──┐
│ 39.32 GiB │
└───────────┘

filesystemUnreserved

Добавленный в: v22.12.0 Возвращает общий объём свободного места в файловой системе, где размещено постоянное хранилище базы данных (ранее filesystemFree). См. также filesystemAvailable. Синтаксис
filesystemUnreserved([disk_name])
Аргументы
  • disk_name — Необязательный. Имя диска, для которого нужно определить общий объём свободного места. Если не указано, используется диск по умолчанию. String или FixedString
Возвращаемое значение Возвращает объём свободного места в байтах. UInt64 Примеры Пример использования
Query
SELECT formatReadableSize(filesystemUnreserved()) AS "Free space";
Response
┌─Free space─┐
│ 32.39 GiB  │
└────────────┘

finalizeAggregation

Добавленный в: v1.1.0 Для состояния агрегации эта функция возвращает результат агрегации (или финализированное состояние при использовании комбинатора -State). Синтаксис
finalizeAggregation(state)
Аргументы Возвращаемое значение Возвращает окончательный результат агрегации. Any Примеры Пример использования
Query
SELECT finalizeAggregation(arrayReduce('maxState', [1, 2, 3]));
Response
┌─finalizeAggregation(arrayReduce('maxState', [1, 2, 3]))─┐
│                                                       3 │
└─────────────────────────────────────────────────────────┘
Вместе с initializeAggregation
Query
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);
Response
┌─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. Для сложных геометрий (LineString, Polygon, MultiPolygon, Ring, MultiLineString) преобразование рекурсивно применяется к каждой паре координат. Функция поддерживает как отдельные геометрические типы (Point, Ring, Polygon, MultiPolygon, LineString, MultiLineString), так и тип варианта Geometry. Синтаксис
flipCoordinates(geometry)
Аргументы
  • geometry — геометрия, которую нужно преобразовать. Поддерживаемые типы: Point (Tuple(Float64, Float64)), Ring (Array(Point)), Polygon (Array(Ring)), MultiPolygon (Array(Polygon)), LineString (Array(Point)), MultiLineString (Array(LineString)) или Geometry (вариант, содержащий любой из этих типов).
Возвращаемое значение Геометрия с переставленными координатами. Возвращаемый тип соответствует входному типу. Point или Ring или Polygon или MultiPolygon или LineString или MultiLineString или Geometry Примеры basic_point
Query
SELECT flipCoordinates((1.0, 2.0));
Response
(2.0, 1.0)
ring
Query
SELECT flipCoordinates([(1.0, 2.0), (3.0, 4.0)]);
Response
[(2.0, 1.0), (4.0, 3.0)]
polygon
Query
SELECT flipCoordinates([[(1.0, 2.0), (3.0, 4.0)], [(5.0, 6.0), (7.0, 8.0)]]);
Response
[[(2.0, 1.0), (4.0, 3.0)], [(6.0, 5.0), (8.0, 7.0)]]
geometry_wkt
Query
SELECT flipCoordinates(readWkt('POINT(10 20)'));
Response
(20, 10)
geometry_polygon_wkt
Query
SELECT flipCoordinates(readWkt('POLYGON((0 0, 5 0, 5 5, 0 5, 0 0))'));
Response
[[(0, 0), (0, 5), (5, 5), (5, 0), (0, 0)]]

formatQuery

Добавленный в: v23.10.0 Возвращает отформатированную, возможно, многострочную версию указанного SQL-запроса. Генерирует исключение в случае ошибки разбора. [example:multiline] Синтаксис
formatQuery(query)
Аргументы
  • query — SQL-запрос, который требуется отформатировать. String
Возвращаемое значение Отформатированный запрос String Примеры Многострочный
Query
SELECT formatQuery('select a,    b FRom tab WHERE a > 3 and  b < 3');
Response
SELECT
    a,
    b
FROM tab
WHERE (a > 3) AND (b < 3)

formatQueryOrNull

Добавленный в: v23.11.0 Возвращает отформатированную, возможно, многострочную версию заданного SQL-запроса. В случае ошибки разбора возвращает NULL. [example:multiline] Синтаксис
formatQueryOrNull(query)
Аргументы
  • query — SQL-запрос для форматирования. String
Возвращаемое значение Отформатированный запрос String Примеры многострочный
Query
SELECT formatQuery('select a,    b FRom tab WHERE a > 3 and  b < 3');
Response
SELECT
    a,
    b
FROM tab
WHERE (a > 3) AND (b < 3)

formatQuerySingleLine

Добавленный в: v23.10.0 Как formatQuery(), но возвращаемая форматированная строка не содержит переводов строки. Генерирует исключение в случае ошибки разбора. [example:multiline] Синтаксис
formatQuerySingleLine(query)
Аргументы
  • query — SQL-запрос, который нужно отформатировать. String
Возвращаемое значение Отформатированный запрос String Примеры многострочный
Query
SELECT formatQuerySingleLine('select a,    b FRom tab WHERE a > 3 and  b < 3');
Response
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 Примеры многострочный
Query
SELECT formatQuerySingleLine('select a,    b FRom tab WHERE a > 3 and  b < 3');
Response
SELECT a, b FROM tab WHERE (a > 3) AND (b < 3)

formatReadableDecimalSize

Добавленный в: v22.11.0 Для заданного размера (количества байт) эта функция возвращает удобочитаемое округлённое значение с суффиксом (KB, MB и т. д.) в виде строки. Обратной операцией для этой функции является parseReadableSize. Синтаксис
formatReadableDecimalSize(x)
Аргументы
  • x — Размер в байтах. UInt64
Возвращаемое значение Возвращает округлённый размер в удобочитаемом виде с суффиксом в виде строки. String Примеры Форматирование размеров файлов
Query
SELECT
    arrayJoin([1, 1024, 1024*1024, 192851925]) AS filesize_bytes,
    formatReadableDecimalSize(filesize_bytes) AS filesize
Response
┌─filesize_bytes─┬─filesize───┐
│              1 │ 1.00 B     │
│           1024 │ 1.02 KB    │
│        1048576 │ 1.05 MB    │
│      192851925 │ 192.85 MB  │
└────────────────┴────────────┘

formatReadableQuantity

Добавленный в: v20.10.0 Для заданного числа эта функция возвращает строку с округлённым числом и суффиксом (тысяча, миллион, миллиард и т. д.). Эта функция принимает на вход любой числовой тип, но внутри приводит его к Float64. При больших значениях результат может быть неоптимальным. Синтаксис
formatReadableQuantity(x)
Аргументы
  • x — число для форматирования. UInt64
Возвращаемое значение Возвращает округлённое число с суффиксом в виде строки. String Примеры Форматирование чисел с суффиксами
Query
SELECT
    arrayJoin([1024, 1234 * 1000, (4567 * 1000) * 1000, 98765432101234]) AS number,
    formatReadableQuantity(number) AS number_for_humans
Response
┌─────────number─┬─number_for_humans─┐
│           1024 │ 1.02 thousand     │
│        1234000 │ 1.23 million      │
│     4567000000 │ 4.57 billion      │
│ 98765432101234 │ 98.77 trillion    │
└────────────────┴───────────────────┘

formatReadableSize

Добавленный в: v1.1.0 Для заданного размера (числа байтов) эта функция возвращает удобочитаемый округлённый размер с суффиксом (KiB, MiB и т. д.) в виде строки. Обратными операциями для этой функции являются parseReadableSize, parseReadableSizeOrZero и parseReadableSizeOrNull. Эта функция принимает на вход любой числовой тип, но внутри приводит его к Float64. При больших значениях результаты могут быть не самыми точными. Синтаксис
formatReadableSize(x)
Псевдонимы: FORMAT_BYTES Аргументы
  • x — Размер в байтах. UInt64
Возвращаемое значение Возвращает округлённый размер с суффиксом в удобочитаемом виде в виде строки. String Примеры Форматирование размеров файлов
Query
SELECT
    arrayJoin([1, 1024, 1024*1024, 192851925]) AS filesize_bytes,
    formatReadableSize(filesize_bytes) AS filesize
Response
┌─filesize_bytes─┬─filesize───┐
│              1 │ 1.00 B     │
│           1024 │ 1.00 KiB   │
│        1048576 │ 1.00 MiB   │
│      192851925 │ 183.92 MiB │
└────────────────┴────────────┘

formatReadableTimeDelta

Добавленный в: v20.12.0 Для временного интервала (delta) в секундах эта функция возвращает строковое представление временной дельты в year/month/day/hour/minute/second/millisecond/microsecond/nanosecond. Эта функция принимает на вход любой числовой тип, но внутри приводит его к Float64. При больших значениях результаты могут быть неточными. Синтаксис
formatReadableTimeDelta(column[, maximum_unit, minimum_unit])
Аргументы
  • column — Столбец с числовой дельтой времени. Float64
  • maximum_unit — Необязательный параметр. Максимальная единица, которую нужно отображать. Допустимые значения: nanoseconds, microseconds, milliseconds, seconds, minutes, hours, days, months, years. Значение по умолчанию: years. const String
  • minimum_unit — Необязательный параметр. Минимальная единица, которую нужно отображать. Все меньшие единицы отбрасываются. Допустимые значения: nanoseconds, microseconds, milliseconds, seconds, minutes, hours, days, months, years. Если явно указанное значение больше maximum_unit, будет сгенерировано исключение. Значение по умолчанию: seconds, если maximum_unit равен seconds или больше, в противном случае — nanoseconds. const String
Возвращаемое значение Возвращает дельту времени в виде строки. String Примеры Пример использования
Query
SELECT
    arrayJoin([100, 12345, 432546534]) AS elapsed,
    formatReadableTimeDelta(elapsed) AS time_delta
Response
┌────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│
└────────────┴────────────────────────────────────────────────────────────────┘
С максимальной единицей измерения
Query
SELECT
    arrayJoin([100, 12345, 432546534]) AS elapsed,
    formatReadableTimeDelta(elapsed, 'minutes') AS time_delta
Response
┌────elapsed─┬─time_delta─────────────────────────────────────────────────────┐
│        100 │ 1 minute and 40 seconds                                         │
│      12345 │ 205 minutes and 45 seconds                                      │
│  432546534 │ 7209108 minutes and 54 seconds                                  │
└────────────┴─────────────────────────────────────────────────────────────────┘

fuzzQuery

Добавленный в: v26.2.0 Разбирает указанную строку запроса и применяет к ней случайные мутации AST (фаззинг). Возвращает полученный в результате фаззинга запрос в виде строки. Недетерминирована: каждый вызов может возвращать разный результат. Требует allow_fuzz_query_functions = 1. Синтаксис
fuzzQuery(query)
Аргументы
  • query — SQL-запрос для фаззинга. String
Возвращаемое значение Строка запроса после фаззинга String Примеры базовый
Query
SET allow_fuzz_query_functions = 1; SELECT fuzzQuery('SELECT 1');
Response

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. UInt64
  • seed — Начальное значение генератора случайных чисел для получения стабильных результатов. Если seed не указан или задан как Null, он генерируется случайным образом. UInt64
Возвращаемое значение Случайно сгенерированная структура таблицы. String Примеры Пример использования
Query
SELECT generateRandomStructure()
Response
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
с заданным количеством столбцов
Query
SELECT generateRandomStructure(1)
Response
c1 Map(UInt256, UInt16)
с заданным seed
Query
SELECT generateRandomStructure(NULL, 33)
Response
c1 DateTime, c2 Enum8('c2V0' = 0, 'c2V1' = 1, 'c2V2' = 2, 'c2V3' = 3), c3 LowCardinality(Nullable(FixedString(30))), c4 Int16, c5 Enum8('c5V0' = 0, 'c5V1' = 1, 'c5V2' = 2, 'c5V3' = 3), c6 Nullable(UInt8), c7 String, c8 Nested(e1 IPv4, e2 UInt8, e3 UInt16, e4 UInt16, e5 Int32, e6 Map(Date, Decimal256(70)))

generateSerialID

Добавленный в: v25.1.0 Генерирует и возвращает последовательные числа, начиная с предыдущего значения счетчика. Эта функция принимает строковый аргумент — идентификатор серии, а также необязательное начальное значение. Сервер должен быть настроен для работы с Keeper. Серии хранятся в узлах Keeper по пути, который можно настроить в series_keeper_path в конфигурации сервера. Синтаксис
generateSerialID(series_identifier[, start_value])
Аргументы
  • series_identifier — Идентификатор серии const String
  • start_value — Необязательный. Начальное значение счётчика. По умолчанию — 0. Примечание: это значение используется только при создании новой серии и игнорируется, если серия уже существует UInt*
Возвращаемое значение Возвращает последовательные числа, начиная с предыдущего значения счётчика. UInt64 Примеры первый вызов
Query
SELECT generateSerialID('id1')
Response
┌─generateSerialID('id1')──┐
│                        1 │
└──────────────────────────┘
второй вызов
Query
SELECT generateSerialID('id1')
Response
┌─generateSerialID('id1')──┐
│                        2 │
└──────────────────────────┘
обращение к столбцу
Query
SELECT *, generateSerialID('id1') FROM test_table
Response
┌─CounterID─┬─UserID─┬─ver─┬─generateSerialID('id1')──┐
│         1 │      3 │   3 │                        3 │
│         1 │      1 │   1 │                        4 │
│         1 │      2 │   2 │                        5 │
│         1 │      5 │   5 │                        6 │
│         1 │      4 │   4 │                        7 │
└───────────┴────────┴─────┴──────────────────────────┘
с начальным значением
Query
SELECT generateSerialID('id2', 100)
Response
┌─generateSerialID('id2', 100)──┐
│                           100 │
└───────────────────────────────┘
со стартовым значением — второй вызов
Query
SELECT generateSerialID('id2', 100)
Response
┌─generateSerialID('id2', 100)──┐
│                           101 │
└───────────────────────────────┘

getClientHTTPHeader

Добавленный в: v24.5.0 Возвращает значение HTTP-заголовка. Если такого заголовка нет или текущий запрос выполняется не через HTTP-интерфейс, функция возвращает пустую строку. Доступ к некоторым HTTP-заголовкам (например, Authentication и X-ClickHouse-*) ограничен.
Требуется включить настройку allow_get_client_http_headerДля использования функции должна быть включена настройка allow_get_client_http_header. По умолчанию эта настройка отключена из соображений безопасности, поскольку некоторые заголовки, например Cookie, могут содержать конфиденциальную информацию.
В этой функции HTTP-заголовки чувствительны к регистру. Если функция используется в контексте распределенного запроса, она возвращает непустой результат только на узле-инициаторе. Синтаксис
getClientHTTPHeader(name)
Аргументы
  • name — Имя HTTP-заголовка. String
Возвращаемое значение Возвращает значение заголовка. String Примеры Пример использования
Query
SELECT getClientHTTPHeader('Content-Type');
Response
┌─getClientHTTPHeader('Content-Type')─┐
│ application/x-www-form-urlencoded   │
└─────────────────────────────────────┘

getMacro

Добавленный в: v20.1.0 Возвращает значение макроса из файла конфигурации сервера. Макросы определяются в разделе <macros> файла конфигурации и могут использоваться, чтобы различать серверы по удобным именам, даже если у них сложные имена узлов. Если функция выполняется в контексте distributed таблицы, она создаёт обычный столбец со значениями для каждого сегмента. Синтаксис
getMacro(name)
Аргументы
  • name — Имя макроса, который нужно получить. const String
Возвращаемое значение Возвращает значение указанного макроса. String Примеры Базовое использование
Query
SELECT getMacro('test');
Response
┌─getMacro('test')─┐
│ Value            │
└──────────────────┘

getMaxTableNameLengthForDatabase

Добавленный в: v25.1.0 Возвращает максимальную длину имени таблицы в указанной базе данных. Синтаксис
getMaxTableNameLengthForDatabase(database_name)
Аргументы
  • database_name — имя указанной базы данных. String
Возвращаемое значение Возвращает длину самого длинного имени таблицы, целое число. Примеры обычный
Query
SELECT getMaxTableNameLengthForDatabase('default');
Response
┌─getMaxTableNameLengthForDatabase('default')─┐
            │                                         206 │
            └─────────────────────────────────────────────┘

getMergeTreeSetting

Добавленный в: v25.6.0 Возвращает текущее значение настройки MergeTree. Синтаксис
getMergeTreeSetting(setting_name)
Аргументы
  • setting_name — Название настройки. String
Возвращаемое значение Возвращает текущее значение настройки MergeTree. Примеры Пример использования
Query
SELECT getMergeTreeSetting('index_granularity');
Response
┌─getMergeTreeSetting('index_granularity')─┐
│                                     8192 │
└──────────────────────────────────────────┘

getOSKernelVersion

Добавленный в: v21.11.0 Возвращает строку с версией ядра операционной системы. Синтаксис
getOSKernelVersion()
Аргументы
  • Отсутствуют.
Возвращаемое значение Возвращает текущую версию ядра операционной системы. String Примеры Пример использования
Query
SELECT getOSKernelVersion();
Response
┌─getOSKernelVersion()────┐
│ Linux 4.15.0-55-generic │
└─────────────────────────┘

getServerPort

Добавленный в: v21.10.0 Возвращает номер порта сервера для заданного протокола. Синтаксис
getServerPort(port_name)
Аргументы
  • port_name — Название порта. String
Возвращаемое значение Возвращает номер порта сервера. UInt16 Примеры Пример использования
Query
SELECT getServerPort('tcp_port');
Response
┌─getServerPort('tcp_port')─┐
│                      9000 │
└───────────────────────────┘

getServerSetting

Добавленный в: v25.6.0 Возвращает текущее значение по имени настройки сервера. Синтаксис
getServerSetting(setting_name')
Аргументы
  • setting_name — Название настройки сервера. String
Возвращаемое значение Возвращает текущее значение настройки сервера. Any Примеры Пример использования
Query
SELECT getServerSetting('allow_use_jemalloc_memory');
Response
┌─getServerSetting('allow_use_jemalloc_memory')─┐
│ true                                          │
└───────────────────────────────────────────────┘

getSetting

Добавленный в: v20.7.0 Возвращает текущее значение настройки. Синтаксис
getSetting(setting_name)
Аргументы Возвращаемое значение Возвращает текущее значение настройки. Any Примеры Пример использования
Query
SELECT getSetting('enable_analyzer');
SET enable_analyzer = false;
SELECT getSetting('enable_analyzer');
Response
┌─getSetting('⋯_analyzer')─┐
│ true                     │
└──────────────────────────┘
┌─getSetting('⋯_analyzer')─┐
│ false                    │
└──────────────────────────┘

getSettingOrDefault

Добавленный в: v24.10.0 Возвращает текущее значение настройки или, если в текущем профиле она не задана, значение по умолчанию, указанное во втором аргументе. Синтаксис
getSettingOrDefault(setting_name, default_value)
Аргументы
  • setting_name — Имя настройки. String
  • default_value — Значение, которое возвращается, если custom_setting не задан. Значение может быть любого типа данных или NULL.
Возвращаемое значение Возвращает текущее значение указанной настройки или default_value, если настройка не задана. Примеры Пример использования
Query
SELECT getSettingOrDefault('custom_undef1', 'my_value');
SELECT getSettingOrDefault('custom_undef2', 100);
SELECT getSettingOrDefault('custom_undef3', NULL);
Response
my_value
100
NULL

getSizeOfEnumType

Добавленный в: v1.1.0 Возвращает количество полей в указанном Enum. Синтаксис
getSizeOfEnumType(x)
Аргументы
  • x — значение типа Enum. Enum
Возвращаемое значение Возвращает количество полей с входными значениями типа Enum. UInt8/16 Примеры Пример использования
Query
SELECT getSizeOfEnumType(CAST('a' AS Enum8('a' = 1, 'b' = 2))) AS x;
Response
┌─x─┐
│ 2 │
└───┘

getSubcolumn

Добавленный в: v23.3.0 Принимает выражение или идентификатор, а также константную строку с именем подстолбца. Возвращает запрошенный подстолбец, извлечённый из выражения. Синтаксис
getSubcolumn(nested_value, subcolumn_name)
Аргументы
  • Нет.
Возвращаемое значение Примеры getSubcolumn
Query
SELECT getSubcolumn(array_col, 'size0'), getSubcolumn(tuple_col, 'elem_name')
Response

getTypeSerializationStreams

Добавленный в: v22.6.0 Перечисляет пути потоков типа данных. Эта функция предназначена для использования при разработке. Синтаксис
getTypeSerializationStreams(col)
Аргументы
  • col — Столбец или строковое представление типа данных, по которому будет определён тип данных. Any
Возвращаемое значение Возвращает массив со всеми путями подпотоков сериализации. Array(String) Примеры tuple
Query
SELECT getTypeSerializationStreams(tuple('a', 1, 'b', 2))
Response
['{TupleElement(1), Regular}','{TupleElement(2), Regular}','{TupleElement(3), Regular}','{TupleElement(4), Regular}']
map
Query
SELECT getTypeSerializationStreams('Map(String, Int64)')
Response
['{ArraySizes}','{ArrayElements, TupleElement(keys), Regular}','{ArrayElements, TupleElement(values), Regular}']

globalVariable

Добавленный в: v20.5.0 Принимает константный строковый аргумент и возвращает значение глобальной переменной с этим именем. Эта функция предназначена для совместимости с MySQL и не нужна и не полезна при обычной работе ClickHouse. Определено лишь несколько фиктивных глобальных переменных. Синтаксис
globalVariable(name)
Аргументы
  • name — имя глобальной переменной. String
Возвращаемое значение Возвращает значение переменной name. Any Примеры globalVariable
Query
SELECT globalVariable('max_allowed_packet')
Response
67108864

hasColumnInTable

Добавленный в: v1.1.0 Проверяет, существует ли указанный столбец в таблице базы данных. Для элементов во вложенной структуре данных функция проверяет наличие столбца. Для самой вложенной структуры данных функция возвращает 0. Синтаксис
hasColumnInTable([hostname[, username[, password]],]database, table, column)
Аргументы
  • database — Имя базы данных. const String
  • table — Имя таблицы. const String
  • column — Имя столбца. const String
  • hostname — Необязательно. Имя удалённого сервера, на котором нужно выполнить проверку. const String
  • username — Необязательно. Имя пользователя удалённого сервера. const String
  • password — Необязательно. Пароль удалённого сервера. const String
Возвращаемое значение Возвращает 1, если указанный столбец существует, и 0 в противном случае. UInt8 Примеры Проверка существующего столбца
Query
SELECT hasColumnInTable('system','metrics','metric')
Response
1
Проверка несуществующего столбца
Query
SELECT hasColumnInTable('system','metrics','non-existing_column')
Response
0

hasThreadFuzzer

Добавленный в: v20.6.0 Возвращает, включен ли thread fuzzer. Эта функция полезна только при тестировании и отладке. Синтаксис
hasThreadFuzzer()
Аргументы
  • Нет.
Возвращаемое значение Возвращает, активен ли Thread Fuzzer. UInt8 Примеры Проверка статуса Thread Fuzzer
Query
SELECT hasThreadFuzzer()
Response
┌─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(...))) Примеры простой
Query
SELECT highlightQuery('SELECT 1')
Response
[(0,6,'keyword'),(7,8,'number')]

hostName

Добавленный в: v20.5.0 Возвращает имя хоста, на котором выполняется эта функция. Если функция выполняется на удалённом сервере (распределённая обработка), возвращается имя удалённого сервера. Если функция выполняется в контексте distributed таблицы, она формирует обычный столбец со значениями для каждого сегмента. В противном случае возвращается константное значение. Синтаксис
hostName()
Псевдонимы: hostname Аргументы
  • Нет.
Возвращаемое значение Возвращает имя хоста. String Примеры Пример использования
Query
SELECT hostName()
Response
┌─hostName()─┐
│ clickhouse │
└────────────┘

icebergBucket

Добавленный в: v25.5.0 Реализует логику бакет-преобразования в Iceberg Синтаксис
icebergBucket(N, value)
Аргументы Возвращаемое значение Возвращает 32-битный хеш исходного значения. Int32 Примеры Пример
Query
SELECT icebergBucket(5, 1.0 :: Float32)
Response
4

icebergTruncate

Добавленный в: v25.3.0 Реализует логику truncate-преобразования в Iceberg: https://iceberg.apache.org/spec/#truncate-transform-details. Синтаксис
icebergTruncate(N, value)
Аргументы
  • value — Значение, которое нужно преобразовать. String или (U)Int* или Decimal
Возвращаемое значение Тот же тип, что и у аргумента Примеры Пример
Query
SELECT icebergTruncate(3, 'iceberg')
Response
ice

identity

Добавленный в: v1.1.0 Эта функция возвращает переданный ей аргумент, что полезно при отладке и тестировании. Она позволяет обойти использование индексов и вместо этого оценить производительность полного сканирования. Анализатор запросов игнорирует всё внутри функций identity при поиске подходящих индексов, а также отключает свёртку констант. Синтаксис
identity(x)
Аргументы
  • x — Входное значение. Any
Возвращаемое значение Возвращает входное значение без изменений. Any Примеры Пример использования
Query
SELECT identity(42)
Response
42

ignore

Добавленный в: v1.1.0 Принимает произвольные аргументы и всегда возвращает 0. Синтаксис
ignore(x)
Аргументы
  • x — Входное значение, которое не используется и передаётся только для избежания синтаксической ошибки. Any
Возвращаемое значение Всегда возвращает 0. UInt8 Примеры Пример использования
Query
SELECT ignore(0, 'ClickHouse', NULL)
Response
┌─ignore(0, 'ClickHouse', NULL)─┐
│                             0 │
└───────────────────────────────┘

indexHint

Добавленный в: v1.1.0 Эта функция предназначена для отладки и интроспекции. Она игнорирует свой аргумент и всегда возвращает 1. Аргументы не вычисляются. При анализе индекса предполагается, что аргумент этой функции не заключён в indexHint. Это позволяет выбирать данные в диапазонах индекса по соответствующему условию, но без последующей фильтрации по этому условию. Индекс в ClickHouse разреженный, поэтому использование indexHint вернёт больше данных, чем прямое указание того же условия.
Когда вы выполняете:
SELECT * FROM test WHERE key = 123;
ClickHouse делает две вещи:
  1. Использует индекс, чтобы определить, какие гранулы (блоки примерно по 8192 строк) могут содержать key = 123
  2. Читает эти гранулы и построчно фильтрует их, чтобы вернуть только строки, где key = 123
Поэтому, даже если с диска считываются 8 192 строки, возвращается только 1 строка, которая действительно соответствует условию.С indexHint, когда вы выполняете:
SELECT * FROM test WHERE indexHint(key = 123);
ClickHouse делает только одно:
  1. Использует индекс, чтобы определить, какие гранулы могут содержать key = 123, и возвращает все строки из этих гранул без фильтрации.
Возвращаются все 8 192 строки, включая строки, где key = 456, key = 789 и т. д. (То есть всё, что оказалось сохранено в той же грануле.) indexHint() предназначен не для повышения производительности. Он нужен для отладки и понимания того, как работает индекс ClickHouse:
  • Какие гранулы выбирает моё условие?
  • Сколько строк находится в этих гранулах?
  • Эффективно ли используется мой индекс?
Примечание: Оптимизировать запрос с помощью функции indexHint невозможно. Функция indexHint не оптимизирует запрос, поскольку не предоставляет никакой дополнительной информации для анализа запроса. Наличие выражения внутри функции indexHint ничем не лучше, чем его отсутствие. Функцию indexHint можно использовать только для интроспекции и отладки, и она не повышает производительность. Если вы видите, что indexHint использует кто-либо, кроме участников ClickHouse, скорее всего, это ошибка, и его следует удалить. Синтаксис
indexHint(expression)
Аргументы
  • expression — Любое выражение для выбора диапазона индекса. Expression
Возвращаемое значение Во всех случаях возвращает 1. UInt8 Примеры Пример использования с фильтрацией по дате
Query
SELECT FlightDate AS k, count() FROM ontime WHERE indexHint(k = '2025-09-15') GROUP BY k ORDER BY k ASC;
Response
┌──────────k─┬─count()─┐
│ 2025-09-14 │    7071 │
│ 2025-09-15 │   16428 │
│ 2025-09-16 │    1077 │
│ 2025-09-30 │    8167 │
└────────────┴─────────┘

initialQueryID

Добавленный в: v1.1.0 Возвращает ID исходного запроса. Другие параметры запроса можно извлечь из поля initial_query_id в system.query_log. В отличие от функции queryID, initialQueryID возвращает одинаковые результаты на разных сегментах. Синтаксис
initialQueryID()
Псевдонимы: initial_query_id Аргументы
  • Нет.
Возвращаемое значение Возвращает идентификатор исходного запроса. String Примеры Пример использования
Query
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());
Response
┌─count(DISTINCT t)─┐
│                 1 │
└───────────────────┘

initialQueryStartTime

Добавленный в: v25.4.0 Возвращает время начала текущего исходного запроса. initialQueryStartTime возвращает одинаковый результат на разных сегментах. Синтаксис
initialQueryStartTime()
Псевдонимы: initial_query_start_time Аргументы
  • Нет.
Возвращаемое значение Возвращает время начала исходного запроса для текущего запроса. DateTime Примеры Пример использования
Query
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());
Response
┌─count(DISTINCT t)─┐
│                 1 │
└───────────────────┘

initializeAggregation

Добавленный в: v20.6.0 Вычисляет результат агрегатной функции по одному значению. Эту функцию можно использовать для инициализации агрегатных функций с комбинатором -State. Вы можете создавать состояния агрегатных функций и вставлять их в столбцы типа AggregateFunction или использовать инициализированные агрегаты в качестве значений по умолчанию. Синтаксис
initializeAggregation(aggregate_function, arg1[, arg2, ...])
Аргументы
  • aggregate_function — Имя агрегатной функции, которую нужно инициализировать. String
  • arg1[, arg2, ...] — Аргументы агрегатной функции. Any
Возвращаемое значение Возвращает результат агрегации для каждой строки, переданной в функцию. Возвращаемый тип совпадает с возвращаемым типом функции, переданной в initializeAggregation первым аргументом. Any Примеры Базовое использование с uniqState
Query
SELECT uniqMerge(state) FROM (SELECT initializeAggregation('uniqState', number % 3) AS state FROM numbers(10000));
Response
┌─uniqMerge(state)─┐
│                3 │
└──────────────────┘
Использование функций sumState и finalizeAggregation
Query
SELECT finalizeAggregation(state), toTypeName(state) FROM (SELECT initializeAggregation('sumState', number % 3) AS state FROM numbers(5));
Response
┌─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 Примеры Константное выражение
Query
SELECT isConstant(x + 1)
FROM (SELECT 43 AS x)
Response
┌─isConstant(plus(x, 1))─┐
│                      1 │
└────────────────────────┘
Константа с функцией
Query
WITH 3.14 AS pi
SELECT isConstant(cos(pi))
Response
┌─isConstant(cos(pi))─┐
│                   1 │
└─────────────────────┘
Неконстантное выражение
Query
SELECT isConstant(number)
FROM numbers(1)
Response
┌─isConstant(number)─┐
│                  0 │
└────────────────────┘
Поведение функции now()
Query
SELECT isConstant(now())
Response
┌─isConstant(now())─┐
│                 1 │
└───────────────────┘

isDecimalOverflow

Добавленный в: v20.8.0 Проверяет, не содержит ли десятичное число слишком много цифр, чтобы поместиться в тип Decimal с заданной точностью. Синтаксис
isDecimalOverflow(value[, precision])
Аргументы
  • value — Проверяемое значение типа Decimal. Decimal
  • precision — Необязательно. Точность типа Decimal. Если не указано, используется исходная точность первого аргумента. UInt8
Возвращаемое значение Возвращает 1, если десятичное значение содержит больше цифр, чем допускает его точность, и 0, если десятичное значение соответствует указанной точности. UInt8 Примеры Пример использования
Query
SELECT isDecimalOverflow(toDecimal32(1000000000, 0), 9),
       isDecimalOverflow(toDecimal32(1000000000, 0)),
       isDecimalOverflow(toDecimal32(-1000000000, 0), 9),
       isDecimalOverflow(toDecimal32(-1000000000, 0));
Response
┌─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.
Поддерживает только таблицы, созданные с помощью ENGINE = Join(ANY, LEFT, <join_keys>) оператора.
Синтаксис
joinGet(join_storage_table_name, value_column, join_keys)
Аргументы
  • join_storage_table_name — Идентификатор, указывающий, где выполнять поиск. Идентификатор ищется в базе данных по умолчанию (см. параметр default_database в файле конфигурации). Чтобы переопределить базу данных по умолчанию, используйте запрос USE database_name или укажите базу данных и таблицу через точку, например database_name.table_name. String
  • value_column — Имя столбца таблицы, содержащего необходимые данные. const String
  • join_keys — Список ключей JOIN. Any
Возвращаемое значение Возвращает список значений, соответствующих списку ключей. Any Примеры Пример использования
Query
CREATE TABLE db_test.id_val(`id` UInt32, `val` UInt32) ENGINE = Join(ANY, LEFT, id);
INSERT INTO db_test.id_val VALUES (1,11)(2,12)(4,13);

SELECT joinGet(db_test.id_val, 'val', toUInt32(1));
Response
┌─joinGet(db_test.id_val, 'val', toUInt32(1))─┐
│                                          11 │
└─────────────────────────────────────────────┘
Использование таблицы из текущей базы данных
Query
USE db_test;
SELECT joinGet(id_val, 'val', toUInt32(2));
Response
┌─joinGet(id_val, 'val', toUInt32(2))─┐
│                                  12 │
└─────────────────────────────────────┘
Использование массивов как ключей JOIN
Query
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', 1, 11);
Response
┌─joinGet(some_table, 'name', 1, 11)─┐
│ a                                  │
└────────────────────────────────────┘

joinGetOrNull

Добавленный в: v20.4.0 Позволяет извлекать данные из таблицы так же, как из словаря. Извлекает данные из таблиц Join по указанному ключу JOIN. В отличие от joinGet возвращает NULL, если ключ отсутствует.
Поддерживает только таблицы, созданные с помощью оператора ENGINE = Join(ANY, LEFT, <join_keys>) оператор.
Синтаксис
joinGetOrNull(join_storage_table_name, value_column, join_keys)
Аргументы
  • join_storage_table_name — Идентификатор, указывающий, где выполнять поиск. Поиск по идентификатору выполняется в базе данных по умолчанию (см. параметр default_database в файле конфигурации). Чтобы переопределить базу данных по умолчанию, используйте запрос USE database_name или укажите базу данных и таблицу через точку, например database_name.table_name. String
  • value_column — Имя столбца таблицы, содержащего необходимые данные. const String
  • join_keys — Список ключей JOIN. Any
Возвращаемое значение Возвращает список значений, соответствующих списку ключей, или NULL, если ключ не найден. Any Примеры Пример использования
Query
CREATE TABLE db_test.id_val(`id` UInt32, `val` UInt32) ENGINE = Join(ANY, LEFT, id);
INSERT INTO db_test.id_val VALUES (1,11)(2,12)(4,13);

SELECT joinGetOrNull(db_test.id_val, 'val', toUInt32(1)), joinGetOrNull(db_test.id_val, 'val', toUInt32(999));
Response
┌─joinGetOrNull(db_test.id_val, 'val', toUInt32(1))─┬─joinGetOrNull(db_test.id_val, 'val', toUInt32(999))─┐
│                                                11 │                                                ᴺᵁᴸᴸ │
└───────────────────────────────────────────────────┴─────────────────────────────────────────────────────┘

lowCardinalityIndices

Добавленный в: v18.12.0 Возвращает позицию значения в словаре столбца LowCardinality. Нумерация позиций начинается с 1. Поскольку у LowCardinality словари создаются отдельно для каждой части, эта функция может возвращать разные позиции для одного и того же значения в разных частях. Синтаксис
lowCardinalityIndices(col)
Аргументы
  • col — Столбец с низкой кардинальностью. LowCardinality
Возвращаемое значение Позиция значения в словаре текущей части. UInt64 Примеры Примеры использования
Query
DROP TABLE IF EXISTS test;
CREATE TABLE test (s LowCardinality(String)) ENGINE = Memory;

-- создать две части:

INSERT INTO test VALUES ('ab'), ('cd'), ('ab'), ('ab'), ('df');
INSERT INTO test VALUES ('ef'), ('cd'), ('ab'), ('cd'), ('ef');

SELECT s, lowCardinalityIndices(s) FROM test;
Response
┌─s──┬─lowCardinalityIndices(s)─┐
│ ab │                        1 │
│ cd │                        2 │
│ ab │                        1 │
│ ab │                        1 │
│ df │                        3 │
└────┴──────────────────────────┘
┌─s──┬─lowCardinalityIndices(s)─┐
│ ef │                        1 │
│ cd │                        2 │
│ ab │                        3 │
│ cd │                        2 │
│ ef │                        1 │
└────┴──────────────────────────┘

lowCardinalityKeys

Добавленный в: v18.12.0 Возвращает значения словаря столбца LowCardinality. Если размер блока меньше или больше размера словаря, результат будет усечён или дополнен значениями по умолчанию. Поскольку LowCardinality использует словари на уровне частей, эта функция может возвращать разные значения словаря в разных частях. Синтаксис
lowCardinalityKeys(col)
Аргументы
  • col — Столбец с низкой кардинальностью. LowCardinality
Возвращаемое значение Возвращает ключи словаря. UInt64 Примеры lowCardinalityKeys
Query
DROP TABLE IF EXISTS test;
CREATE TABLE test (s LowCardinality(String)) ENGINE = Memory;

-- создать две части:

INSERT INTO test VALUES ('ab'), ('cd'), ('ab'), ('ab'), ('df');
INSERT INTO test VALUES ('ef'), ('cd'), ('ab'), ('cd'), ('ef');

SELECT s, lowCardinalityKeys(s) FROM test;
Response
┌─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 Примеры Пример использования
Query
-- В приведённом ниже примере функция `countMatches` ожидает константный второй аргумент.
-- Это поведение можно отладить с помощью функции `materialize`, которая преобразует константу в полный столбец,
-- тем самым проверяя, что функция генерирует исключение для неконстантного аргумента.

SELECT countMatches('foobarfoo', 'foo');
SELECT countMatches('foobarfoo', materialize('foo'));
Response
2
Code: 44. DB::Exception: Received from localhost:9000. DB::Exception: Illegal type of argument #2 'pattern' of function countMatches, expected constant String, got String

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
Query
SELECT minSampleSizeContinuous(112.25, 21.1, 0.03, 0.80, 0.05) AS sample_size
Response
(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
Query
SELECT minSampleSizeConversion(0.25, 0.03, 0.80, 0.05) AS sample_size
Response
(3396.077603219163,0.22,0.28)

neighbor

Добавленный в: v20.1.0 Возвращает значение из столбца с указанным смещением относительно текущей строки. Эта функция устарела и подвержена ошибкам, поскольку работает с физическим порядком блоков данных, который может не совпадать с логическим порядком, ожидаемым пользователями. Вместо неё рекомендуется использовать корректные оконные функции. Функцию можно включить, установив allow_deprecated_error_prone_window_functions = 1. Синтаксис
neighbor(column, offset[, default_value])
Аргументы
  • column — Исходный столбец. Any
  • offset — Смещение относительно текущей строки. Положительные значения указывают вперёд, отрицательные — назад. Integer
  • default_value — Необязательно. Значение, которое возвращается, если смещение выходит за пределы данных. Если не указано, используется значение по умолчанию для типа столбца. Any
Возвращаемое значение Возвращает значение по указанному смещению или значение по умолчанию, если смещение выходит за пределы данных. Any Примеры Пример использования
Query
SELECT number, neighbor(number, 2) FROM system.numbers LIMIT 10;
Response
┌─number─┬─neighbor(number, 2)─┐
│      0 │                   2 │
│      1 │                   3 │
│      2 │                   4 │
│      3 │                   5 │
│      4 │                   6 │
│      5 │                   7 │
│      6 │                   8 │
│      7 │                   9 │
│      8 │                   0 │
│      9 │                   0 │
└────────┴─────────────────────┘
С значением по умолчанию
Query
SELECT number, neighbor(number, 2, 999) FROM system.numbers LIMIT 10;
Response
┌─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 Примеры Пример использования
Query
SELECT normalizeQuery('[1, 2, 3, x]') AS query
Response
┌─query────┐
│ [?.., x] │
└──────────┘

normalizeQueryKeepNames

Добавленный в: v21.2.0 Заменяет литералы и последовательности литералов плейсхолдером ?, но не заменяет сложные псевдонимы (содержащие пробельные символы, более двух цифр или имеющие длину не менее 36 байт, например UUID). Это помогает лучше анализировать журналы сложных запросов. Синтаксис
normalizeQueryKeepNames(x)
Аргументы
  • x — Последовательность символов. String
Возвращаемое значение Возвращает указанную последовательность символов с плейсхолдерами. String Примеры Пример использования
Query
SELECT normalizeQuery('SELECT 1 AS aComplexName123'), normalizeQueryKeepNames('SELECT 1 AS aComplexName123')
Response
┌─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 Примеры Пример использования
Query
SELECT normalizedQueryHash('SELECT 1 AS `xyz`') != normalizedQueryHash('SELECT 1 AS `abc`') AS res
Response
┌─res─┐
│   1 │
└─────┘

normalizedQueryHashKeepNames

Добавленный в: v21.2.0 Как и normalizedQueryHash, возвращает одинаковые 64-битные хеш-значения для похожих запросов без учёта значений литералов, но не заменяет сложные псевдонимы (содержащие пробелы, более двух цифр или имеющие длину не менее 36 байт, например UUID) на плейсхолдер перед хешированием. Может быть полезна при анализе журнала запросов. Синтаксис
normalizedQueryHashKeepNames(x)
Аргументы
  • x — Последовательность символов. String
Возвращаемое значение Возвращает 64-битное хеш-значение. UInt64 Примеры Пример использования
Query
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;
Response
┌─normalizedQueryHash─┐
│                   0 │
└─────────────────────┘
┌─normalizedQueryHashKeepNames─┐
│                            1 │
└──────────────────────────────┘

obfuscateQuery

Добавленный в: v26.4.0 Маскирует SQL-запрос, заменяя идентификаторы случайными словами, а литералы — случайными значениями, при этом сохраняя структуру запроса. Эта функция полезна для анонимизации запросов перед логированием или предоставлением в общий доступ в целях отладки. Даже для одного и того же исходного запроса разные строки будут давать разные обфусцированные результаты, что помогает сохранять конфиденциальность при работе с несколькими запросами. Необязательный параметр tag предотвращает устранение общих подвыражений, когда один и тот же вызов функции используется в запросе несколько раз. Это гарантирует, что каждый вызов даст свой обфусцированный результат. Возможности:
  • Заменяет имена таблиц, имена столбцов и псевдонимы случайными словами
  • Заменяет числовые и строковые литералы случайными значениями
  • Сохраняет общую структуру запроса и синтаксис SQL
  • Выдаёт разные результаты для разных строк
Синтаксис
obfuscateQuery(query[, tag])
Аргументы
  • query — SQL-запрос, который нужно обфусцировать. String
  • tag — Необязательно. Значение, которое позволяет предотвратить устранение общих подвыражений, если один и тот же вызов функции используется несколько раз.
Возвращаемое значение Обфусцированный запрос, в котором идентификаторы и литералы заменены, а исходная структура запроса сохранена. String Примеры Базовое использование
Query
SELECT obfuscateQuery('SELECT name, age FROM users WHERE age > 30')
Response
SELECT fruit, number FROM table WHERE number > 12
С тегом для предотвращения устранения общих подвыражений
Query
SELECT obfuscateQuery('SELECT * FROM t', 1), obfuscateQuery('SELECT * FROM t', 2)
Response
SELECT a FROM b, SELECT c FROM d
Для разных строк результаты различаются
Query
SELECT obfuscateQuery('SELECT 1') AS a, obfuscateQuery('SELECT 1') AS b
Response
A B

obfuscateQueryWithSeed

Добавленный в: v26.4.0 Обфусцирует SQL-запрос с использованием указанного seed, обеспечивая детерминированные результаты. В отличие от obfuscateQuery(), эта функция выдает детерминированные результаты при использовании одного и того же seed. Это полезно, когда требуется согласованная обфускация в нескольких запусках или когда нужно воспроизвести один и тот же обфусцированный запрос для тестирования или отладки. Возможности:
  • Детерминированная обфускация на основе указанного seed
  • Один и тот же seed всегда дает один и тот же обфусцированный результат
  • Разные seed дают разные результаты
  • Сохраняет структуру запроса, как и obfuscateQuery()
Сценарии использования:
  • Воспроизводимые тестовые сценарии
  • Согласованная анонимизация в нескольких запусках
  • Отладка с согласованно обфусцированными запросами
Синтаксис
obfuscateQueryWithSeed(query, seed)
Аргументы
  • query — SQL-запрос для обфускации. String
  • seed — seed для обфускации. Один и тот же seed даёт детерминированные результаты. Integer или String
Возвращаемое значение Обфусцированный запрос, детерминированно сгенерированный на основе указанного seed. String Примеры Детерминированная обфускация с целочисленным seed
Query
SELECT obfuscateQueryWithSeed('SELECT name FROM users', 42)
Response
SELECT fruit FROM table
Детерминированная обфускация со строковым значением seed
Query
SELECT obfuscateQueryWithSeed('SELECT id, value FROM data', 'myseed')
Response
SELECT a, b FROM c
Одинаковый seed даёт одинаковый результат
Query
SELECT obfuscateQueryWithSeed('SELECT 1', 100) = obfuscateQueryWithSeed('SELECT 1', 100)
Response
true

parseReadableSize

Добавленный в: v24.6.0 Эта функция принимает строку, содержащую размер в байтах и единицу измерения B, KiB, KB, MiB, MB и т. д. (то есть ISO/IEC 80000-13 или десятичную байтовую единицу), и возвращает соответствующее количество байт. Если функция не может разобрать входное значение, она генерирует исключение. Обратными операциями этой функции являются formatReadableSize и formatReadableDecimalSize. Синтаксис
parseReadableSize(x)
Аргументы
  • x — Размер в удобочитаемом формате с единицами ISO/IEC 80000-13 или десятичными байтовыми единицами. String
Возвращаемое значение Возвращает количество байтов, округлённое вверх до ближайшего целого числа. UInt64 Примеры Пример использования
Query
SELECT arrayJoin(['1 B', '1 KiB', '3 MB', '5.314 KiB']) AS readable_sizes, parseReadableSize(readable_sizes) AS sizes;
Response
┌─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) Примеры Пример использования
Query
SELECT arrayJoin(['1 B', '1 KiB', '3 MB', '5.314 KiB', 'invalid']) AS readable_sizes, parseReadableSizeOrNull(readable_sizes) AS sizes;
Response
┌─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 Примеры Пример использования
Query
SELECT arrayJoin(['1 B', '1 KiB', '3 MB', '5.314 KiB', 'invalid']) AS readable_sizes, parseReadableSizeOrZero(readable_sizes) AS sizes;
Response
┌─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, y
  • months, month, mo
  • weeks, week, w
  • days, day, d
  • hours, hour, hr, h
  • minutes, minute, min, m
  • seconds, second, sec, s
  • milliseconds, millisecond, millisec, ms
  • microseconds, microsecond, microsec, μs, µs, us
  • nanoseconds, nanosecond, nanosec, ns
Можно комбинировать несколько единиц времени, используя разделители (пробел, ;, -, +, ,, :). Длительность года и месяца приблизительна: год принимается равным 365 дням, месяц — 30,5 дня. Синтаксис
parseTimeDelta(timestr)
Аргументы
  • timestr — Последовательность чисел, за которой следует нечто, напоминающее единицу времени. String
Возвращаемое значение Число секунд. Float64 Примеры Пример использования
Query
SELECT parseTimeDelta('11s+22min')
Response
┌─parseTimeDelta('11s+22min')─┐
│                        1331 │
└─────────────────────────────┘
Сложные единицы времени
Query
SELECT parseTimeDelta('1yr2mo')
Response
┌─parseTimeDelta('1yr2mo')─┐
│                 36806400 │
└──────────────────────────┘

partitionId

Добавленный в: v21.4.0 Вычисляет идентификатор партиции.
Эта функция работает медленно, поэтому её не следует вызывать для большого числа строк.
Синтаксис
partitionId(column1[, column2, ...])
Псевдонимы: partitionID Аргументы
  • column1, column2, ... — Столбец, для которого возвращается идентификатор партиции.
Возвращаемое значение Возвращает идентификатор партиции, к которой принадлежит строка. String Примеры Пример использования
Query
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;
Response
┌─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             │
└───┴───┴────────────────┴───────────────┘

queryID

Добавленный в: v21.9.0 Возвращает идентификатор текущего запроса. Другие параметры запроса можно извлечь из поля query_id таблицы system.query_log. В отличие от функции initialQueryID, queryID может возвращать разные результаты на разных сегментах. Синтаксис
queryID()
Псевдонимы: query_id Аргументы
  • Нет.
Возвращаемое значение Возвращает идентификатор текущего запроса. String Примеры Пример использования
Query
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());
Response
┌─count(DISTINCT t)─┐
│                 3 │
└───────────────────┘

revision

Добавленный в: v22.7.0 Возвращает текущую ревизию сервера ClickHouse. Синтаксис
revision()
Аргументы
  • Нет.
Возвращаемое значение Возвращает текущую ревизию сервера ClickHouse. UInt32 Примеры Пример использования
Query
SELECT revision()
Response
┌─revision()─┐
│      54485 │
└────────────┘

rowNumberInAllBlocks

Добавленный в: v1.1.0 Возвращает уникальный номер для каждой обрабатываемой строки. Синтаксис
rowNumberInAllBlocks()
Аргументы
  • None.
Возвращаемое значение Возвращает порядковый номер строки в блоке данных, начиная с 0. UInt64 Примеры Пример использования
Query
SELECT rowNumberInAllBlocks()
FROM
(
    SELECT *
    FROM system.numbers_mt
    LIMIT 10
)
SETTINGS max_block_size = 2
Response
┌─rowNumberInAllBlocks()─┐
│                      0 │
│                      1 │
└────────────────────────┘
┌─rowNumberInAllBlocks()─┐
│                      4 │
│                      5 │
└────────────────────────┘
┌─rowNumberInAllBlocks()─┐
│                      2 │
│                      3 │
└────────────────────────┘
┌─rowNumberInAllBlocks()─┐
│                      6 │
│                      7 │
└────────────────────────┘
┌─rowNumberInAllBlocks()─┐
│                      8 │
│                      9 │
└────────────────────────┘

rowNumberInBlock

Добавленный в: v1.1.0 Для каждого блока, обрабатываемого функцией rowNumberInBlock, возвращает номер текущей строки. Возвращаемый номер начинается с 0 в каждом блоке. Синтаксис
rowNumberInBlock()
Аргументы
  • Нет.
Возвращаемое значение Возвращает порядковый номер строки в блоке данных, начиная с 0. UInt64 Примеры Пример использования
Query
SELECT rowNumberInBlock()
FROM
(
    SELECT *
    FROM system.numbers_mt
    LIMIT 10
) SETTINGS max_block_size = 2
Response
┌─rowNumberInBlock()─┐
│                  0 │
│                  1 │
└────────────────────┘
┌─rowNumberInBlock()─┐
│                  0 │
│                  1 │
└────────────────────┘
┌─rowNumberInBlock()─┐
│                  0 │
│                  1 │
└────────────────────┘
┌─rowNumberInBlock()─┐
│                  0 │
│                  1 │
└────────────────────┘
┌─rowNumberInBlock()─┐
│                  0 │
│                  1 │
└────────────────────┘

runningAccumulate

Добавленный в: v1.1.0 Накапливает состояния агрегатной функции для каждой строки блока данных.
УстарелоСостояние сбрасывается с каждым новым блоком данных. Из-за такого поведения, приводящего к ошибкам, функция объявлена устаревшей, и вместо нее рекомендуется использовать оконные функции. Чтобы разрешить использование этой функции, можно использовать настройку allow_deprecated_error_prone_window_functions.
Синтаксис
runningAccumulate(agg_state[, grouping])
Аргументы
  • agg_state — Состояние агрегатной функции. AggregateFunction
  • grouping — Необязательный. Ключ группировки. Состояние функции сбрасывается при изменении значения grouping. Это может быть любой из поддерживаемых типов данных, для которых определён оператор равенства. Any
Возвращаемое значение Возвращает накопленный результат для каждой строки. Any Примеры Пример использования с initializeAggregation
Query
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);
Response
┌─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 или DateTime64
  • end — столбец со временем окончания событий. Date или DateTime или DateTime64
Возвращаемое значение Возвращает количество одновременно происходящих событий в момент начала каждого события. UInt32 Примеры Пример использования
Query
SELECT start, runningConcurrency(start, end) FROM example_table;
Response
┌──────start─┬─runningConcurrency(start, end)─┐
│ 2025-03-03 │                              1 │
│ 2025-03-06 │                              2 │
│ 2025-03-07 │                              3 │
│ 2025-03-11 │                              2 │
└────────────┴────────────────────────────────┘

runningDifference

Добавленный в: v1.1.0 Вычисляет разницу между значениями двух последовательных строк в блоке данных. Возвращает 0 для первой строки, а для каждой следующей — разницу относительно предыдущей строки.
УстарелоВозвращает разницу только в пределах текущего обрабатываемого блока данных. Из-за такого поведения, подверженного ошибкам, функция помечена как устаревшая. Вместо неё рекомендуется использовать оконные функции.Чтобы разрешить использование этой функции, можно включить настройку allow_deprecated_error_prone_window_functions.
Результат функции зависит от того, какие блоки данных были затронуты, и от порядка данных в блоке. Порядок строк при вычислении runningDifference() может отличаться от порядка строк, возвращаемых пользователю. Чтобы этого избежать, можно создать подзапрос с ORDER BY и вызвать функцию вне этого подзапроса. Обратите внимание, что размер блока влияет на результат. Внутреннее состояние runningDifference сбрасывается для каждого нового блока. Синтаксис
runningDifference(x)
Аргументы
  • x — столбец, для которого вычисляется разность с предыдущим значением. Any
Возвращаемое значение Возвращает разность между последовательными значениями; для первой строки возвращается 0. Примеры Пример использования
Query
SELECT
    EventID,
    EventTime,
    runningDifference(EventTime) AS delta
FROM
(
    SELECT
        EventID,
        EventTime
    FROM events
    WHERE EventDate = '2025-11-24'
    ORDER BY EventTime ASC
    LIMIT 5
);
Response
┌─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 │
└─────────┴─────────────────────┴───────┘
Пример влияния размера блока
Query
SELECT
    number,
    runningDifference(number + 1) AS diff
FROM numbers(100000)
WHERE diff != 1;
Response
┌─number─┬─diff─┐
│      0 │    0 │
└────────┴──────┘
┌─number─┬─diff─┐
│  65536 │    0 │
└────────┴──────┘

runningDifferenceStartingWithFirstValue

Добавленный в: v1.1.0 Вычисляет разность между значениями соседних строк в блоке данных, но, в отличие от runningDifference, возвращает фактическое значение первой строки вместо 0.
УстарелоВозвращает разность только в пределах текущего обрабатываемого блока данных. Из-за такого поведения, подверженного ошибкам, функция помечена как устаревшая. Вместо неё рекомендуется использовать оконные функции.Чтобы разрешить использование этой функции, можно использовать настройку allow_deprecated_error_prone_window_functions.
Синтаксис
runningDifferenceStartingWithFirstValue(x)
Аргументы
  • x — столбец, для которого вычисляется разность с предыдущей строкой. Any
Возвращаемое значение Возвращает разность между последовательными значениями; для первой строки возвращается значение из первой строки. Any Примеры Пример использования
Query
SELECT
    number,
    runningDifferenceStartingWithFirstValue(number) AS diff
FROM numbers(5);
Response
┌─number─┬─diff─┐
│      0 │    0 │
│      1 │    1 │
│      2 │    1 │
│      3 │    1 │
│      4 │    1 │
└────────┴──────┘

serverUUID

Добавленный в: v20.1.0 Возвращает случайный уникальный UUID (v4), сгенерированный при первом запуске сервера. UUID сохраняется, то есть при втором, третьем и последующих запусках сервера возвращается тот же UUID. Синтаксис
serverUUID()
Аргументы
  • Отсутствуют.
Возвращаемое значение Возвращает случайный UUID сервера. UUID Примеры Пример использования
Query
SELECT serverUUID();
Response
┌─serverUUID()─────────────────────────────┐
│ 7ccc9260-000d-4d5c-a843-5459abaabb5f     │
└──────────────────────────────────────────┘

shardCount

Добавленный в: v21.9.0 Возвращает общее количество сегментов в распределённом запросе. Если запрос не является распределённым, возвращается константное значение 0. Синтаксис
shardCount()
Аргументы
  • None.
Возвращаемое значение Возвращает общее число сегментов или 0. UInt32 Примеры Пример использования
Query
-- См. пример shardNum() выше, который также демонстрирует shardCount()
CREATE TABLE shard_count_example (dummy UInt8)
ENGINE=Distributed(test_cluster_two_shards_localhost, system, one, dummy);
SELECT shardCount() FROM shard_count_example;
Response
┌─shardCount()─┐
│            2 │
│            2 │
└──────────────┘

shardNum

Добавленный в: v21.9.0 Возвращает индекс сегмента, который обрабатывает часть данных в распределённом запросе. Нумерация индексов начинается с 1. Если запрос не является распределённым, возвращается постоянное значение 0. Синтаксис
shardNum()
Аргументы
  • Нет.
Возвращаемое значение Возвращает индекс сегмента или константу 0. UInt32 Примеры Пример использования
Query
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;
Response
┌─dummy─┬─shardNum()─┬─shardCount()─┐
│     0 │          1 │            2 │
│     0 │          2 │            2 │
└───────┴────────────┴──────────────┘

showCertificate

Добавленный в: v22.6.0 Показывает информацию о текущем SSL-сертификате сервера, если он настроен. Подробнее о том, как настроить ClickHouse для использования сертификатов OpenSSL для проверки подключений, см. в разделе Настройка TLS. Синтаксис
showCertificate()
Аргументы
  • Отсутствуют.
Возвращаемое значение Возвращает Map с парами ключ-значение, относящимися к настроенному SSL-сертификату. Map(String, String) Примеры Пример использования
Query
SELECT showCertificate() FORMAT LineAsString;
Response
{'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() не следует использовать в продакшн-средах, так как она может отрицательно влиять на производительность запросов и отзывчивость системы. Однако она может быть полезна в следующих сценариях:
  1. Тестирование: При тестировании или бенчмаркинге ClickHouse может потребоваться имитировать задержки или добавлять паузы, чтобы наблюдать, как система ведет себя в определенных условиях.
  2. Отладка: Если вам нужно проверить состояние системы или выполнение запроса в определенный момент времени, можно использовать sleep() для добавления паузы, чтобы просмотреть или собрать нужную информацию.
  3. Моделирование: В некоторых случаях может потребоваться смоделировать реальные сценарии, в которых возникают задержки или паузы, например сетевую задержку или зависимости от внешних систем.
Важно использовать функцию sleep() осмотрительно и только при необходимости, так как она может повлиять на общую производительность и отзывчивость системы ClickHouse.
Из соображений безопасности функцию можно выполнять только в профиле пользователя default (с включенным allow_sleep). Синтаксис
sleep(seconds)
Аргументы
  • seconds — Количество секунд, на которое приостанавливается выполнение запроса; не более 3 секунд. Для указания долей секунды можно использовать число с плавающей точкой. const UInt* или const Float*
Возвращаемое значение Возвращает 0. UInt8 Примеры Пример использования
Query
-- Этот запрос приостановится на 2 секунды перед завершением.
-- В течение этого времени результаты возвращаться не будут, и запрос будет выглядеть зависшим или не отвечающим.
SELECT sleep(2);
Response
┌─sleep(2)─┐
│        0 │
└──────────┘
1 row in set. Elapsed: 2.012 sec.

sleepEachRow

Добавленный в: v1.1.0 Приостанавливает выполнение запроса на указанное число секунд для каждой строки в результирующем наборе. Функция sleepEachRow() в основном используется для тестирования и отладки, аналогично функции sleep(). Она позволяет имитировать задержки или делать паузы при обработке каждой строки, что может быть полезно в таких сценариях, как:
  1. Тестирование: При тестировании или бенчмаркинге производительности ClickHouse в определенных условиях можно использовать sleepEachRow(), чтобы имитировать задержки или делать паузы при обработке каждой строки.
  2. Отладка: Если вам нужно проверить состояние системы или выполнение запроса для каждой обрабатываемой строки, можно использовать sleepEachRow(), чтобы делать паузы и получать возможность просматривать или собирать нужную информацию.
  3. Моделирование: В некоторых случаях может потребоваться смоделировать реальные сценарии, в которых при обработке каждой строки возникают задержки или паузы, например при взаимодействии с внешними системами или из-за сетевых задержек.
Как и в случае с функцией sleep(), sleepEachRow() следует использовать осмотрительно и только при необходимости, поскольку она может значительно снизить общую производительность и отзывчивость системы ClickHouse, особенно при работе с большими результирующими наборами.
Синтаксис
sleepEachRow(seconds)
Аргументы
  • seconds — Количество секунд, на которое приостанавливается выполнение запроса для каждой строки результирующего набора, не более 3 секунд. Для указания долей секунды можно использовать значение с плавающей точкой. const UInt* или const Float*
Возвращаемое значение Возвращает 0 для каждой строки. UInt8 Примеры Пример использования
Query
-- Вывод будет задержан: между каждой строкой будет пауза 0,5 секунды.
SELECT number, sleepEachRow(0.5) FROM system.numbers LIMIT 5;
Response
┌─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
Query
SELECT structureToCapnProtoSchema('s String, x UInt32', 'MessageName') format TSVRaw
Response
struct 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’). String
  • message_name — имя типа сообщения Protobuf в сгенерированной схеме. String
Возвращаемое значение Возвращает определение схемы Protobuf в синтаксисе proto3, соответствующее входной структуре таблицы ClickHouse. String Примеры Преобразование структуры ClickHouse в схему Protobuf
Query
SELECT structureToProtobufSchema('s String, x UInt32', 'MessageName') FORMAT TSVRaw;
Response
syntax = "proto3";

message MessageName
{
    bytes s = 1;
    uint32 x = 2;
}

tcpPort

Добавленный в: v20.12.0 Возвращает номер TCP-порта нативного интерфейса, на котором сервер прослушивает подключения. Если функция выполняется в контексте distributed таблицы, она создает обычный столбец со значениями, относящимися к каждому сегменту. В противном случае возвращает константное значение. Синтаксис
tcpPort()
Аргументы
  • Отсутствуют.
Возвращаемое значение Возвращает номер TCP-порта. UInt16 Примеры Пример использования
Query
SELECT tcpPort()
Response
┌─tcpPort()─┐
│      9000 │
└───────────┘

throwIf

Добавленный в: v1.1.0 Генерирует исключение, если аргумент x равен true. Чтобы использовать аргумент error_code, должен быть включен параметр конфигурации allow_custom_error_code_in_throw. Синтаксис
throwIf(x[, message[, error_code]])
Аргументы
  • x — Условие для проверки. Any
  • message — Необязательно. Произвольное сообщение об ошибке. const String
  • error_code — Необязательно. Произвольный код ошибки. const Int8/16/32
Возвращаемое значение Возвращает 0, если условие ложно, и генерирует исключение, если условие истинно. UInt8 Примеры Пример использования
Query
SELECT throwIf(number = 3, 'Too many') FROM numbers(10);
Response
↙ Progress: 0.00 rows, 0.00 B (0.00 rows/s., 0.00 B/s.) Received exception from server (version 19.14.1):
Code: 395. DB::Exception: Received from localhost:9000. DB::Exception: Too many.

toColumnTypeName

Добавленный в: v1.1.0 Возвращает внутреннее имя типа данных указанного значения. В отличие от функции toTypeName, возвращаемый тип данных может включать внутренние столбцы-обёртки, такие как Const и LowCardinality. Синтаксис
toColumnTypeName(value)
Аргументы
  • value — Значение, для которого требуется вернуть внутренний тип данных. Any
Возвращаемое значение Возвращает внутренний тип данных, используемый для представления значения. String Примеры Пример использования
Query
SELECT toColumnTypeName(CAST('2025-01-01 01:02:03' AS DateTime));
Response
┌─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 Примеры Пример использования
Query
SELECT toTypeName(123)
Response
┌─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(...))) Примеры простой
Query
SELECT tokenizeQuery('SELECT 1')
Response
[(0,6,'BareWord'),(6,7,'Whitespace'),(7,8,'Number')]

transactionID

Добавленный в: v22.6.0 Возвращает идентификатор транзакции.
Эта функция входит в набор экспериментальных возможностей. Чтобы включить экспериментальную поддержку транзакций, добавьте этот параметр в конфигурацию:
<clickhouse>
    <allow_experimental_transactions>1</allow_experimental_transactions>
</clickhouse>
Дополнительные сведения см. на странице Поддержка транзакций (ACID).
Синтаксис
transactionID()
Аргументы
  • Отсутствуют.
Возвращаемое значение Возвращает кортеж, состоящий из start_csn, local_tid и host_id.
  • start_csn: Глобальный последовательный номер — самая поздняя временная метка commit, видимая на момент начала этой транзакции.
  • local_tid: Локальный последовательный номер, уникальный для каждой транзакции, начатой этим хостом в рамках конкретного start_csn.
  • host_id: UUID хоста, который начал эту транзакцию. Tuple(UInt64, UInt64, UUID)
Примеры Пример использования
Query
BEGIN TRANSACTION;
SELECT transactionID();
ROLLBACK;
Response
┌─transactionID()────────────────────────────────┐
│ (32,34,'0ee8b069-f2bb-4748-9eae-069c85b5252b') │
└────────────────────────────────────────────────┘

transactionLatestSnapshot

Добавленный в: v22.6.0 Возвращает самый новый снимок (Commit Sequence Number) транзакции, доступный для чтения.
Эта функция входит в набор экспериментальных возможностей. Чтобы включить экспериментальную поддержку транзакций, добавьте этот параметр в конфигурацию:
<clickhouse>
    <allow_experimental_transactions>1</allow_experimental_transactions>
</clickhouse>
Дополнительные сведения см. на странице Поддержка транзакций (ACID).
Синтаксис
transactionLatestSnapshot()
Аргументы
  • Отсутствуют.
Возвращаемое значение Возвращает последний снимок (CSN) транзакции. UInt64 Примеры Пример использования
Query
BEGIN TRANSACTION;
SELECT transactionLatestSnapshot();
ROLLBACK;
Response
┌─transactionLatestSnapshot()─┐
│                          32 │
└─────────────────────────────┘

transactionOldestSnapshot

Добавленный в: v22.6.0 Возвращает самый старый снимок (Commit Sequence Number), который виден некоторой выполняющейся транзакции.
Эта функция входит в набор экспериментальных возможностей. Включите экспериментальную поддержку транзакций, добавив эту настройку в конфигурацию:
<clickhouse>
    <allow_experimental_transactions>1</allow_experimental_transactions>
</clickhouse>
Дополнительные сведения см. на странице Поддержка транзакций (ACID).
Синтаксис
transactionOldestSnapshot()
Аргументы
  • Отсутствуют.
Возвращаемое значение Возвращает наиболее ранний снимок (CSN) транзакции. UInt64 Примеры Пример использования
Query
BEGIN TRANSACTION;
SELECT transactionOldestSnapshot();
ROLLBACK;
Response
┌─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])
Аргументы Возвращаемое значение Возвращает соответствующее значение из array_to, если x совпадает с элементом в array_from; в противном случае возвращает default (если указан) или x (если default не указан). Any Примеры transform(T, Array(T), Array(U), U) -> U
Query
SELECT
transform(SearchEngineID, [2, 3], ['Yandex', 'Google'], 'Other') AS title,
count() AS c
FROM test.hits
WHERE SearchEngineID != 0
GROUP BY title
ORDER BY c DESC
Response
┌─title─────┬──────c─┐
│ Yandex    │ 498635 │
│ Google    │ 229872 │
│ Other     │ 104472 │
└───────────┴────────┘
transform(T, Array(T), Array(T)) -> T
Query
SELECT
transform(domain(Referer), ['yandex.ru', 'google.ru', 'vkontakte.ru'], ['www.yandex', 'example.com', 'vk.com']) AS s, count() AS c
FROM test.hits
GROUP BY domain(Referer)
ORDER BY count() DESC
LIMIT 10
Response
┌─s──────────────┬───────c─┐
│                │ 2906259 │
│ www.yandex     │  867767 │
│ ███████.ru     │  313599 │
│ mail.yandex.ru │  107147 │
│ ██████.ru      │  100355 │
│ █████████.ru   │   65040 │
│ news.yandex.ru │   64515 │
│ ██████.net     │   59141 │
│ example.com    │   57316 │
└────────────────┴─────────┘

uniqThetaIntersect

Добавленный в: v22.9.0 Два объекта типа uniqThetaSketch используются для вычисления пересечения (операция над множествами ∩); результатом является новый объект типа uniqThetaSketch. Синтаксис
uniqThetaIntersect(uniqThetaSketch,uniqThetaSketch)
Аргументы Возвращаемое значение Новый uniqThetaSketch, содержащий результат пересечения. UInt64 Примеры Пример использования
Query
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);
Response
┌─a_intersect_b─┬─a_cardinality─┬─b_cardinality─┐
│             1 │             2 │             3 │
└───────────────┴───────────────┴───────────────┘

uniqThetaNot

Добавленный в: v22.9.0 Выполняет вычисление a_not_b над двумя объектами типа uniqThetaSketch (операция над множествами ×); результатом является новый объект типа uniqThetaSketch. Синтаксис
uniqThetaNot(uniqThetaSketch,uniqThetaSketch)
Аргументы Возвращаемое значение Возвращает новый uniqThetaSketch, содержащий результат a_not_b. UInt64 Примеры Пример использования
Query
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);
Response
┌─a_not_b─┬─a_cardinality─┬─b_cardinality─┐
│       2 │             3 │             2 │
└─────────┴───────────────┴───────────────┘

uniqThetaUnion

Добавленный в: v22.9.0 Два объекта типа uniqThetaSketch для вычисления объединения (операция над множествами ∪); результатом является новый объект типа uniqThetaSketch. Синтаксис
uniqThetaUnion(uniqThetaSketch,uniqThetaSketch)
Аргументы Возвращаемое значение Возвращает новый uniqThetaSketch, содержащий результат объединения. UInt64 Примеры Пример использования
Query
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);
Response
┌─a_union_b─┬─a_cardinality─┬─b_cardinality─┐
│         4 │             2 │             3 │
└───────────┴───────────────┴───────────────┘

uptime

Добавленный в: v1.1.0 Возвращает время непрерывной работы сервера в секундах. Если функция выполняется в контексте distributed таблицы, она создаёт обычный столбец со значениями для каждого сегмента. В противном случае возвращается постоянное значение. Синтаксис
uptime()
Аргументы
  • Отсутствуют.
Возвращаемое значение Возвращает время непрерывной работы сервера в секундах. UInt32 Примеры Пример использования
Query
SELECT uptime() AS Uptime
Response
┌─Uptime─┐
│  55867 │
└────────┘

variantElement

Добавленный в: v25.2.0 Извлекает из столбца Variant столбец указанного типа. Синтаксис
variantElement(variant, type_name[, default_value])
Аргументы
  • variant — столбец типа Variant. Variant
  • type_name — имя типа варианта, который нужно извлечь. String
  • default_value — значение по умолчанию, которое будет использоваться, если variant не содержит варианта указанного типа. Может быть любого типа. Необязательный параметр. Any
Возвращаемое значение Возвращает столбец со значениями указанного типа варианта, извлечёнными из столбца Variant. Any Примеры Пример использования
Query
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;
Response
┌─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 Примеры Пример использования
Query
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;
Response
┌─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 Примеры Пример использования
Query
SELECT version()
Response
┌─version()─┐
│ 24.2.1.1  │
└───────────┘

visibleWidth

Добавленный в: v1.1.0 Вычисляет приблизительную ширину значений при их выводе в консоль в текстовом формате (с разделением табуляцией). Эта функция используется системой для реализации форматов Pretty. NULL представляется строкой, соответствующей NULL в форматах Pretty. Синтаксис
visibleWidth(x)
Аргументы
  • x — Значение любого типа данных. Any
Возвращаемое значение Возвращает приблизительную ширину значения при выводе в текстовом формате. UInt64 Примеры Вычисление отображаемой ширины NULL
Query
SELECT visibleWidth(NULL)
Response
┌─visibleWidth(NULL)─┐
│                  4 │
└────────────────────┘

zookeeperSessionUptime

Добавленный в: v21.11.0 Возвращает время непрерывной работы текущего сеанса ZooKeeper в секундах. Синтаксис
zookeeperSessionUptime()
Аргументы
  • Отсутствуют.
Возвращаемое значение Возвращает время непрерывной работы текущего сеанса ZooKeeper в секундах. UInt32 Примеры Пример использования
Query
SELECT zookeeperSessionUptime();
Response
┌─zookeeperSessionUptime()─┐
│                      286 │
└──────────────────────────┘
Последнее изменение 10 июня 2026 г.