Перейти к основному содержимому
Перейти к основному содержимому

Другие функции

Примечание

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

FQDN

Добавлено в: v20.1

Возвращает полное доменное имя сервера ClickHouse.

Синтаксис

fqdn()

Псевдонимы: fullHostName

Аргументы

  • Нет аргументов.

Возвращаемое значение

Возвращает полное доменное имя сервера ClickHouse. String

Примеры

Пример использования

SELECT fqdn()
┌─FQDN()──────────────────────────┐
│ clickhouse.us-east-2.internal │
└─────────────────────────────────┘

MACNumToString

Добавлена в: v1.1

Интерпретирует число типа UInt64 как MAC-адрес в формате big endian. Возвращает соответствующий MAC-адрес в формате AA:BB:CC:DD:EE:FF (числа в шестнадцатеричном виде, разделённые двоеточиями) в виде строки.

Синтаксис

MACNumToString(num)

Аргументы

  • num — число типа UInt64. UInt64

Возвращаемое значение

Возвращает MAC-адрес в формате AA:BB:CC:DD:EE:FF. String

Примеры

Пример использования

SELECT MACNumToString(149809441867716) AS mac_address;
┌─mac_address───────┐
│ 88:00:11:22:33:44 │
└───────────────────┘

MACStringToNum

Появилась в версии: v1.1

Обратная функция к MACNumToString. Если MAC-адрес имеет некорректный формат, возвращает 0.

Синтаксис

MACStringToNum(s)

Аргументы

  • s — строка с MAC-адресом. String

Возвращаемое значение

Возвращает число типа UInt64. UInt64

Примеры

Пример использования

SELECT MACStringToNum('01:02:03:04:05:06') AS mac_numeric;
1108152157446

MACStringToOUI

Впервые представлена в версии v1.1

Принимает MAC-адрес в формате AA:BB:CC:DD:EE:FF (разделённые двоеточиями числа в шестнадцатеричном виде) и возвращает первые три октета в виде числа типа UInt64. Если MAC-адрес имеет некорректный формат, функция возвращает 0.

Синтаксис

MACStringToOUI(s)

Аргументы

  • s — строка MAC-адреса. String

Возвращаемое значение

Первые три октета в виде числа UInt64. UInt64

Примеры

Пример использования

SELECT MACStringToOUI('00:50:56:12:34:56') AS oui;
20566

authenticatedUser

Введена в версии: v25.11

Если пользователь сеанса был переключён с помощью команды EXECUTE AS, эта функция возвращает имя исходного пользователя, использованного для аутентификации и создания сеанса. Псевдоним: authUser()

Синтаксис

authenticatedUser()

Псевдонимы: authUser

Аргументы

  • Нет аргументов.

Возвращаемое значение

Имя аутентифицированного пользователя. String

Примеры

Пример использования

EXECUTE as u1;
            SELECT currentUser(), authenticatedUser();
┌─currentUser()─┬─authenticatedUser()─┐
│ u1            │ default             │
└───────────────┴─────────────────────┘

bar

Добавлено в: v1.1

Строит столбчатую диаграмму. Рисует полосу шириной, пропорциональной (x - min), и равной width символам при x = max. Полоса рисуется с точностью до одной восьмой части символа.

Синтаксис

bar(x, min, max[, width])

Аргументы

Возвращаемое значение

Возвращает строку с полосой в формате unicode-art. String

Примеры

Пример использования

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
┌──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

Возвращает монотонно возрастающий порядковый номер блока, содержащего строку. Возвращаемый номер блока обновляется по возможности (best-effort), поэтому может быть не полностью точным.

Синтаксис

blockNumber()

Аргументы

  • Отсутствуют.

Возвращаемое значение

Порядковый номер блока данных, содержащего строку. UInt64

Примеры

Базовое использование

SELECT blockNumber()
FROM
(
    SELECT *
    FROM system.numbers
    LIMIT 10
) SETTINGS max_block_size = 2
┌─blockNumber()─┐
│             7 │
│             7 │
└───────────────┘
┌─blockNumber()─┐
│             8 │
│             8 │
└───────────────┘
┌─blockNumber()─┐
│             9 │
│             9 │
└───────────────┘
┌─blockNumber()─┐
│            10 │
│            10 │
└───────────────┘
┌─blockNumber()─┐
│            11 │
│            11 │
└───────────────┘

blockSerializedSize

Введена в: v20.3

Возвращает несжатый размер в байтах блока значений на диске.

Синтаксис

blockSerializedSize(x1[, x2[, ...]])

Аргументы

  • x1[, x2, ...] — Произвольное количество значений, для которых нужно определить несжатый размер блока. Any

Возвращаемое значение

Возвращает количество байт, которое будет записано на диск для блока значений без сжатия. UInt64

Примеры

Пример использования

SELECT blockSerializedSize(maxState(1)) AS x;
┌─x─┐
│ 2 │
└───┘

blockSize

Впервые появилась в версии v1.1

В ClickHouse запросы обрабатываются в блоках (фрагментах). Эта функция возвращает размер (количество строк) блока, для которого она была вызвана.

Синтаксис

blockSize()

Аргументы

  • Отсутствуют.

Возвращаемое значение

Возвращает количество строк в текущем блоке. UInt64

Примеры

Пример использования

SELECT blockSize()
FROM system.numbers LIMIT 5
┌─blockSize()─┐
│           5 │
│           5 │
│           5 │
│           5 │
│           5 │
└─────────────┘

buildId

Добавлено в: v20.5

Возвращает идентификатор сборки (build ID), который компилятор сгенерировал для исполняемого бинарного файла сервера ClickHouse. Если функция выполняется в контексте distributed таблицы, она генерирует обычный столбец со значениями для каждого сегмента. В противном случае возвращается константное значение.

Синтаксис

buildId()

Аргументы

  • Нет.

Возвращаемое значение

Возвращает идентификатор сборки. String

Примеры

Пример использования

SELECT buildId()
┌─buildId()────────────────────────────────┐
│ AB668BEF095FAA6BD26537F197AC2AF48A927FB4 │
└──────────────────────────────────────────┘

byteSize

Добавлена в: v21.1

Возвращает оценку размера своих аргументов в памяти в несжатом виде (в байтах). Для аргументов типа String функция возвращает длину строки + 8 (длина). Если функция имеет несколько аргументов, она суммирует их размеры в байтах.

Синтаксис

byteSize(arg1[, arg2, ...])

Аргументы

  • arg1[, arg2, ...] — Значения любого типа данных, для которых нужно оценить несжатый размер в байтах. Any

Возвращаемое значение

Возвращает оценку размера аргументов в байтах в памяти. UInt64

Примеры

Пример использования

SELECT byteSize('string')
┌─byteSize('string')─┐
│                 15 │
└────────────────────┘

Несколько аргументов

SELECT byteSize(NULL, 1, 0.3, '')
┌─byteSize(NULL, 1, 0.3, '')─┐
│                         19 │
└────────────────────────────┘

catboostEvaluate

Добавлено в: v22.9

Выполняет оценку внешней модели catboost. CatBoost — это open-source библиотека градиентного бустинга, разработанная компанией 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() сервер запускает процесс library bridge, если он ещё не запущен. Оба процесса обмениваются данными через HTTP-интерфейс. По умолчанию используется порт 9012. Другой порт можно задать следующим образом — это полезно, если порт 9012 уже используется другим сервисом.

<library_bridge>
    <port>9019</port>
</library_bridge>
  1. Обучите модель CatBoost с помощью libcatboost

См. раздел Training and applying models о том, как обучать модели CatBoost на обучающем наборе данных.

Синтаксис

catboostEvaluate(path_to_model, feature_1[, feature_2, ..., feature_n])

Аргументы

  • path_to_model — Путь к модели CatBoost. const String
  • feature — Один или несколько признаков/аргументов модели. Float*

Возвращаемое значение

Возвращает результат оценки модели. Float64

Примеры

catboostEvaluate

SELECT catboostEvaluate('/root/occupy.bin', Temperature, Humidity, Light, CO2, HumidityRatio) AS prediction FROM occupancy LIMIT 1
4.695691092573497

colorOKLABToSRGB

Добавлена в: v26.2

Преобразует цвет из перцептивного цветового пространства 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)

SELECT colorOKLABToSRGB((0.4466, 0.0991, 0.44)) AS rgb;
┌─rgb──────────────────────┐
│ (198.07056923258935,0,0) │
└──────────────────────────┘

Преобразовать OKLAB в sRGB (UInt8)

WITH colorOKLABToSRGB((0.7, 0.1, 0.54)) AS t
SELECT tuple(toUInt8(t.1), toUInt8(t.2), toUInt8(t.3)) AS RGB;
┌─RGB──────────┐
│ (255,0,0)    │
└──────────────┘

colorOKLCHToSRGB

Введена в: v25.7

Преобразует цвет из перцептуального цветового пространства 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

SELECT colorOKLCHToSRGB((0.6, 0.12, 40)) AS rgb;
┌─rgb───────────────────────────────────────────────────────┐
│ (186.02058688365264,100.68677189684993,71.67819977081575) │
└───────────────────────────────────────────────────────────┘

Преобразование OKLCH в sRGB (UInt8)

WITH colorOKLCHToSRGB((0.6, 0.12, 40)) AS t
SELECT tuple(toUInt8(t.1), toUInt8(t.2), toUInt8(t.3)) AS RGB;
┌─RGB──────────┐
│ (186,100,71) │
└──────────────┘

colorSRGBToOKLAB

Добавлена в версии: v26.2

Преобразует цвет, закодированный в цветовом пространстве sRGB, в перцептивно равномерное цветовое пространство OKLAB.

Если какой-либо входной канал находится вне диапазона [0...255] или значение гаммы неположительно, поведение не определено и зависит от реализации.

Примечание

OKLAB — перцептивно равномерное цветовое пространство. Его три координаты: L (светлота в диапазоне [0...1]), a (ось зелёный–красный) и b (ось синий–жёлтый). 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

SELECT colorSRGBToOKLAB((128, 64, 32), 2.2) AS lab;
┌─lab──────────────────────────────────────────────────────────┐
│ (0.4436238384931984,0.07266246769242975,0.07500108778529994) │
└──────────────────────────────────────────────────────────────┘

colorSRGBToOKLCH

Добавлено в: v25.7

Преобразует цвет, закодированный в цветовом пространстве sRGB, в перцептуально равномерное цветовое пространство OKLCH.

Если какой-либо входной канал выходит за пределы диапазона [0...255] или значение гаммы неположительно, поведение не регламентировано спецификацией и определяется реализацией.

Примечание

OKLCH — цилиндрическая версия цветового пространства OKLab. Его три координаты: L (светлота в диапазоне [0...1]), C (цветность >= 0) и H (цветовой тон в градусах из диапазона [0...360]). OKLab/OKLCH спроектировано как перцептуально равномерное, при этом остаётся вычислительно недорогим.

Преобразование состоит из трёх этапов:

  1. sRGB в Linear sRGB 2) Linear 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 / 255)^gamma к каждому каналу x. По умолчанию — 2.2. Float64

Возвращаемое значение

Возвращает кортеж (L, C, H), представляющий значения цветового пространства OKLCH. Tuple(Float64, Float64, Float64)

Примеры

Преобразование sRGB в OKLCH

SELECT colorSRGBToOKLCH((128, 64, 32), 2.2) AS lch;
┌─lch───────────────────────────────────────────────────────┐
│ (0.4436238384931984,0.1044269954567863,45.90734548193018) │
└───────────────────────────────────────────────────────────┘

connectionId

Введена в: v21.3

Возвращает идентификатор соединения клиента, который отправил текущий запрос. Эта функция наиболее полезна при отладке. Она была создана для совместимости с функцией MySQL CONNECTION_ID. Как правило, не используется в запросах в продуктивной среде.

Синтаксис

connectionId()

Аргументы

  • Отсутствуют.

Возвращаемое значение

Возвращает идентификатор соединения текущего клиента. UInt64

Примеры

Пример использования

SELECT connectionId();
┌─connectionId()─┐
│              0 │
└────────────────┘

countDigits

Введена в версии: v20.8

Возвращает количество десятичных цифр, необходимых для представления значения.

Примечание

Эта функция учитывает масштаб десятичных значений, то есть вычисляет результат над базовым целочисленным типом, равным (value * scale).

Например:

  • countDigits(42) = 2
  • countDigits(42.000) = 5
  • countDigits(0.04200) = 4
Совет

Вы можете проверить переполнение для типа Decimal64 с помощью countDigits(x) > 18, хотя это медленнее, чем isDecimalOverflow.

Синтаксис

countDigits(x)

Аргументы

  • x — целочисленное или десятичное значение. (U)Int* или Decimal

Возвращаемое значение

Возвращает количество цифр, необходимых для представления x. UInt8

Примеры

Пример использования

SELECT countDigits(toDecimal32(1, 9)), countDigits(toDecimal32(-1, 9)),
       countDigits(toDecimal64(1, 18)), countDigits(toDecimal64(-1, 18)),
       countDigits(toDecimal128(1, 38)), countDigits(toDecimal128(-1, 38));
┌─countDigits(toDecimal32(1, 9))─┬─countDigits(toDecimal32(-1, 9))─┬─countDigits(toDecimal64(1, 18))─┬─countDigits(toDecimal64(-1, 18))─┬─countDigits(toDecimal128(1, 38))─┬─countDigits(toDecimal128(-1, 38))─┐
│                             10 │                              10 │                              19 │                               19 │                               39 │                                39 │
└────────────────────────────────┴─────────────────────────────────┴─────────────────────────────────┴──────────────────────────────────┴──────────────────────────────────┴───────────────────────────────────┘

currentDatabase

Введено в версии v1.1

Возвращает имя текущей базы данных. Полезно в параметрах движка таблицы в запросах CREATE TABLE, где нужно указать базу данных.

См. также команду SET.

Синтаксис

currentDatabase()

Псевдонимы: current_database, SCHEMA, DATABASE

Аргументы

  • Нет.

Возвращаемое значение

Возвращает имя текущей базы данных типа String.

Примеры

Пример использования

SELECT currentDatabase()
┌─currentDatabase()─┐
│ default           │
└───────────────────┘

currentProfiles

Введена в версии: v21.9

Возвращает массив профилей настроек для текущего пользователя.

Синтаксис

currentProfiles()

Аргументы

  • Нет.

Возвращаемое значение

Возвращает массив профилей настроек для текущего пользователя. Array(String)

Примеры

Пример использования

SELECT currentProfiles();
┌─currentProfiles()─────────────────────────────┐
│ ['default', 'readonly_user', 'web_analytics'] │
└───────────────────────────────────────────────┘

currentQueryID

Начиная с версии: v

Возвращает текущий идентификатор запроса.

Синтаксис

currentQueryID()

Псевдонимы: current_query_id

Аргументы

  • Нет.

Возвращаемое значение

Примеры

Пример

SELECT currentQueryID();
┌─currentQueryID()─────────────────────┐
│ 1280d0e8-1a08-4524-be6e-77975bb68e7d │
└──────────────────────────────────────┘

currentRoles

Впервые появилось в версии: v21.9

Возвращает массив ролей, назначенных текущему пользователю.

Синтаксис

currentRoles()

Аргументы

  • Нет.

Возвращаемое значение

Возвращает массив ролей, назначенных текущему пользователю. Array(String)

Примеры

Пример использования

SELECT currentRoles();
┌─currentRoles()─────────────────────────────────┐
│ ['sql-console-role:jane.smith@clickhouse.com'] │
└────────────────────────────────────────────────┘

currentSchemas

Появилась в версии: v23.7

То же, что функция currentDatabase, но

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

Функция currentSchemas существует только для совместимости с PostgreSQL. Используйте вместо неё currentDatabase.

См. также команду SET.

Синтаксис

currentSchemas(bool)

Псевдонимы: current_schemas

Аргументы

  • bool — логическое значение, которое игнорируется. Bool

Возвращаемое значение

Возвращает массив из одного элемента с именем текущей базы данных. Array(String)

Примеры

Пример использования

SELECT currentSchemas(true)
┌─currentSchemas(true)─┐
│ ['default']          │
└──────────────────────┘

currentUser

Впервые появилась в версии: v20.1

Возвращает имя текущего пользователя. В случае распределённого запроса возвращается имя пользователя, который инициировал запрос.

Синтаксис

currentUser()

Псевдонимы: current_user, user

Аргументы

  • Нет.

Возвращаемое значение

Возвращает имя текущего пользователя либо логин пользователя, который инициировал запрос. String

Примеры

Пример использования

SELECT currentUser()
┌─currentUser()─┐
│ default       │
└───────────────┘

defaultProfiles

Появилось в версии: v21.9

Возвращает массив имен профилей настроек по умолчанию для текущего пользователя.

Синтаксис

defaultProfiles()

Аргументы

  • Нет.

Возвращаемое значение

Возвращает массив имен профилей настроек по умолчанию текущего пользователя. Array(String)

Примеры

Пример использования

SELECT defaultProfiles();
┌─defaultProfiles()─┐
│ ['default']       │
└───────────────────┘

defaultRoles

Введена в версии: v21.9

Возвращает массив ролей по умолчанию для текущего пользователя.

Синтаксис

defaultRoles()

Аргументы

  • Нет.

Возвращаемое значение

Возвращает массив ролей по умолчанию для текущего пользователя. Array(String)

Примеры

Пример использования

SELECT defaultRoles();
┌─defaultRoles()─────────────────────────────────┐
│ ['sql-console-role:jane.smith@clickhouse.com'] │
└────────────────────────────────────────────────┘

defaultValueOfArgumentType

Добавлено в: v1.1

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

Синтаксис

defaultValueOfArgumentType(expression)

Аргументы

  • expression — Значение произвольного типа или выражение, которое возвращает значение произвольного типа. Any

Возвращаемое значение

Возвращает 0 для чисел, пустую строку для строк или NULL для типов Nullable. UInt8 или String или NULL

Примеры

Пример использования

SELECT defaultValueOfArgumentType(CAST(1 AS Int8));
┌─defaultValueOfArgumentType(CAST(1, 'Int8'))─┐
│                                           0 │
└─────────────────────────────────────────────┘

Пример типа Nullable

SELECT defaultValueOfArgumentType(CAST(1 AS Nullable(Int8)));
┌─defaultValueOfArgumentType(CAST(1, 'Nullable(Int8)'))─┐
│                                                  ᴺᵁᴸᴸ │
└───────────────────────────────────────────────────────┘

defaultValueOfTypeName

Добавлена в версии: v1.1

Возвращает значение по умолчанию для указанного имени типа.

Синтаксис

defaultValueOfTypeName(type)

Аргументы

  • type — строка с именем типа. String

Возвращаемое значение

Возвращает значение по умолчанию для указанного типа: 0 для чисел, пустую строку для строк или NULL для Nullable UInt8 или String или NULL

Примеры

Пример использования

SELECT defaultValueOfTypeName('Int8');
┌─defaultValueOfTypeName('Int8')─┐
│                              0 │
└────────────────────────────────┘

Пример типа Nullable

SELECT defaultValueOfTypeName('Nullable(Int8)');
┌─defaultValueOfTypeName('Nullable(Int8)')─┐
│                                     ᴺᵁᴸᴸ │
└──────────────────────────────────────────┘

displayName

Появилась в версии v22.11

Возвращает значение display_name из config или полное доменное имя (FQDN) сервера, если оно не задано.

Синтаксис

displayName()

Аргументы

  • Нет.

Возвращаемое значение

Возвращает значение display_name из конфигурации или FQDN сервера, если параметр не задан. String

Примеры

Пример использования

SELECT displayName();
┌─displayName()─┐
│ production    │
└───────────────┘

dumpColumnStructure

Появилась в версии: v1.1

Выводит подробное описание внутренней структуры столбца и его типа данных.

Синтаксис

dumpColumnStructure(x)

Аргументы

  • x — Значение, для которого нужно получить описание. Any

Возвращаемое значение

Возвращает описание структуры столбца, используемой для представления этого значения. String

Примеры

Пример использования

SELECT dumpColumnStructure(CAST('2018-01-01 01:02:03', 'DateTime'));
┌─dumpColumnStructure(CAST('2018-01-01 01:02:03', 'DateTime'))─┐
│ DateTime, Const(size = 1, UInt32(size = 1))                  │
└──────────────────────────────────────────────────────────────┘

enabledProfiles

Добавлена в версии: v21.9

Возвращает массив названий профилей настроек, которые активны для текущего пользователя.

Синтаксис

enabledProfiles()

Аргументы

  • Нет.

Возвращаемое значение

Возвращает массив имён профилей настроек, включённых для текущего пользователя. Array(String)

Примеры

Пример использования

SELECT enabledProfiles();
┌─enabledProfiles()─────────────────────────────────────────────────┐
│ ['default', 'readonly_user', 'web_analytics', 'batch_processing'] │
└───────────────────────────────────────────────────────────────────┘

enabledRoles

Впервые добавлена в: v21.9

Возвращает массив ролей, которые включены для текущего пользователя.

Синтаксис

enabledRoles()

Аргументы

  • Отсутствуют.

Возвращаемое значение

Возвращает массив названий ролей, которые активны для текущего пользователя. Array(String)

Примеры

Пример использования

SELECT enabledRoles();
┌─enabledRoles()─────────────────────────────────────────────────┐
│ ['general_data', 'sql-console-role:jane.smith@clickhouse.com'] │
└────────────────────────────────────────────────────────────────┘

errorCodeToName

Появилась в версии: v20.12

Возвращает текстовое название числового кода ошибки ClickHouse. Соответствие числовых кодов ошибок их названиям приведено здесь.

Синтаксис

errorCodeToName(error_code)

Аргументы

Возвращаемое значение

Возвращает текстовое название error_code. String

Примеры

Пример использования

SELECT errorCodeToName(252);
┌─errorCodeToName(252)─┐
│ TOO_MANY_PARTS       │
└──────────────────────┘

file

Появилась в версии: v21.3

Читает содержимое файла как строку и загружает данные в указанный столбец. Содержимое файла не интерпретируется.

См. также табличную функцию file.

Синтаксис

file(path[, default])

Аргументы

  • path — Путь к файлу относительно user_files_path. Поддерживает маски *, **, ?, {abc,def} и {N..M}, где N, M — числа, а 'abc', 'def' — строки. String
  • default — Значение, возвращаемое, если файл не существует или к нему нет доступа. String или NULL

Возвращаемое значение

Возвращает содержимое файла в виде строки. String

Примеры

Вставка файлов в таблицу

INSERT INTO table SELECT file('a.txt'), file('b.txt');

filesystemAvailable

Введена в версии: v20.1

Возвращает объём свободного места в файловой системе, на которой размещено постоянное хранилище базы данных. Возвращаемое значение всегда меньше общего свободного места (filesystemUnreserved), поскольку часть пространства зарезервирована для операционной системы.

Синтаксис

filesystemAvailable([disk_name])

Аргументы

  • disk_name — Необязательный параметр. Имя диска, для которого необходимо определить объем свободного места. Если не указан, используется диск по умолчанию. String или FixedString

Возвращаемое значение

Возвращает объем оставшегося доступного места в байтах. UInt64

Примеры

Пример использования

SELECT formatReadableSize(filesystemAvailable()) AS "Available space";
┌─Available space─┐
│ 30.75 GiB       │
└─────────────────┘

filesystemCapacity

Добавлена в версии: v20.1

Возвращает емкость файловой системы в байтах. Требуется настроить path к каталогу с данными.

Синтаксис

filesystemCapacity([disk_name])

Аргументы

  • disk_name — необязательный параметр. Имя диска, для которого нужно получить ёмкость. Если не указан, используется диск по умолчанию. String или FixedString

Возвращаемое значение

Возвращает ёмкость файловой системы в байтах. UInt64

Примеры

Пример использования

SELECT formatReadableSize(filesystemCapacity()) AS "Capacity";
┌─Capacity──┐
│ 39.32 GiB │
└───────────┘

filesystemUnreserved

Представлена в: v22.12

Возвращает общий объём свободного дискового пространства в файловой системе, где размещено постоянное хранилище базы данных (ранее filesystemFree). См. также filesystemAvailable.

Синтаксис

filesystemUnreserved([disk_name])

Аргументы

  • disk_name — Необязательный параметр. Имя диска, для которого нужно определить общий объём свободного места. Если параметр не указан, используется диск по умолчанию. String или FixedString

Возвращаемое значение

Возвращает объём свободного места в байтах. UInt64

Примеры

Пример использования

SELECT formatReadableSize(filesystemUnreserved()) AS "Free space";
┌─Free space─┐
│ 32.39 GiB  │
└────────────┘

finalizeAggregation

Впервые появилась в: v1.1

Для заданного состояния агрегации эта функция возвращает результат агрегации (или финализированное состояние при использовании комбинатора -State).

Синтаксис

finalizeAggregation(state)

Аргументы

Возвращаемое значение

Возвращает итоговый результат агрегации. Any

Примеры

Пример использования

SELECT finalizeAggregation(arrayReduce('maxState', [1, 2, 3]));
┌─finalizeAggregation(arrayReduce('maxState', [1, 2, 3]))─┐
│                                                       3 │
└─────────────────────────────────────────────────────────┘

Вместе с initializeAggregation

WITH initializeAggregation('sumState', number) AS one_row_sum_state
SELECT
    number,
    finalizeAggregation(one_row_sum_state) AS one_row_sum,
    runningAccumulate(one_row_sum_state) AS cumulative_sum
FROM numbers(5);
┌─number─┬─one_row_sum─┬─cumulative_sum─┐
│      0 │           0 │              0 │
│      1 │           1 │              1 │
│      2 │           2 │              3 │
│      3 │           3 │              6 │
│      4 │           4 │             10 │
└────────┴─────────────┴────────────────┘

flipCoordinates

Добавлено в: v25.10

Меняет местами координаты 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 (Variant, содержащий любой из этих типов).

Возвращаемое значение

Геометрия с переставленными координатами. Тип возвращаемого значения совпадает с типом входного аргумента: Point или Ring или Polygon или MultiPolygon или LineString или MultiLineString или Geometry.

Примеры

basic_point

SELECT flipCoordinates((1.0, 2.0));
(2.0, 1.0)

ring

SELECT flipCoordinates([(1.0, 2.0), (3.0, 4.0)]);
[(2.0, 1.0), (4.0, 3.0)]

многоугольник

SELECT flipCoordinates([[(1.0, 2.0), (3.0, 4.0)], [(5.0, 6.0), (7.0, 8.0)]]);
[[(2.0, 1.0), (4.0, 3.0)], [(6.0, 5.0), (8.0, 7.0)]]

geometry_wkt

SELECT flipCoordinates(readWkt('POINT(10 20)'));
(20, 10)

geometry_polygon_wkt

SELECT flipCoordinates(readWkt('POLYGON((0 0, 5 0, 5 5, 0 5, 0 0))'));
[[(0, 0), (0, 5), (5, 5), (5, 0), (0, 0)]]

formatQuery

Впервые появился в: v

Возвращает отформатированную, при необходимости многострочную, версию указанного SQL‑запроса. Генерирует исключение в случае ошибки разбора. [example:multiline]

Синтаксис

formatQuery(query)

Аргументы

  • query — SQL-запрос, который нужно отформатировать. String

Возвращаемое значение

Отформатированный запрос String

Примеры

multiline

SELECT formatQuery('select a,    b FRom tab WHERE a > 3 and  b < 3');
SELECT
    a,
    b
FROM tab
WHERE (a > 3) AND (b < 3)

formatQueryOrNull

Введено в: v

Возвращает отформатированный, возможно многострочный, вариант заданного SQL-запроса. В случае ошибки разбора возвращает NULL. [example:multiline]

Синтаксис

formatQueryOrNull(query)

Аргументы

  • query — SQL-запрос, который нужно отформатировать. String

Возвращаемое значение

Отформатированный запрос String

Примеры

многострочный

SELECT formatQuery('select a,    b FRom tab WHERE a > 3 and  b < 3');
SELECT
    a,
    b
FROM tab
WHERE (a > 3) AND (b < 3)

formatQuerySingleLine

Появилась в версии: v

Аналогична formatQuery(), но возвращаемая форматированная строка не содержит переводов строки. Генерирует исключение в случае ошибки разбора. [example:multiline]

Синтаксис

formatQuerySingleLine(query)

Аргументы

  • query — SQL-запрос, который нужно отформатировать. String

Возвращаемое значение

Отформатированный запрос String

Примеры

многострочный

SELECT formatQuerySingleLine('select a,    b FRom tab WHERE a > 3 and  b < 3');
SELECT a, b FROM tab WHERE (a > 3) AND (b < 3)

formatQuerySingleLineOrNull

Появилась в версии: v

Аналогична formatQuery(), но возвращаемая отформатированная строка не содержит переводов строки. Возвращает NULL в случае ошибки парсинга. [example:multiline]

Синтаксис

formatQuerySingleLineOrNull(query)

Аргументы

  • query — SQL-запрос для форматирования. String

Возвращаемое значение

Отформатированный запрос String

Примеры

multiline

SELECT formatQuerySingleLine('select a,    b FRom tab WHERE a > 3 and  b < 3');
SELECT a, b FROM tab WHERE (a > 3) AND (b < 3)

formatReadableDecimalSize

Появилась в версии v22.11

Функция принимает размер (количество байт) и возвращает удобочитаемый округлённый размер с суффиксом (KB, MB и т. д.) в виде строки.

Обратной операцией для этой функции является parseReadableSize.

Синтаксис

formatReadableDecimalSize(x)

Аргументы

  • x — размер в байтах. UInt64

Возвращаемое значение

Возвращает человекочитаемый, округлённый размер с суффиксом в виде строки. String

Примеры

Форматирование размеров файлов

SELECT
    arrayJoin([1, 1024, 1024*1024, 192851925]) AS filesize_bytes,
    formatReadableDecimalSize(filesize_bytes) AS filesize
┌─filesize_bytes─┬─filesize───┐
│              1 │ 1.00 B     │
│           1024 │ 1.02 KB    │
│        1048576 │ 1.05 MB    │
│      192851925 │ 192.85 MB  │
└────────────────┴────────────┘

formatReadableQuantity

Введена в версии: v20.10

Эта функция, получая число, возвращает округлённое значение с суффиксом (тысяча, миллион, миллиард и т. д.) в виде строки.

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

Синтаксис

formatReadableQuantity(x)

Аргументы

  • x — Число, которое нужно отформатировать. UInt64

Возвращаемое значение

Возвращает округлённое число с суффиксом в виде строки. String

Примеры

Форматирование чисел с суффиксами

SELECT
    arrayJoin([1024, 1234 * 1000, (4567 * 1000) * 1000, 98765432101234]) AS number,
    formatReadableQuantity(number) AS number_for_humans
┌─────────number─┬─number_for_humans─┐
│           1024 │ 1.02 thousand     │
│        1234000 │ 1.23 million      │
│     4567000000 │ 4.57 billion      │
│ 98765432101234 │ 98.77 trillion    │
└────────────────┴───────────────────┘

formatReadableSize

Добавлено в: v1.1

Для заданного размера (количества байт) эта функция возвращает человекочитаемый, округлённый размер с суффиксом (KiB, MiB и т. д.) в виде строки.

Обратными операциями к этой функции являются parseReadableSize, parseReadableSizeOrZero и parseReadableSizeOrNull. Эта функция принимает на вход любое числовое значение, но внутренне преобразует их к Float64. Результаты могут быть неточными при очень больших значениях.

Синтаксис

formatReadableSize(x)

Псевдонимы: FORMAT_BYTES

Аргументы

  • x — размер в байтах. UInt64

Возвращаемое значение

Возвращает удобочитаемый округлённый размер с суффиксом в виде строки. String

Примеры

Форматирование размеров файлов

SELECT
    arrayJoin([1, 1024, 1024*1024, 192851925]) AS filesize_bytes,
    formatReadableSize(filesize_bytes) AS filesize
┌─filesize_bytes─┬─filesize───┐
│              1 │ 1.00 B     │
│           1024 │ 1.00 KiB   │
│        1048576 │ 1.00 MiB   │
│      192851925 │ 183.92 MiB │
└────────────────┴────────────┘

formatReadableTimeDelta

Добавлена в версии: v20.12

При заданном интервале времени в секундах эта функция возвращает его в виде строки, включающей годы/месяцы/дни/часы/минуты/секунды/миллисекунды/микросекунды/наносекунды.

Эта функция принимает в качестве аргумента значение любого числового типа, но внутренне приводит его к 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_unitseconds или больше, в противном случае — nanoseconds. const String

Возвращаемое значение

Возвращает дельту времени в виде строки. String

Примеры

Пример использования

SELECT
    arrayJoin([100, 12345, 432546534]) AS elapsed,
    formatReadableTimeDelta(elapsed) AS time_delta
┌────elapsed─┬─time_delta─────────────────────────────────────────────────────┐
│        100 │ 1 minute and 40 seconds                                        │
│      12345 │ 3 hours, 25 minutes and 45 seconds                             │
│  432546534 │ 13 years, 8 months, 17 days, 7 hours, 48 minutes and 54 seconds│
└────────────┴────────────────────────────────────────────────────────────────┘

С максимальной единицей измерения

SELECT
    arrayJoin([100, 12345, 432546534]) AS elapsed,
    formatReadableTimeDelta(elapsed, 'minutes') AS time_delta
┌────elapsed─┬─time_delta─────────────────────────────────────────────────────┐
│        100 │ 1 minute and 40 seconds                                         │
│      12345 │ 205 minutes and 45 seconds                                      │
│  432546534 │ 7209108 minutes and 54 seconds                                  │
└────────────┴─────────────────────────────────────────────────────────────────┘

generateRandomStructure

Добавлена в версии: v23.5

Генерирует случайную структуру таблицы в формате column1_name column1_type, column2_name column2_type, ....

Синтаксис

generateRandomStructure([number_of_columns, seed])

Аргументы

  • number_of_columns — Требуемое количество столбцов в результирующей структуре таблицы. Если задано значение 0 или Null, количество столбцов будет случайным от 1 до 128. Значение по умолчанию: Null. UInt64
  • seed — Начальное значение генератора случайных чисел (seed) для получения стабильных результатов. Если seed не указан или установлен в Null, значение генерируется случайным образом. UInt64

Возвращаемое значение

Случайно сгенерированная структура таблицы. String

Примеры

Пример использования

SELECT generateRandomStructure()
c1 Decimal32(5), c2 Date, c3 Tuple(LowCardinality(String), Int128, UInt64, UInt16, UInt8, IPv6), c4 Array(UInt128), c5 UInt32, c6 IPv4, c7 Decimal256(64), c8 Decimal128(3), c9 UInt256, c10 UInt64, c11 DateTime

с заданным количеством столбцов

SELECT generateRandomStructure(1)
c1 Map(UInt256, UInt16)

с заданным значением seed

SELECT generateRandomStructure(NULL, 33)
c1 DateTime, c2 Enum8('c2V0' = 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

Генерирует и возвращает последовательные числа, начиная с предыдущего значения счётчика. Эта функция принимает строковый аргумент — идентификатор серии, а также необязательное начальное значение. Сервер должен быть настроен с использованием Keeper. Серии хранятся в узлах Keeper по пути, который можно настроить в series_keeper_path в конфигурации сервера.

Синтаксис

generateSerialID(series_identifier[, start_value])

Аргументы

  • series_identifier — Идентификатор серии const String
  • start_value — Необязательный параметр. Начальное значение счётчика. По умолчанию — 0. Примечание: это значение используется только при создании новой серии и игнорируется, если серия уже существует UInt*

Возвращаемое значение

Возвращает последовательные числа, начиная с предыдущего значения счётчика. UInt64

Примеры

первый вызов

SELECT generateSerialID('id1')
┌─generateSerialID('id1')──┐
│                        1 │
└──────────────────────────┘

повторный вызов

SELECT generateSerialID('id1')
┌─generateSerialID('id1')──┐
│                        2 │
└──────────────────────────┘

вызов для столбца

SELECT *, generateSerialID('id1') FROM test_table
┌─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 │
└───────────┴────────┴─────┴──────────────────────────┘

с начальным значением

SELECT generateSerialID('id2', 100)
┌─generateSerialID('id2', 100)──┐
│                           100 │
└───────────────────────────────┘

со стартовым значением для второго вызова

SELECT generateSerialID('id2', 100)
┌─generateSerialID('id2', 100)──┐
│                           101 │
└───────────────────────────────┘

getClientHTTPHeader

Введена в версии: v24.5

Получает значение HTTP-заголовка. Если такого заголовка нет или текущий запрос не выполняется через HTTP-интерфейс, функция возвращает пустую строку. Некоторые HTTP-заголовки (например, Authentication и X-ClickHouse-*) ограничены в использовании.

Примечание
Необходимо включить настройку allow_get_client_http_header

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

В контексте этой функции HTTP-заголовки являются чувствительными к регистру. Если функция используется в контексте распределённого запроса, она возвращает непустой результат только на инициирующем узле.

Синтаксис

getClientHTTPHeader(name)

Аргументы

  • name — имя HTTP-заголовка. String

Возвращаемое значение

Возвращает значение заголовка. String

Примеры

Пример использования

SELECT getClientHTTPHeader('Content-Type');
┌─getClientHTTPHeader('Content-Type')─┐
│ application/x-www-form-urlencoded   │
└─────────────────────────────────────┘

getMacro

Добавлена в версии v20.1

Возвращает значение макроса из конфигурационного файла сервера. Макросы определяются в разделе <macros> конфигурационного файла и могут использоваться для различения серверов по удобным именам, даже при сложных именах хостов. Если функция выполняется в контексте distributed таблицы, она создаёт обычный столбец со значениями, соответствующими каждому сегменту.

Синтаксис

getMacro(name)

Аргументы

  • name — Имя макроса, значение которого нужно получить. const String

Возвращаемое значение

Возвращает значение указанного макроса. String

Примеры

Базовое использование

SELECT getMacro('test');
┌─getMacro('test')─┐
│ Value            │
└──────────────────┘

getMaxTableNameLengthForDatabase

Впервые представлена в версии: v

Возвращает максимальную длину имени таблицы в указанной базе данных.

Синтаксис

getMaxTableNameLengthForDatabase(database_name)

Аргументы

  • database_name — Имя указанной базы данных. String

Возвращаемое значение

Возвращает максимально допустимую длину имени таблицы как целое число.

Примеры

Обычный

SELECT getMaxTableNameLengthForDatabase('default');
┌─getMaxTableNameLengthForDatabase('default')─┐
            │                                         206 │
            └─────────────────────────────────────────────┘

getMergeTreeSetting

Впервые представлена в: v25.6

Возвращает текущее значение настройки MergeTree.

Синтаксис

getMergeTreeSetting(setting_name)

Аргументы

  • setting_name — имя настройки. String

Возвращаемое значение

Возвращает текущее значение настройки движка MergeTree.

Примеры

Пример использования

SELECT getMergeTreeSetting('index_granularity');
┌─getMergeTreeSetting('index_granularity')─┐
│                                     8192 │
└──────────────────────────────────────────┘

getOSKernelVersion

Впервые появилась в версии: v21.11

Возвращает строку, содержащую версию ядра ОС.

Синтаксис

getOSKernelVersion()

Аргументы

  • Нет.

Возвращаемое значение

Возвращает текущую версию ядра ОС. String

Примеры

Пример использования

SELECT getOSKernelVersion();
┌─getOSKernelVersion()────┐
│ Linux 4.15.0-55-generic │
└─────────────────────────┘

getServerPort

Добавлена в версии: v21.10

Возвращает номер порта сервера для заданного протокола.

Синтаксис

getServerPort(port_name)

Аргументы

  • port_name — имя порта. String

Возвращаемое значение

Возвращает номер порта сервера. UInt16

Примеры

Пример использования

SELECT getServerPort('tcp_port');
┌─getServerPort('tcp_port')─┐
│                      9000 │
└───────────────────────────┘

getServerSetting

Добавлено в версии: v25.6

Возвращает текущее значение указанного серверного параметра.

Синтаксис

getServerSetting(setting_name')

Аргументы

  • setting_name — Имя настройки сервера. String

Возвращаемое значение

Возвращает текущее значение настройки сервера. Any

Примеры

Пример использования

SELECT getServerSetting('allow_use_jemalloc_memory');
┌─getServerSetting('allow_use_jemalloc_memory')─┐
│ true                                          │
└───────────────────────────────────────────────┘

getSetting

Появилась в версии: v20.7

Возвращает текущее значение настройки.

Синтаксис

getSetting(setting_name)

Аргументы

Возвращаемое значение

Возвращает текущее значение настройки. Any

Примеры

Пример использования

SELECT getSetting('enable_analyzer');
SET enable_analyzer = false;
SELECT getSetting('enable_analyzer');
┌─getSetting('⋯_analyzer')─┐
│ true                     │
└──────────────────────────┘
┌─getSetting('⋯_analyzer')─┐
│ false                    │
└──────────────────────────┘

getSettingOrDefault

Впервые представлен в: v24.10

Возвращает текущее значение настройки или значение по умолчанию, указанное во втором аргументе, если настройка не задана в текущем профиле.

Синтаксис

getSettingOrDefault(setting_name, default_value)

Аргументы

  • setting_name — имя настройки. String
  • default_value — значение, которое возвращается, если custom_setting не задан. Значение может быть любого типа данных или Null.

Возвращаемое значение

Возвращает текущее значение указанной настройки или default_value, если настройка не задана.

Примеры

Пример использования

SELECT getSettingOrDefault('custom_undef1', 'my_value');
SELECT getSettingOrDefault('custom_undef2', 100);
SELECT getSettingOrDefault('custom_undef3', NULL);
my_value
100
NULL

getSizeOfEnumType

Добавлена в версии: v1.1

Возвращает число элементов в указанном типе Enum.

Синтаксис

getSizeOfEnumType(x)

Аргументы

  • x — значение типа Enum. Enum

Возвращаемое значение

Возвращает число полей со входными значениями типа Enum. UInt8/16

Примеры

Пример использования

SELECT getSizeOfEnumType(CAST('a' AS Enum8('a' = 1, 'b' = 2))) AS x;
┌─x─┐
│ 2 │
└───┘

getSubcolumn

Добавлена в: v

Принимает выражение или идентификатор и константную строку с именем подстолбца.

Возвращает запрошенный подстолбец, извлечённый из выражения.

Синтаксис

Аргументы

  • Нет.

Возвращаемое значение

Примеры

getSubcolumn

SELECT getSubcolumn(array_col, 'size0'), getSubcolumn(tuple_col, 'elem_name')

getTypeSerializationStreams

Введена в версии v22.6

Перечисляет пути потоков сериализации для типа данных. Эта функция предназначена для использования при разработке.

Синтаксис

getTypeSerializationStreams(col)

Аргументы

  • col — столбец или строковое представление типа данных, по которому определяется тип данных. Any

Возвращаемое значение

Возвращает массив со всеми путями подпотоков сериализации. Array(String)

Примеры

tuple

SELECT getTypeSerializationStreams(tuple('a', 1, 'b', 2))
['{TupleElement(1), Regular}','{TupleElement(2), Regular}','{TupleElement(3), Regular}','{TupleElement(4), Regular}']

map

SELECT getTypeSerializationStreams('Map(String, Int64)')
['{ArraySizes}','{ArrayElements, TupleElement(keys), Regular}','{ArrayElements, TupleElement(values), Regular}']

globalVariable

Впервые появилась в версии v20.5

Принимает строковый константный аргумент и возвращает значение глобальной переменной с этим именем. Эта функция предназначена исключительно для совместимости с MySQL и не требуется и не приносит пользы при обычной работе ClickHouse. Определено лишь несколько фиктивных глобальных переменных.

Синтаксис

globalVariable(name)

Аргументы

  • name — имя глобальной переменной. String

Возвращаемое значение

Возвращает значение переменной name. Any

Примеры

globalVariable

SELECT globalVariable('max_allowed_packet')
67108864

hasColumnInTable

Добавлена в версии v1.1

Проверяет, существует ли указанный столбец в таблице базы данных. Для элементов во вложенной структуре данных функция проверяет наличие столбца. Для самой вложенной структуры данных функция возвращает 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

Примеры

Проверка существующего столбца

SELECT hasColumnInTable('system','metrics','metric')
1

Проверка несуществующего столбца

SELECT hasColumnInTable('system','metrics','non-existing_column')
0

hasThreadFuzzer

Добавлена в версии v20.6

Возвращает, включён ли thread fuzzer. Эта функция предназначена только для тестирования и отладки.

Синтаксис

hasThreadFuzzer()

Аргументы

  • Нет.

Возвращаемое значение

Возвращает, включён ли Thread Fuzzer. UInt8

Примеры

Проверка статуса Thread Fuzzer

SELECT hasThreadFuzzer()
┌─hasThreadFuzzer()─┐
│                 0 │
└───────────────────┘

hostName

Введена в: v20.5

Возвращает имя хоста, на котором была выполнена эта функция. Если функция выполняется на удалённом сервере (распределённая обработка), возвращается имя удалённого сервера. Если функция выполняется в контексте distributed таблицы, она генерирует обычный столбец со значениями, соответствующими каждому сегменту. В противном случае она возвращает константное значение.

Синтаксис

hostName()

Синонимы: hostname

Аргументы

  • Нет.

Возвращаемое значение

Возвращает имя хоста. String

Примеры

Пример использования

SELECT hostName()
┌─hostName()─┐
│ clickhouse │
└────────────┘

icebergBucket

Впервые представлен в версии v25.5

Реализует логику для преобразования bucket в Iceberg

Синтаксис

icebergBucket(N, value)

Аргументы

Возвращаемое значение

Возвращает 32-битный хеш исходного значения. Int32

Примеры

Пример

SELECT icebergBucket(5, 1.0 :: Float32)
4

icebergTruncate

Введена в версии: v25.3

Реализует логику трансформации truncate в Iceberg: https://iceberg.apache.org/spec/#truncate-transform-details.

Синтаксис

icebergTruncate(N, value)

Аргументы

  • value — Значение для преобразования. String или (U)Int* или Decimal

Возвращаемое значение

Тот же тип, что и у аргумента.

Примеры

Пример

SELECT icebergTruncate(3, 'iceberg')
ice

identity

Введена в: v1.1

Эта функция возвращает аргумент, который вы ей передаёте, что полезно для отладки и тестирования. Она позволяет обойти использование индексов и оценить производительность полного сканирования. Анализатор запросов игнорирует всё, что находится внутри функций identity, при поиске индексов для использования в запросе, а также отключает свёртку констант.

Синтаксис

identity(x)

Аргументы

  • x — входное значение. Any

Возвращаемое значение

Возвращает входное значение без изменений. Any

Примеры

Пример использования

SELECT identity(42)
42

ignore

Появилась в версии: v1.1

Принимает произвольные аргументы и безусловно возвращает 0.

Синтаксис

ignore(x)

Аргументы

  • x — входное значение, которое не используется и передаётся только чтобы избежать синтаксической ошибки. Any

Возвращаемое значение

Всегда возвращает 0. UInt8

Примеры

Пример использования

SELECT ignore(0, 'ClickHouse', NULL)
┌─ignore(0, 'ClickHouse', NULL)─┐
│                             0 │
└───────────────────────────────┘

indexHint

Введена в: v1.1

Эта функция предназначена для отладки и интроспекции. Она игнорирует свой аргумент и всегда возвращает 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 можно использовать только для целей интроспекции и отладки, она не улучшает производительность. Если вы видите использование indexHint кем-либо, кроме контрибьюторов ClickHouse, скорее всего, это ошибка, и её следует убрать.

Синтаксис

indexHint(expression)

Аргументы

  • expression — Любое выражение для выбора диапазона индекса. Expression

Возвращаемое значение

Всегда возвращает 1. UInt8

Примеры

Пример использования с фильтрацией по дате

SELECT FlightDate AS k, count() FROM ontime WHERE indexHint(k = '2025-09-15') GROUP BY k ORDER BY k ASC;
┌──────────k─┬─count()─┐
│ 2025-09-14 │    7071 │
│ 2025-09-15 │   16428 │
│ 2025-09-16 │    1077 │
│ 2025-09-30 │    8167 │
└────────────┴─────────┘

initialQueryID

Добавлена в версии: v1.1

Возвращает идентификатор исходного текущего запроса. Другие параметры запроса можно получить из поля initial_query_id в system.query_log.

В отличие от функции queryID, initialQueryID возвращает одни и те же результаты на разных сегментах.

Синтаксис

initialQueryID()

Псевдонимы: initial_query_id

Аргументы

  • Отсутствуют.

Возвращаемое значение

Возвращает ID исходного текущего запроса. String

Примеры

Пример использования

CREATE TABLE tmp (str String) ENGINE = Log;
INSERT INTO tmp (*) VALUES ('a');
SELECT count(DISTINCT t) FROM (SELECT initialQueryID() AS t FROM remote('127.0.0.{1..3}', currentDatabase(), 'tmp') GROUP BY queryID());
┌─count(DISTINCT t)─┐
│                 1 │
└───────────────────┘

initialQueryStartTime

Появилось в версии: v25.4

Возвращает время начала исходного запроса. initialQueryStartTime возвращает одинаковое значение на разных сегментах.

Синтаксис

initialQueryStartTime()

Псевдонимы: initial_query_start_time

Аргументы

  • Нет.

Возвращаемое значение

Возвращает время начала исходного (initial) запроса в текущем контексте. DateTime

Примеры

Пример использования

CREATE TABLE tmp (str String) ENGINE = Log;
INSERT INTO tmp (*) VALUES ('a');
SELECT count(DISTINCT t) FROM (SELECT initialQueryStartTime() AS t FROM remote('127.0.0.{1..3}', currentDatabase(), 'tmp') GROUP BY queryID());
┌─count(DISTINCT t)─┐
│                 1 │
└───────────────────┘

initializeAggregation

Появилась в версии v20.6

Вычисляет результат агрегатной функции на основе одного значения. Эту функцию можно использовать для инициализации агрегатных функций с комбинатором -State. Вы можете создавать состояния агрегатных функций и вставлять их в столбцы типа AggregateFunction или использовать инициализированные агрегатные функции в качестве значений по умолчанию.

Синтаксис

initializeAggregation(aggregate_function, arg1[, arg2, ...])

Аргументы

  • aggregate_function — Имя агрегирующей функции для инициализации. String
  • arg1[, arg2, ...] — Аргументы агрегирующей функции. Any

Возвращаемое значение

Возвращает результат агрегации для каждой строки, переданной функции. Тип возвращаемого значения совпадает с типом возвращаемого значения функции, которую initializeAggregation принимает в качестве первого аргумента. Any

Примеры

Базовое использование с uniqState

SELECT uniqMerge(state) FROM (SELECT initializeAggregation('uniqState', number % 3) AS state FROM numbers(10000));
┌─uniqMerge(state)─┐
│                3 │
└──────────────────┘

Использование совместно с sumState и finalizeAggregation

SELECT finalizeAggregation(state), toTypeName(state) FROM (SELECT initializeAggregation('sumState', number % 3) AS state FROM numbers(5));
┌─finalizeAggregation(state)─┬─toTypeName(state)─────────────┐
│                          0 │ AggregateFunction(sum, UInt8) │
│                          1 │ AggregateFunction(sum, UInt8) │
│                          2 │ AggregateFunction(sum, UInt8) │
│                          0 │ AggregateFunction(sum, UInt8) │
│                          1 │ AggregateFunction(sum, UInt8) │
└────────────────────────────┴───────────────────────────────┘

isConstant

Добавлена в: v20.3

Возвращает, является ли аргумент константным выражением. Константное выражение — это выражение, результат которого известен во время анализа запроса, то есть до выполнения. Например, выражения с литералами являются константными выражениями. Эта функция в основном предназначена для разработки, отладки и демонстрации.

Синтаксис

isConstant(x)

Аргументы

  • x — выражение для проверки. Any

Возвращаемое значение

Возвращает 1, если x является константой, и 0, если x не является константой. UInt8

Примеры

Константное выражение

SELECT isConstant(x + 1)
FROM (SELECT 43 AS x)
┌─isConstant(plus(x, 1))─┐
│                      1 │
└────────────────────────┘

Константа и функция

WITH 3.14 AS pi
SELECT isConstant(cos(pi))
┌─isConstant(cos(pi))─┐
│                   1 │
└─────────────────────┘

Неконстантное выражение

SELECT isConstant(number)
FROM numbers(1)
┌─isConstant(number)─┐
│                  0 │
└────────────────────┘

Поведение функции now()

SELECT isConstant(now())
┌─isConstant(now())─┐
│                 1 │
└───────────────────┘

isDecimalOverflow

Появилась в версии: v20.8

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

Синтаксис

isDecimalOverflow(value[, precision])

Аргументы

  • value — десятичное значение для проверки. Decimal
  • precision — необязательный параметр. Точность типа Decimal. Если параметр опущен, используется исходная точность первого аргумента. UInt8

Возвращаемое значение

Возвращает 1, если десятичное значение содержит больше цифр, чем допускается его точностью, и 0, если десятичное значение соответствует указанной точности. UInt8

Примеры

Пример использования

SELECT isDecimalOverflow(toDecimal32(1000000000, 0), 9),
       isDecimalOverflow(toDecimal32(1000000000, 0)),
       isDecimalOverflow(toDecimal32(-1000000000, 0), 9),
       isDecimalOverflow(toDecimal32(-1000000000, 0));
┌─isDecimalOverflow(toDecimal32(1000000000, 0), 9)─┬─isDecimalOverflow(toDecimal32(1000000000, 0))─┬─isDecimalOverflow(toDecimal32(-1000000000, 0), 9)─┬─isDecimalOverflow(toDecimal32(-1000000000, 0))─┐
│                                                1 │                                             1 │                                                 1 │                                              1 │
└──────────────────────────────────────────────────┴───────────────────────────────────────────────┴───────────────────────────────────────────────────┴────────────────────────────────────────────────┘

joinGet

Введена в версии v18.16

Позволяет извлекать данные из таблицы таким же образом, как из словаря. Получает данные из таблиц 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 — Список ключей соединения. Any

Возвращаемое значение

Возвращает список значений, соответствующих списку ключей. Any

Примеры

Пример использования

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));
┌─joinGet(db_test.id_val, 'val', toUInt32(1))─┐
│                                          11 │
└─────────────────────────────────────────────┘

Использование с таблицей из текущей базы данных

USE db_test;
SELECT joinGet(id_val, 'val', toUInt32(2));
┌─joinGet(id_val, 'val', toUInt32(2))─┐
│                                  12 │
└─────────────────────────────────────┘

Использование массивов в качестве ключей соединения

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);
┌─joinGet(some_table, 'name', 1, 11)─┐
│ a                                  │
└────────────────────────────────────┘

joinGetOrNull

Появилось в: v20.4

Позволяет извлекать данные из таблицы таким же образом, как из словаря. Получает данные из таблиц с движком Join, используя указанный ключ соединения. В отличие от joinGet, возвращает NULL, когда ключ отсутствует.

Примечание

Поддерживает только таблицы, созданные с помощью оператора ENGINE = Join(ANY, LEFT, <join_keys>) statement.

Синтаксис

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 — Список ключей соединения. Any

Возвращаемое значение

Возвращает список значений, соответствующих списку ключей, или NULL, если ключ не найден. Any

Примеры

Пример использования

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));
┌─joinGetOrNull(db_test.id_val, 'val', toUInt32(1))─┬─joinGetOrNull(db_test.id_val, 'val', toUInt32(999))─┐
│                                                11 │                                                ᴺᵁᴸᴸ │
└───────────────────────────────────────────────────┴─────────────────────────────────────────────────────┘

lowCardinalityIndices

Добавлена в версии: v18.12

Возвращает позицию значения в словаре столбца типа LowCardinality. Отсчет позиций начинается с 1. Поскольку LowCardinality используют отдельные словари для каждой части, эта функция может возвращать разные позиции для одного и того же значения в разных частях.

Синтаксис

lowCardinalityIndices(col)

Аргументы

  • col — столбец с низкой кардинальностью. LowCardinality

Возвращаемое значение

Позиция значения в словаре текущей части. UInt64

Примеры

Примеры использования

DROP TABLE IF EXISTS test;
CREATE TABLE test (s LowCardinality(String)) ENGINE = Memory;

-- create two parts:

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

SELECT s, lowCardinalityIndices(s) FROM test;
┌─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

Возвращает значения словаря для столбца типа LowCardinality. Если размер блока меньше или больше размера словаря, результат будет усечён или дополнен значениями по умолчанию. Поскольку LowCardinality используют словари на уровне частей таблицы, эта функция может возвращать разные словарные значения в разных частях.

Синтаксис

lowCardinalityKeys(col)

Аргументы

  • col — столбец с низкой кардинальностью. LowCardinality

Возвращаемое значение

Возвращает ключи словаря. UInt64

Примеры

lowCardinalityKeys

DROP TABLE IF EXISTS test;
CREATE TABLE test (s LowCardinality(String)) ENGINE = Memory;

-- create two parts:

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

SELECT s, lowCardinalityKeys(s) FROM test;
┌─s──┬─lowCardinalityKeys(s)─┐
│ ef │                       │
│ cd │ ef                    │
│ ab │ cd                    │
│ cd │ ab                    │
│ ef │                       │
└────┴───────────────────────┘
┌─s──┬─lowCardinalityKeys(s)─┐
│ ab │                       │
│ cd │ ab                    │
│ ab │ cd                    │
│ ab │ df                    │
│ df │                       │
└────┴───────────────────────┘

materialize

Впервые введена в: v1.1

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

Синтаксис

materialize(x)

Аргументы

  • x — константа. Any

Возвращаемое значение

Возвращает столбец, заполненный значением константы. Any

Примеры

Пример использования

-- In the example below the `countMatches` function expects a constant second argument.
-- This behaviour can be debugged by using the `materialize` function to turn a constant into a full column,
-- verifying that the function throws an error for a non-constant argument.

SELECT countMatches('foobarfoo', 'foo');
SELECT countMatches('foobarfoo', materialize('foo'));
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

Вычисляет минимально необходимый размер выборки для A/B‑теста, сравнивающего средние значения непрерывной метрики в двух выборках.

Использует формулу, описанную в этой статье. Предполагает равный объём экспериментальной и контрольной групп. Возвращает требуемый размер выборки для одной группы (т.е. размер выборки, необходимый для всего эксперимента, вдвое больше возвращаемого значения). Также предполагается, что дисперсия тестируемой метрики в экспериментальной и контрольной группах одинакова.

Синтаксис

minSampleSizeContinuous(baseline, sigma, mde, power, alpha)

Псевдонимы: minSampleSizeContinous

Аргументы

  • baseline — Базовое значение метрики. (U)Int* или Float*
  • sigma — Базовое стандартное отклонение метрики. (U)Int* или Float*
  • mde — Минимальный обнаруживаемый эффект (MDE) в процентах от базового значения (например, для базового значения 112.25 значение MDE 0.03 означает ожидаемое изменение до 112.25 ± 112.25*0.03). (U)Int* или Float*
  • power — Требуемая статистическая мощность теста (1 - вероятность ошибки II рода). (U)Int* или Float*
  • alpha — Требуемый уровень значимости теста (вероятность ошибки I рода). (U)Int* или Float*

Возвращаемое значение

Возвращает именованный Tuple с 3 элементами: minimum_sample_size, detect_range_lower и detect_range_upper. Это, соответственно: требуемый размер выборки, нижняя граница диапазона значений, не обнаруживаемых при возвращённом требуемом размере выборки, рассчитываемая как baseline * (1 - mde), и верхняя граница диапазона значений, не обнаруживаемых при возвращённом требуемом размере выборки, рассчитываемая как baseline * (1 + mde) (Float64). Tuple(Float64, Float64, Float64)

Примеры

minSampleSizeContinuous

SELECT minSampleSizeContinuous(112.25, 21.1, 0.03, 0.80, 0.05) AS sample_size
(616.2931945826209,108.8825,115.6175)

minSampleSizeConversion

Введена в версии: v22.6

Вычисляет минимально необходимый размер выборки для A/B‑теста, сравнивающего конверсии (доли) в двух выборках.

Использует формулу, описанную в этой статье. Предполагается, что размеры экспериментальной и контрольной групп равны. Возвращает размер выборки, требуемый для одной группы (т.е. размер выборки, необходимый для всего эксперимента, вдвое больше возвращаемого значения).

Синтаксис

minSampleSizeConversion(baseline, mde, power, alpha)

Аргументы

  • baseline — Базовая конверсия. Float*
  • mde — Минимально обнаруживаемый эффект (MDE) в процентных пунктах (например, для базовой конверсии 0.25 значение MDE 0.03 означает ожидаемое изменение до 0.25 ± 0.03). Float*
  • power — Требуемая статистическая мощность теста (1 - вероятность ошибки второго рода). Float*
  • alpha — Требуемый уровень значимости теста (вероятность ошибки первого рода). Float*

Возвращаемое значение

Возвращает именованный Tuple с 3 элементами: minimum_sample_size, detect_range_lower, detect_range_upper. Это соответственно: требуемый объем выборки; нижняя граница диапазона значений, не обнаруживаемых при указанном требуемом объеме выборки (рассчитывается как baseline - mde); верхняя граница диапазона значений, не обнаруживаемых при указанном требуемом объеме выборки (рассчитывается как baseline + mde). Tuple(Float64, Float64, Float64)

Примеры

minSampleSizeConversion

SELECT minSampleSizeConversion(0.25, 0.03, 0.80, 0.05) AS sample_size
(3396.077603219163,0.22,0.28)

neighbor

Введена в версии: v20.1

Возвращает значение из столбца на заданном смещении от текущей строки. Эта функция устарела и является ошибкоопасной, поскольку работает с физическим порядком блоков данных, который может не соответствовать логическому порядку, ожидаемому пользователями. Рекомендуется вместо неё использовать полноценные оконные функции.

Функцию можно включить, установив allow_deprecated_error_prone_window_functions = 1.

Синтаксис

neighbor(column, offset[, default_value])

Аргументы

  • column — Исходный столбец. Any
  • offset — Смещение относительно текущей строки. Положительные значения смещаются вперёд, отрицательные — назад. Integer
  • default_value — Необязательный параметр. Значение, возвращаемое, если смещение выходит за границы данных. Если не указано, используется значение по умолчанию для типа столбца. Any

Возвращаемое значение

Возвращает значение по заданному смещению или значение по умолчанию, если смещение выходит за границы данных. Any

Примеры

Пример использования

SELECT number, neighbor(number, 2) FROM system.numbers LIMIT 10;
┌─number─┬─neighbor(number, 2)─┐
│      0 │                   2 │
│      1 │                   3 │
│      2 │                   4 │
│      3 │                   5 │
│      4 │                   6 │
│      5 │                   7 │
│      6 │                   8 │
│      7 │                   9 │
│      8 │                   0 │
│      9 │                   0 │
└────────┴─────────────────────┘

Со значением по умолчанию

SELECT number, neighbor(number, 2, 999) FROM system.numbers LIMIT 10;
┌─number─┬─neighbor(number, 2, 999)─┐
│      0 │                        2 │
│      1 │                        3 │
│      2 │                        4 │
│      3 │                        5 │
│      4 │                        6 │
│      5 │                        7 │
│      6 │                        8 │
│      7 │                        9 │
│      8 │                      999 │
│      9 │                      999 │
└────────┴──────────────────────────┘

nested

Появилась в версии: v

Эта функция используется внутри движка ClickHouse и не предназначена для прямого использования.

Возвращает массив кортежей, сформированный из нескольких массивов.

Первый аргумент должен быть константным массивом строк, задающим имена результирующего Tuple. Остальные аргументы должны быть массивами одинакового размера.

Синтаксис

Аргументы

  • нет.

Возвращаемое значение

Примеры

Вложенные

SELECT nested(['keys', 'values'], ['key_1', 'key_2'], ['value_1','value_2'])

normalizeQuery

Введена в: v20.8

Заменяет литералы, последовательности литералов и сложные псевдонимы (содержащие пробелы, более двух цифр или имеющие длину не менее 36 байт, например UUID) на плейсхолдер ?.

Синтаксис

normalizeQuery(x)

Аргументы

  • x — Последовательность символов. String

Возвращаемое значение

Возвращает заданную последовательность символов с заполнителями. String

Примеры

Пример использования

SELECT normalizeQuery('[1, 2, 3, x]') AS query
┌─query────┐
│ [?.., x] │
└──────────┘

normalizeQueryKeepNames

Добавлено в версии: v21.2

Заменяет литералы и последовательности литералов на плейсхолдер ?, но не заменяет сложные псевдонимы (содержащие пробелы, более двух цифр или длиной не менее 36 байт, например UUID). Это помогает лучше анализировать сложные логи запросов.

Синтаксис

normalizeQueryKeepNames(x)

Аргументы

  • x — последовательность символов. String

Возвращаемое значение

Возвращает указанную последовательность символов с плейсхолдерами. String

Примеры

Пример использования

SELECT normalizeQuery('SELECT 1 AS aComplexName123'), normalizeQueryKeepNames('SELECT 1 AS aComplexName123')
┌─normalizeQuery('SELECT 1 AS aComplexName123')─┬─normalizeQueryKeepNames('SELECT 1 AS aComplexName123')─┐
│ SELECT ? AS `?`                               │ SELECT ? AS aComplexName123                            │
└───────────────────────────────────────────────┴────────────────────────────────────────────────────────┘

normalizedQueryHash

Введено в версии: v20.8

Возвращает одинаковые 64-битные хэш-значения для похожих запросов, не учитывая значения литералов. Может быть полезно при анализе журнала запросов.

Синтаксис

normalizedQueryHash(x)

Аргументы

  • x — последовательность символов. String

Возвращаемое значение

Возвращает 64-битовое хеш-значение. UInt64

Примеры

Пример использования

SELECT normalizedQueryHash('SELECT 1 AS `xyz`') != normalizedQueryHash('SELECT 1 AS `abc`') AS res
┌─res─┐
│   1 │
└─────┘

normalizedQueryHashKeepNames

Добавлена в: v21.2

Подобно normalizedQueryHash, возвращает идентичные 64‑битные хеш‑значения без учета значений литералов для похожих запросов, но при этом не заменяет сложные псевдонимы (содержащие пробелы, более двух цифр или имеющие длину не менее 36 байт, например UUID) на заполнитель перед хешированием. Может быть полезна при анализе журналов запросов.

Синтаксис

normalizedQueryHashKeepNames(x)

Аргументы

  • x — последовательность символов. String

Возвращаемое значение

Возвращает 64-битное значение хеша. UInt64

Примеры

Пример использования

SELECT normalizedQueryHash('SELECT 1 AS `xyz123`') != normalizedQueryHash('SELECT 1 AS `abc123`') AS normalizedQueryHash;
SELECT normalizedQueryHashKeepNames('SELECT 1 AS `xyz123`') != normalizedQueryHashKeepNames('SELECT 1 AS `abc123`') AS normalizedQueryHashKeepNames;
┌─normalizedQueryHash─┐
│                   0 │
└─────────────────────┘
┌─normalizedQueryHashKeepNames─┐
│                            1 │
└──────────────────────────────┘

parseReadableSize

Введена в: v24.6

Получив строку, содержащую размер в байтах и единицу измерения B, KiB, KB, MiB, MB и т. д. (т. е. в формате ISO/IEC 80000-13 или с десятичной единицей измерения объёма данных), эта функция возвращает соответствующее количество байт. Если функция не может разобрать входное значение, она выбрасывает исключение.

Обратными операциями для этой функции являются formatReadableSize и formatReadableDecimalSize.

Синтаксис

parseReadableSize(x)

Аргументы

  • x — размер в человекочитаемом формате с использованием единиц ISO/IEC 80000-13 или десятичных байтовых единиц. String

Возвращаемое значение

Возвращает количество байт, округлённое в большую сторону до ближайшего целого числа. UInt64

Примеры

Пример использования

SELECT arrayJoin(['1 B', '1 KiB', '3 MB', '5.314 KiB']) AS readable_sizes, parseReadableSize(readable_sizes) AS sizes;
┌─readable_sizes─┬───sizes─┐
│ 1 B            │       1 │
│ 1 KiB          │    1024 │
│ 3 MB           │ 3000000 │
│ 5.314 KiB      │    5442 │
└────────────────┴─────────┘

parseReadableSizeOrNull

Впервые появилась в версии: v24.6

Если на вход подаётся строка, содержащая размер в байтах и единицу измерения B, KiB, KB, MiB, MB и т.д. (то есть стандарт ISO/IEC 80000-13 или десятичная единица измерения объёма данных в байтах), эта функция возвращает соответствующее количество байт. Если функции не удаётся разобрать входное значение, она возвращает NULL.

Обратными операциями для этой функции являются formatReadableSize и formatReadableDecimalSize.

Синтаксис

parseReadableSizeOrNull(x)

Аргументы

  • x — Размер в удобочитаемом виде с использованием единиц ISO/IEC 80000-13 или десятичных байтовых единиц. String

Возвращаемое значение

Возвращает количество байт, округлённое вверх до ближайшего целого числа, или NULL, если не удалось распарсить входное значение Nullable(UInt64)

Примеры

Пример использования

SELECT arrayJoin(['1 B', '1 KiB', '3 MB', '5.314 KiB', 'invalid']) AS readable_sizes, parseReadableSizeOrNull(readable_sizes) AS sizes;
┌─readable_sizes─┬───sizes─┐
│ 1 B            │       1 │
│ 1 KiB          │    1024 │
│ 3 MB           │ 3000000 │
│ 5.314 KiB      │    5442 │
│ invalid        │    ᴺᵁᴸᴸ │
└────────────────┴─────────┘

parseReadableSizeOrZero

Введено в: v24.6

При передаче строки, в которой указан размер и единица измерения B, KiB, KB, MiB, MB и т.д. (то есть единица из стандарта ISO/IEC 80000-13 или десятичная единица измерения объёма данных), эта функция возвращает соответствующее количество байт. Если функция не может разобрать входное значение, она возвращает 0.

Обратные операции к этой функции — formatReadableSize и formatReadableDecimalSize.

Синтаксис

parseReadableSizeOrZero(x)

Аргументы

  • x — человеко-читаемый размер в единицах ISO/IEC 80000-13 или десятичных единицах байта. String

Возвращаемое значение

Возвращает количество байт, округлённое вверх до ближайшего целого, или 0, если не удалось распарсить входное значение. UInt64

Примеры

Пример использования

SELECT arrayJoin(['1 B', '1 KiB', '3 MB', '5.314 KiB', 'invalid']) AS readable_sizes, parseReadableSizeOrZero(readable_sizes) AS sizes;
┌─readable_sizes─┬───sizes─┐
│ 1 B            │       1 │
│ 1 KiB          │    1024 │
│ 3 MB           │ 3000000 │
│ 5.314 KiB      │    5442 │
│ invalid        │       0 │
└────────────────┴─────────┘

parseTimeDelta

Добавлена в версии: v22.7

Разбирает последовательность чисел, за которыми следует обозначение единицы времени.

Строка временного интервала использует следующие обозначения единиц времени:

  • 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

Примеры

Пример использования

SELECT parseTimeDelta('11s+22min')
┌─parseTimeDelta('11s+22min')─┐
│                        1331 │
└─────────────────────────────┘

Составные единицы времени

SELECT parseTimeDelta('1yr2mo')
┌─parseTimeDelta('1yr2mo')─┐
│                 36806400 │
└──────────────────────────┘

partitionId

Появилась в версии: v21.4

Вычисляет ID партиции.

Примечание

Эта функция работает медленно и не должна вызываться для большого количества строк.

Синтаксис

partitionId(column1[, column2, ...])

Псевдонимы: partitionID

Аргументы

  • column1, column2, ... — Столбец (столбцы), для которого возвращается ID партиции.

Возвращаемое значение

Возвращает ID партиции, к которой принадлежит строка. String

Примеры

Пример использования

DROP TABLE IF EXISTS tab;

CREATE TABLE tab
(
  i int,
  j int
)
ENGINE = MergeTree
PARTITION BY i
ORDER BY tuple();

INSERT INTO tab VALUES (1, 1), (1, 2), (1, 3), (2, 4), (2, 5), (2, 6);

SELECT i, j, partitionId(i), _partition_id FROM tab ORDER BY i, j;
┌─i─┬─j─┬─partitionId(i)─┬─_partition_id─┐
│ 1 │ 1 │ 1              │ 1             │
│ 1 │ 2 │ 1              │ 1             │
│ 1 │ 3 │ 1              │ 1             │
│ 2 │ 4 │ 2              │ 2             │
│ 2 │ 5 │ 2              │ 2             │
│ 2 │ 6 │ 2              │ 2             │
└───┴───┴────────────────┴───────────────┘

queryID

Введена в версии: v21.9

Возвращает идентификатор текущего запроса. Другие параметры запроса могут быть получены из поля query_id в таблице system.query_log.

В отличие от функции initialQueryID, queryID может возвращать разные результаты на разных сегментах.

Синтаксис

queryID()

Псевдонимы: query_id

Аргументы

  • Нет.

Возвращаемое значение

Возвращает идентификатор текущего запроса. String

Примеры

Пример использования

CREATE TABLE tmp (str String) ENGINE = Log;
INSERT INTO tmp (*) VALUES ('a');
SELECT count(DISTINCT t) FROM (SELECT queryID() AS t FROM remote('127.0.0.{1..3}', currentDatabase(), 'tmp') GROUP BY queryID());
┌─count(DISTINCT t)─┐
│                 3 │
└───────────────────┘

revision

Появилась в версии: v22.7

Возвращает текущую ревизию сервера ClickHouse.

Синтаксис

revision()

Аргументы

  • Отсутствуют.

Возвращаемое значение

Возвращает текущую ревизию сервера ClickHouse. UInt32

Примеры

Пример использования

SELECT revision()
┌─revision()─┐
│      54485 │
└────────────┘

rowNumberInAllBlocks

Впервые появилась в: v1.1

Возвращает уникальный номер строки для каждой обработанной строки.

Синтаксис

rowNumberInAllBlocks()

Аргументы

  • Нет.

Возвращаемое значение

Возвращает порядковый номер строки в блоке данных, начиная с 0. UInt64

Примеры

Пример использования

SELECT rowNumberInAllBlocks()
FROM
(
    SELECT *
    FROM system.numbers_mt
    LIMIT 10
)
SETTINGS max_block_size = 2
┌─rowNumberInAllBlocks()─┐
│                      0 │
│                      1 │
└────────────────────────┘
┌─rowNumberInAllBlocks()─┐
│                      4 │
│                      5 │
└────────────────────────┘
┌─rowNumberInAllBlocks()─┐
│                      2 │
│                      3 │
└────────────────────────┘
┌─rowNumberInAllBlocks()─┐
│                      6 │
│                      7 │
└────────────────────────┘
┌─rowNumberInAllBlocks()─┐
│                      8 │
│                      9 │
└────────────────────────┘

rowNumberInBlock

Впервые появилась в: v1.1

Функция rowNumberInBlock для каждого блока возвращает номер текущей строки.

Нумерация начинается с 0 для каждого блока.

Синтаксис

rowNumberInBlock()

Аргументы

  • Отсутствуют.

Возвращаемое значение

Возвращает порядковый номер строки в блоке данных, начиная с 0. UInt64

Примеры

Пример использования

SELECT rowNumberInBlock()
FROM
(
    SELECT *
    FROM system.numbers_mt
    LIMIT 10
) SETTINGS max_block_size = 2
┌─rowNumberInBlock()─┐
│                  0 │
│                  1 │
└────────────────────┘
┌─rowNumberInBlock()─┐
│                  0 │
│                  1 │
└────────────────────┘
┌─rowNumberInBlock()─┐
│                  0 │
│                  1 │
└────────────────────┘
┌─rowNumberInBlock()─┐
│                  0 │
│                  1 │
└────────────────────┘
┌─rowNumberInBlock()─┐
│                  0 │
│                  1 │
└────────────────────┘

runningAccumulate

Введена в версии v1.1

Накапливает состояния агрегатной функции для каждой строки блока данных.

Устарело

Состояние сбрасывается для каждого нового блока данных. Из-за такого склонного к ошибкам поведения функция устарела, и рекомендуется вместо неё использовать оконные функции. Вы можете использовать настройку allow_deprecated_error_prone_window_functions, чтобы разрешить использование этой функции.

Синтаксис

runningAccumulate(agg_state[, grouping])

Аргументы

  • agg_state — состояние агрегатной функции. AggregateFunction
  • grouping — необязательный параметр. Ключ группировки. Состояние функции сбрасывается, если значение grouping изменяется. Может быть любым из поддерживаемых типов данных, для которых определён оператор равенства. Any

Возвращаемое значение

Возвращает накопленный результат для каждой строки. Any

Примеры

Пример использования с initializeAggregation

WITH initializeAggregation('sumState', number) AS one_row_sum_state
SELECT
    number,
    finalizeAggregation(one_row_sum_state) AS one_row_sum,
    runningAccumulate(one_row_sum_state) AS cumulative_sum
FROM numbers(5);
┌─number─┬─one_row_sum─┬─cumulative_sum─┐
│      0 │           0 │              0 │
│      1 │           1 │              1 │
│      2 │           2 │              3 │
│      3 │           3 │              6 │
│      4 │           4 │             10 │
└────────┴─────────────┴────────────────┘

runningConcurrency

Введена в версии: v21.3

Вычисляет количество параллельных событий. Каждое событие имеет время начала и время окончания. Время начала включается в событие, а время окончания исключается. Столбцы с временем начала и временем окончания должны иметь один и тот же тип данных. Функция вычисляет общее количество активных (одновременных) событий для каждого времени начала события.

Требования

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

Устаревшая функция

Рекомендуется вместо нее использовать оконные функции.

Синтаксис

runningConcurrency(start, end)

Аргументы

  • start — столбец с временем начала событий. Date или DateTime или DateTime64
  • end — столбец с временем окончания событий. Date или DateTime или DateTime64

Возвращаемое значение

Возвращает количество одновременно происходящих событий в момент начала каждого события. UInt32

Примеры

Пример использования

SELECT start, runningConcurrency(start, end) FROM example_table;
┌──────start─┬─runningConcurrency(start, end)─┐
│ 2025-03-03 │                              1 │
│ 2025-03-06 │                              2 │
│ 2025-03-07 │                              3 │
│ 2025-03-11 │                              2 │
└────────────┴────────────────────────────────┘

runningDifference

Появилась в: v1.1

Вычисляет разность между значениями двух последовательных строк в блоке данных. Возвращает 0 для первой строки, а для последующих строк — разность с предыдущей строкой.

Устарела

Возвращает разности только внутри текущего обрабатываемого блока данных. Из-за такого потенциально ошибочного поведения функция помечена как устаревшая. Рекомендуется вместо неё использовать оконные функции.

Вы можете использовать настройку allow_deprecated_error_prone_window_functions, чтобы разрешить использование этой функции.

Результат работы функции зависит от затронутых блоков данных и порядка данных в блоке. Порядок строк при вычислении runningDifference() может отличаться от порядка строк, возвращаемых пользователю. Чтобы этого избежать, вы можете создать подзапрос с ORDER BY и вызывать функцию во внешнем запросе. Обратите внимание, что размер блока влияет на результат. Внутреннее состояние runningDifference сбрасывается для каждого нового блока.

Синтаксис

runningDifference(x)

Аргументы

  • x — столбец, для которого нужно вычислить скользящую разность. Any

Возвращаемое значение

Возвращает разность между соседними значениями, при этом для первой строки возвращается 0.

Примеры

Пример использования

SELECT
    EventID,
    EventTime,
    runningDifference(EventTime) AS delta
FROM
(
    SELECT
        EventID,
        EventTime
    FROM events
    WHERE EventDate = '2025-11-24'
    ORDER BY EventTime ASC
    LIMIT 5
);
┌─EventID─┬───────────EventTime─┬─delta─┐
│    1106 │ 2025-11-24 00:00:04 │     0 │
│    1107 │ 2025-11-24 00:00:05 │     1 │
│    1108 │ 2025-11-24 00:00:05 │     0 │
│    1109 │ 2025-11-24 00:00:09 │     4 │
│    1110 │ 2025-11-24 00:00:10 │     1 │
└─────────┴─────────────────────┴───────┘

Пример влияния размера блока

SELECT
    number,
    runningDifference(number + 1) AS diff
FROM numbers(100000)
WHERE diff != 1;
┌─number─┬─diff─┐
│      0 │    0 │
└────────┴──────┘
┌─number─┬─diff─┐
│  65536 │    0 │
└────────┴──────┘

runningDifferenceStartingWithFirstValue

Добавлено в: v1.1

Вычисляет разность между последовательными значениями строк в блоке данных, но, в отличие от runningDifference, возвращает фактическое значение первой строки вместо 0.

Устарело

Возвращает разности только внутри текущего обрабатываемого блока данных. Из‑за такого, подверженного ошибкам, поведения функция помечена как устаревшая. Рекомендуется вместо неё использовать оконные функции.

Вы можете задать настройку allow_deprecated_error_prone_window_functions, чтобы разрешить использование этой функции.

Синтаксис

runningDifferenceStartingWithFirstValue(x)

Аргументы

  • x — столбец, для которого вычисляется скользящая разность. Any

Возвращаемое значение

Возвращает разность между последовательными значениями; для первой строки возвращается её исходное значение. Any

Примеры

Пример использования

SELECT
    number,
    runningDifferenceStartingWithFirstValue(number) AS diff
FROM numbers(5);
┌─number─┬─diff─┐
│      0 │    0 │
│      1 │    1 │
│      2 │    1 │
│      3 │    1 │
│      4 │    1 │
└────────┴──────┘

serverUUID

Появилась в версии: v20.1

Возвращает случайный и уникальный UUID (v4), сгенерированный при первом запуске сервера. UUID сохраняется, т.е. при втором, третьем и последующих запусках сервера возвращается тот же UUID.

Синтаксис

serverUUID()

Аргументы

  • Отсутствуют.

Возвращаемое значение

Возвращает случайный UUID сервера. UUID

Примеры

Пример использования

SELECT serverUUID();
┌─serverUUID()─────────────────────────────┐
│ 7ccc9260-000d-4d5c-a843-5459abaabb5f     │
└──────────────────────────────────────────┘

shardCount

Впервые появился в: v21.9

Возвращает общее количество сегментов для распределённого запроса. Если запрос не является распределённым, возвращается значение 0.

Синтаксис

shardCount()

Аргументы

  • Нет аргументов.

Возвращаемое значение

Возвращает общее количество сегментов или 0. UInt32

Примеры

Пример использования

-- See shardNum() example above which also demonstrates shardCount()
CREATE TABLE shard_count_example (dummy UInt8)
ENGINE=Distributed(test_cluster_two_shards_localhost, system, one, dummy);
SELECT shardCount() FROM shard_count_example;
┌─shardCount()─┐
│            2 │
│            2 │
└──────────────┘

shardNum

Введена в версии v21.9

Возвращает индекс сегмента, который обрабатывает часть данных в распределённом запросе. Индексы начинаются с 1. Если запрос не является распределённым, возвращается константа 0.

Синтаксис

shardNum()

Аргументы

  • Отсутствуют.

Возвращаемое значение

Возвращает индекс сегмента или константу 0. UInt32

Примеры

Пример использования

CREATE TABLE shard_num_example (dummy UInt8)
ENGINE=Distributed(test_cluster_two_shards_localhost, system, one, dummy);
SELECT dummy, shardNum(), shardCount() FROM shard_num_example;
┌─dummy─┬─shardNum()─┬─shardCount()─┐
│     0 │          1 │            2 │
│     0 │          2 │            2 │
└───────┴────────────┴──────────────┘

showCertificate

Появилась в версии: v22.6

Отображает информацию о текущем SSL-сертификате сервера, если он настроен. См. раздел Настройка TLS для получения дополнительной информации о том, как настроить ClickHouse для использования сертификатов OpenSSL для проверки соединений.

Синтаксис

showCertificate()

Аргументы

  • Нет.

Возвращаемое значение

Возвращает отображение (map) пар «ключ — значение», относящихся к настроенному SSL‑сертификату. Map(String, String)

Примеры

Пример использования

SELECT showCertificate() FORMAT LineAsString;
{'version':'1','serial_number':'2D9071D64530052D48308473922C7ADAFA85D6C5','signature_algo':'sha256WithRSAEncryption','issuer':'/CN=marsnet.local CA','not_before':'May  7 17:01:21 2024 GMT','not_after':'May  7 17:01:21 2025 GMT','subject':'/CN=chnode1','pkey_algo':'rsaEncryption'}

sleep

Добавлена в: v1.1

Приостанавливает выполнение запроса на указанное количество секунд. Функция в основном используется для тестирования и отладки.

Функцию sleep() в общем случае не следует использовать в продуктивных средах, так как она может негативно влиять на производительность запросов и отзывчивость системы. Однако она может быть полезна в следующих сценариях:

  1. Тестирование: При тестировании или бенчмаркинге ClickHouse вы можете смоделировать задержки или ввести паузы, чтобы наблюдать, как система ведёт себя в определённых условиях.
  2. Отладка: Если вам нужно проанализировать состояние системы или выполнение запроса в определённый момент времени, вы можете использовать sleep() для введения паузы, что позволит вам исследовать или собрать необходимую информацию.
  3. Моделирование: В некоторых случаях вам может понадобиться смоделировать реальные сценарии, где возникают задержки или паузы, например сетевые задержки или зависимости от внешних систем.
Примечание

Важно использовать функцию sleep() разумно и только при необходимости, поскольку она может повлиять на общую производительность и отзывчивость вашей системы ClickHouse.

По соображениям безопасности функция может выполняться только в профиле пользователя по умолчанию (с включённым allow_sleep).

Синтаксис

sleep(seconds)

Аргументы

  • seconds — Количество секунд, на которое приостанавливается выполнение запроса, максимум 3 секунды. Может быть числом с плавающей запятой для указания долей секунды. const UInt* или const Float*

Возвращаемое значение

Возвращает 0. UInt8

Примеры

Пример использования

-- This query will pause for 2 seconds before completing.
-- During this time, no results will be returned, and the query will appear to be hanging or unresponsive.
SELECT sleep(2);
┌─sleep(2)─┐
│        0 │
└──────────┘
1 row in set. Elapsed: 2.012 sec.

sleepEachRow

Введён в версии: v1.1

Приостанавливает выполнение запроса на заданное количество секунд для каждой строки в результирующем наборе.

Функция sleepEachRow() в основном используется для тестирования и отладки, аналогично функции sleep(). Она позволяет моделировать задержки или вводить паузы при обработке каждой строки, что может быть полезно в следующих сценариях:

  1. Тестирование: При тестировании или бенчмаркинге производительности ClickHouse в определённых условиях вы можете использовать sleepEachRow() для моделирования задержек или введения пауз для каждой обрабатываемой строки.
  2. Отладка: Если вам нужно изучить состояние системы или выполнение запроса для каждой обрабатываемой строки, вы можете использовать sleepEachRow() для введения пауз, что позволит вам изучать или собирать соответствующую информацию.
  3. Моделирование: В некоторых случаях может потребоваться смоделировать реальные сценарии, в которых возникают задержки или паузы для каждой обрабатываемой строки, например при работе с внешними системами или сетевыми задержками.
Примечание

Как и в случае с функцией sleep(), важно использовать sleepEachRow() осторожно и только при необходимости, так как она может существенно повлиять на общую производительность и отзывчивость вашей системы ClickHouse, особенно при работе с большими результирующими наборами.

Синтаксис

sleepEachRow(seconds)

Аргументы

  • seconds — количество секунд, на которое выполнение запроса приостанавливается для каждой строки в наборе результатов, но не более 3 секунд. Может быть числом с плавающей запятой для указания долей секунды. const UInt* или const Float*

Возвращаемое значение

Возвращает 0 для каждой строки. UInt8

Примеры

Пример использования

-- The output will be delayed, with a 0.5-second pause between each row.
SELECT number, sleepEachRow(0.5) FROM system.numbers LIMIT 5;
┌─number─┬─sleepEachRow(0.5)─┐
│      0 │                 0 │
│      1 │                 0 │
│      2 │                 0 │
│      3 │                 0 │
│      4 │                 0 │
└────────┴───────────────────┘

structureToCapnProtoSchema

Появилась в версии: v

Функция преобразует структуру таблицы ClickHouse в схему формата CapnProto

Синтаксис

Аргументы

  • Нет аргументов.

Возвращаемое значение

Примеры

random

SELECT structureToCapnProtoSchema('s String, x UInt32', 'MessageName') format TSVRaw
struct MessageName
{
    s @0 : Data;
    x @1 : UInt32;
}

structureToProtobufSchema

Введена в версии v23.8

Преобразует структуру таблицы 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

SELECT structureToProtobufSchema('s String, x UInt32', 'MessageName') FORMAT TSVRaw;
syntax = "proto3";

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

tcpPort

Введена в: v20.12

Возвращает номер TCP-порта нативного интерфейса, который прослушивает сервер. Если выполняется в контексте distributed таблицы, эта функция генерирует обычный столбец со значениями для каждого сегмента. В противном случае она возвращает константу.

Синтаксис

tcpPort()

Аргументы

  • Отсутствуют.

Возвращаемое значение

Возвращает номер TCP-порта. UInt16

Примеры

Пример использования

SELECT tcpPort()
┌─tcpPort()─┐
│      9000 │
└───────────┘

throwIf

Введена в версии v1.1

Генерирует исключение, если аргумент 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

Примеры

Пример использования

SELECT throwIf(number = 3, 'Too many') FROM numbers(10);
↙ 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

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

Синтаксис

toColumnTypeName(value)

Аргументы

  • value — значение, для которого нужно вернуть внутренний тип данных. Any

Возвращаемое значение

Возвращает внутренний тип данных, используемый для представления этого значения. String

Примеры

Пример использования

SELECT toColumnTypeName(CAST('2025-01-01 01:02:03' AS DateTime));
┌─toColumnTypeName(CAST('2025-01-01 01:02:03', 'DateTime'))─┐
│ Const(UInt32)                                             │
└───────────────────────────────────────────────────────────┘

toTypeName

Введена в версии v1.1

Возвращает имя типа переданного аргумента. Если передано значение NULL, функция возвращает тип Nullable(Nothing), который соответствует внутреннему представлению NULL в ClickHouse.

Синтаксис

toTypeName(x)

Аргументы

  • x — Значение любого типа. Any

Возвращаемое значение

Возвращает имя типа данных входного значения. String

Примеры

Пример использования

SELECT toTypeName(123)
┌─toTypeName(123)─┐
│ UInt8           │
└─────────────────┘

transactionID

Добавлено в версии: v22.6

Experimental feature. Learn more.
Not supported in ClickHouse Cloud

Возвращает идентификатор транзакции.

Примечание

Эта функция является частью экспериментального набора функций. Включите экспериментальную поддержку транзакций, добавив эту настройку в вашу конфигурацию:

<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)

Примеры

Пример использования

BEGIN TRANSACTION;
SELECT transactionID();
ROLLBACK;
┌─transactionID()────────────────────────────────┐
│ (32,34,'0ee8b069-f2bb-4748-9eae-069c85b5252b') │
└────────────────────────────────────────────────┘

transactionLatestSnapshot

Добавлена в версии: v22.6

Experimental feature. Learn more.
Not supported in ClickHouse Cloud

Возвращает последний snapshot (Commit Sequence Number) транзакции, доступный для чтения.

Примечание

Эта функция является частью экспериментального набора функций. Включите экспериментальную поддержку транзакций, добавив этот SETTING в конфигурацию:

<clickhouse>
    <allow_experimental_transactions>1</allow_experimental_transactions>
</clickhouse>

Для получения дополнительных сведений см. страницу Поддержка транзакций (ACID).

Синтаксис

transactionLatestSnapshot()

Аргументы

  • Нет.

Возвращаемое значение

Возвращает последний snapshot (CSN) транзакции. UInt64

Примеры

Пример использования

BEGIN TRANSACTION;
SELECT transactionLatestSnapshot();
ROLLBACK;
┌─transactionLatestSnapshot()─┐
│                          32 │
└─────────────────────────────┘

transactionOldestSnapshot

Добавлено в: v22.6

Experimental feature. Learn more.
Not supported in ClickHouse Cloud

Возвращает самый старый снимок (Commit Sequence Number), который виден для некоторой активной транзакции.

Примечание

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

<clickhouse>
    <allow_experimental_transactions>1</allow_experimental_transactions>
</clickhouse>

Для получения дополнительной информации см. страницу Transactional (ACID) support.

Синтаксис

transactionOldestSnapshot()

Аргументы

  • Нет.

Возвращаемое значение

Возвращает самый ранний снимок (CSN) транзакции. UInt64

Примеры

Пример использования

BEGIN TRANSACTION;
SELECT transactionOldestSnapshot();
ROLLBACK;
┌─transactionOldestSnapshot()─┐
│                          32 │
└─────────────────────────────┘

transform

Впервые появилась в: v1.1

Преобразует значение в соответствии с явно заданным отображением одних элементов в другие.

Существует два варианта этой функции:

  • 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

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
┌─title─────┬──────c─┐
│ Yandex    │ 498635 │
│ Google    │ 229872 │
│ Other     │ 104472 │
└───────────┴────────┘

transform(T, Array(T), Array(T)) -> T

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
┌─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

Принимает два объекта uniqThetaSketch и вычисляет их пересечение (операция над множествами ∩); результатом является новый uniqThetaSketch.

Синтаксис

uniqThetaIntersect(uniqThetaSketch,uniqThetaSketch)

Аргументы

Возвращаемое значение

Новый объект uniqThetaSketch, содержащий результат пересечения. UInt64

Примеры

Пример использования

SELECT finalizeAggregation(uniqThetaIntersect(a, b)) AS a_intersect_b, finalizeAggregation(a) AS a_cardinality, finalizeAggregation(b) AS b_cardinality
FROM
(SELECT arrayReduce('uniqThetaState', [1, 2]) AS a, arrayReduce('uniqThetaState', [2, 3, 4]) AS b);
┌─a_intersect_b─┬─a_cardinality─┬─b_cardinality─┐
│             1 │             2 │             3 │
└───────────────┴───────────────┴───────────────┘

uniqThetaNot

Появилась в версии: v22.9

Операция a_not_b (операция над множествами ×) между двумя объектами uniqThetaSketch, результатом которой является новый uniqThetaSketch.

Синтаксис

uniqThetaNot(uniqThetaSketch,uniqThetaSketch)

Аргументы

Возвращаемое значение

Возвращает новый uniqThetaSketch, содержащий результат операции a_not_b. UInt64

Примеры

Пример использования

SELECT finalizeAggregation(uniqThetaNot(a, b)) AS a_not_b, finalizeAggregation(a) AS a_cardinality, finalizeAggregation(b) AS b_cardinality
FROM
(SELECT arrayReduce('uniqThetaState', [2, 3, 4]) AS a, arrayReduce('uniqThetaState', [1, 2]) AS b);
┌─a_not_b─┬─a_cardinality─┬─b_cardinality─┐
│       2 │             3 │             2 │
└─────────┴───────────────┴───────────────┘

uniqThetaUnion

Добавлено в: v22.9

Два объекта uniqThetaSketch используются для вычисления объединения (операция объединения множеств ∪), результатом является новый uniqThetaSketch.

Синтаксис

uniqThetaUnion(uniqThetaSketch,uniqThetaSketch)

Аргументы

Возвращаемое значение

Возвращает новый uniqThetaSketch, содержащий результат объединения. UInt64

Примеры

Пример использования

SELECT finalizeAggregation(uniqThetaUnion(a, b)) AS a_union_b, finalizeAggregation(a) AS a_cardinality, finalizeAggregation(b) AS b_cardinality
FROM
(SELECT arrayReduce('uniqThetaState', [1, 2]) AS a, arrayReduce('uniqThetaState', [2, 3, 4]) AS b);
┌─a_union_b─┬─a_cardinality─┬─b_cardinality─┐
│         4 │             2 │             3 │
└───────────┴───────────────┴───────────────┘

uptime

Введена в: v1.1

Возвращает время работы сервера в секундах. Если выполняется в контексте distributed таблицы, эта функция генерирует обычный столбец со значениями для каждого сегмента. В противном случае она возвращает константное значение.

Синтаксис

uptime()

Аргументы

  • Нет.

Возвращаемое значение

Возвращает время работы сервера в секундах. UInt32

Примеры

Пример использования

SELECT uptime() AS Uptime
┌─Uptime─┐
│  55867 │
└────────┘

variantElement

Введена в версии: v25.2

Извлекает столбец заданного типа из столбца типа Variant.

Синтаксис

variantElement(variant, type_name[, default_value])

Аргументы

  • variant — столбец типа Variant. Variant
  • type_name — имя типа Variant, который нужно извлечь. String
  • default_value — значение по умолчанию, которое будет использовано, если в variant нет значения с указанным типом. Может быть любого типа. Необязательный аргумент. Any

Возвращаемое значение

Возвращает столбец с указанным типом Variant, извлечённым из столбца Variant. Any

Примеры

Пример использования

CREATE TABLE test (v Variant(UInt64, String, Array(UInt64))) ENGINE = Memory;
INSERT INTO test VALUES (NULL), (42), ('Hello, World!'), ([1, 2, 3]);
SELECT v, variantElement(v, 'String'), variantElement(v, 'UInt64'), variantElement(v, 'Array(UInt64)') FROM test;
┌─v─────────────┬─variantElement(v, 'String')─┬─variantElement(v, 'UInt64')─┬─variantElement(v, 'Array(UInt64)')─┐
│ ᴺᵁᴸᴸ          │ ᴺᵁᴸᴸ                        │                        ᴺᵁᴸᴸ │ []                                 │
│ 42            │ ᴺᵁᴸᴸ                        │                          42 │ []                                 │
│ Hello, World! │ Hello, World!               │                        ᴺᵁᴸᴸ │ []                                 │
│ [1,2,3]       │ ᴺᵁᴸᴸ                        │                        ᴺᵁᴸᴸ │ [1,2,3]                            │
└───────────────┴─────────────────────────────┴─────────────────────────────┴────────────────────────────────────┘

variantType

Добавлено в: v24.2

Возвращает имя типа Variant для каждой строки столбца Variant. Если строка содержит NULL, для неё возвращается значение 'None'.

Синтаксис

variantType(variant)

Аргументы

  • variant — столбец типа Variant. Variant

Возвращаемое значение

Возвращает столбец типа Enum, содержащий имя типа Variant для каждой строки. Enum

Примеры

Пример использования

CREATE TABLE test (v Variant(UInt64, String, Array(UInt64))) ENGINE = Memory;
INSERT INTO test VALUES (NULL), (42), ('Hello, World!'), ([1, 2, 3]);
SELECT variantType(v) FROM test;
┌─variantType(v)─┐
│ None           │
│ UInt64         │
│ String         │
│ Array(UInt64)  │
└────────────────┘

version

Введена в версии v1.1

Возвращает текущую версию ClickHouse в виде строки формата: major_version.minor_version.patch_version.number_of_commits_since_the_previous_stable_release. Если выполняется в контексте distributed таблицы, эта функция формирует обычный столбец со значениями, соответствующими каждому сегменту. В противном случае она возвращает константное значение.

Синтаксис

version()

Аргументы

  • Нет.

Возвращаемое значение

Возвращает текущую версию ClickHouse. String

Примеры

Пример использования

SELECT version()
┌─version()─┐
│ 24.2.1.1  │
└───────────┘

visibleWidth

Впервые появилась в: v1.1

Вычисляет приблизительную ширину при выводе значений в консоль в текстовом формате с разделителем-табуляцией (tab-separated). Эта функция используется системой для реализации форматов Pretty. NULL представляется в виде строки, соответствующей значению NULL в форматах Pretty.

Синтаксис

visibleWidth(x)

Аргументы

  • x — значение любого типа данных. Any

Возвращаемое значение

Возвращает приблизительную ширину значения при его отображении в текстовом формате. UInt64

Примеры

Вычисление видимой ширины NULL

SELECT visibleWidth(NULL)
┌─visibleWidth(NULL)─┐
│                  4 │
└────────────────────┘

zookeeperSessionUptime

Появилась в версии: v21.11

Возвращает время работы текущей сессии ZooKeeper в секундах.

Синтаксис

zookeeperSessionUptime()

Аргументы

  • Отсутствуют.

Возвращаемое значение

Возвращает время работы текущей сессии ZooKeeper в секундах. UInt32

Примеры

Пример использования

SELECT zookeeperSessionUptime();
┌─zookeeperSessionUptime()─┐
│                      286 │
└──────────────────────────┘