Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

Прочие функции

FQDN

Добавленный в: v20.1.0

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

Синтаксис

FQDN()

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

Аргументы

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

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

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

Примеры

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

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

MACNumToString

Добавленный в: v1.1.0

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

Синтаксис

MACNumToString(num)

Аргументы

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

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

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

Примеры

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

SELECT MACNumToString(149809441867716) AS mac_address;
┌─mac_address───────┐
│ 88:40:3A:91:07:C4 │
└───────────────────┘

MACStringToNum

Добавленный в: v1.1.0

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

Синтаксис

MACStringToNum(s)

Аргументы

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

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

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

Примеры

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

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

MACStringToOUI

Добавленный в: v1.1.0

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

Синтаксис

MACStringToOUI(s)

Аргументы

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

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

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

Примеры

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

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

authenticatedUser

Добавленный в: v25.11.0

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

Синтаксис

authenticatedUser()

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

Аргументы

  • Нет.

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

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

Примеры

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

CREATE USER u1;
EXECUTE AS u1 SELECT currentUser(), authenticatedUser();
DROP USER u1;
┌─currentUser()─┬─authenticatedUser()─┐
│ u1            │ default             │
└───────────────┴─────────────────────┘

bar

Добавленный в: v1.1.0

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

Синтаксис

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

Аргументы

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

Возвращает строку с полосой в стиле Unicode-арт. String

Примеры

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

CREATE TABLE hits (EventTime DateTime('UTC')) ENGINE = Memory;

-- One row per page view, spread over the hours of a day.
INSERT INTO hits
SELECT toDateTime('2026-01-01 00:00:00', 'UTC') + toIntervalHour(hour)
FROM (
    SELECT
        number AS hour,
        [293, 181, 115, 85, 69, 78, 113, 171, 278, 391, 458, 494, 510, 523, 540, 528, 539, 524, 506, 521, 522, 542, 494, 400][number + 1] AS count
    FROM numbers(24)
)
ARRAY JOIN range(count);

SELECT
toHour(EventTime) AS h,
count() AS c,
bar(c, 0, 600, 20) AS bar
FROM hits
GROUP BY h
ORDER BY h ASC
┌──h─┬───c─┬─bar────────────────┐
│  0 │ 293 │ █████████▊         │
│  1 │ 181 │ ██████             │
│  2 │ 115 │ ███▊               │
│  3 │  85 │ ██▊                │
│  4 │  69 │ ██▎                │
│  5 │  78 │ ██▌                │
│  6 │ 113 │ ███▊               │
│  7 │ 171 │ █████▋             │
│  8 │ 278 │ █████████▎         │
│  9 │ 391 │ █████████████      │
│ 10 │ 458 │ ███████████████▎   │
│ 11 │ 494 │ ████████████████▍  │
│ 12 │ 510 │ █████████████████  │
│ 13 │ 523 │ █████████████████▍ │
│ 14 │ 540 │ ██████████████████ │
│ 15 │ 528 │ █████████████████▌ │
│ 16 │ 539 │ █████████████████▉ │
│ 17 │ 524 │ █████████████████▍ │
│ 18 │ 506 │ ████████████████▊  │
│ 19 │ 521 │ █████████████████▎ │
│ 20 │ 522 │ █████████████████▍ │
│ 21 │ 542 │ ██████████████████ │
│ 22 │ 494 │ ████████████████▍  │
│ 23 │ 400 │ █████████████▎     │
└────┴─────┴────────────────────┘

blockNumber

Добавленный в: v1.1.0

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

Синтаксис

blockNumber()

Аргументы

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

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

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

Примеры

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

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

blockSerializedSize

Добавленный в: v20.3.0

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

Синтаксис

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

Аргументы

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

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

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

Примеры

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

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

blockSize

Добавленный в: v1.1.0

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

Синтаксис

blockSize()

Аргументы

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

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

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

Примеры

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

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

buildId

Добавленный в: v20.5.0

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

Синтаксис

buildId()

Аргументы

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

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

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

Примеры

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

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

byteSize

Добавленный в: v21.1.0

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

Синтаксис

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

Аргументы

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

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

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

Примеры

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

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

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

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

catboostEvaluate

Добавленный в: v22.9.0

Оценивает внешнюю модель CatBoost. CatBoost — библиотека градиентного бустинга с открытым исходным кодом, разработанная в Yandex для машинного обучения. Принимает путь к модели CatBoost и аргументы модели (признаки).

Предварительные требования

  1. Соберите библиотеку для оценки CatBoost

Перед оценкой моделей CatBoost необходимо, чтобы библиотека libcatboostmodel.<so|dylib> была доступна. См. документацию CatBoost, чтобы узнать, как ее скомпилировать.

Затем укажите путь к libcatboostmodel.<so|dylib> в конфигурации ClickHouse:

<clickhouse>
...
    <catboost_lib_path>/path/to/libcatboostmodel.so</catboost_lib_path>
...
</clickhouse>

По соображениям безопасности и изоляции оценка модели выполняется не в серверном процессе, а в процессе clickhouse-library-bridge. При первом вызове catboostEvaluate() сервер запускает процесс clickhouse-library-bridge, если он ещё не запущен. Оба процесса взаимодействуют через HTTP-интерфейс. По умолчанию используется порт 9012. Другой порт можно указать следующим образом — это полезно, если порт 9012 уже занят другим сервисом.

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

См. раздел Обучение и применение моделей, чтобы узнать, как обучать модели CatBoost на обучающем наборе данных.

Файл модели должен находиться в каталоге user_files, как и для функции file.

Синтаксис

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

Аргументы

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

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

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

Примеры

catboostEvaluate

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

colorOKLABToSRGB

Добавленный в: v26.2.0

Преобразует цвет из перцептивного цветового пространства OKLab в цветовое пространство sRGB.

Входной цвет задается в цветовом пространстве OKLab. Если входные значения выходят за пределы типичных диапазонов OKLab, результат зависит от реализации.

OKLab использует три компонента:

  • L: перцептивная светлота (обычно в диапазоне [0..1])
  • a: зелено-красная оппонентная ось
  • b: сине-желтая оппонентная ось

Компоненты a и b теоретически не ограничены, но на практике обычно находятся в пределах от -0.4 до 0.4. OKLab разработано так, чтобы быть перцептуально равномерным и при этом не требовать больших вычислительных затрат.

Преобразование задумано как обратное к colorSRGBToOKLAB и состоит из следующих этапов:

  1. Преобразование из OKLab в линейный sRGB.
  2. Преобразование из линейного sRGB в sRGB с гамма-кодированием.

Необязательный аргумент gamma задает показатель степени, используемый при преобразовании из линейного sRGB в значения RGB с гамма-кодированием. Если он не указан, используется значение gamma по умолчанию для согласованности с colorSRGBToOKLAB.

Дополнительные сведения о цветовом пространстве OKLab и его связи с sRGB см. по адресу https://developer.mozilla.org/en-US/docs/Web/CSS/Reference/Values/color&#95;value/oklab .

Синтаксис

colorOKLABToSRGB(tuple [, gamma])

Аргументы

  • tuple — Кортеж из трёх числовых значений L, a, b, где L находится в диапазоне [0...1]. Tuple(Float64, Float64, Float64)
  • gamma — Необязательный параметр. Показатель степени, используемый для преобразования линейного sRGB обратно в sRGB путём применения (x ^ (1 / gamma)) * 255 к каждому каналу x. Значение по умолчанию — 2.2. Float64

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

Возвращает кортеж (R, G, B), представляющий значения цвета в sRGB. Tuple(Float64, Float64, Float64)

Примеры

Преобразование OKLAB в sRGB (Float)

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

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

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

colorOKLCHToSRGB

Добавленный в: v25.7.0

Преобразует цвет из перцептуально равномерного цветового пространства OKLCH в привычное цветовое пространство sRGB.

Если L выходит за пределы диапазона [0...1], C отрицательно или H выходит за пределы диапазона [0...360], результат зависит от реализации.

Преобразование обратно colorSRGBToOKLCH:

  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.0

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

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

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

  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.0

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

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

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

  1. из sRGB в линейный sRGB
  2. из линейного sRGB в OKLab
  3. из OKLab в OKLCH.

Справочную информацию о цветах в пространстве OKLCH и о том, как они соотносятся с цветами sRGB, см. на https://OKLCH.com/.

Синтаксис

colorSRGBToOKLCH(tuple[, gamma])

Аргументы

  • tuple — Кортеж из трёх значений R, G, B в диапазоне [0...255]. Tuple(UInt8, UInt8, UInt8)
  • gamma — Необязательный параметр. Показатель степени, используемый для линеаризации sRGB: к каждому каналу x применяется (x / 255)^gamma. Значение по умолчанию — 2.2. Float64

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

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

Примеры

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

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

connectionId

Добавленный в: v21.3.0

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

Синтаксис

connectionId()

Аргументы

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

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

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

Примеры

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

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

countDigits

Добавленный в: v20.8.0

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

Синтаксис

countDigits(x)

Аргументы

  • x — Целое или десятичное число. (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.0

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

См. также оператор SET.

Синтаксис

currentDatabase()

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

Аргументы

  • None.

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

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

Примеры

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

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

Стандартный синтаксис SQL без скобок

SELECT CURRENT_DATABASE
┌─CURRENT_DATABASE─┐
│ default          │
└──────────────────┘

currentHandler

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

Возвращает имя HTTP-обработчика, определённого в SQL (созданного с помощью CREATE HANDLER), который вызвал запрос. Возвращает пустую строку, если запрос был вызван не через такой обработчик.

Полезна для настройки поведения запроса в зависимости от вызвавшего его обработчика.

Синтаксис

currentHandler()

Аргументы

  • Нет.

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

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

Примеры

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

SELECT currentHandler()

currentProfiles

Добавленный в: v21.9.0

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

Синтаксис

currentProfiles()

Аргументы

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

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

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

Примеры

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

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

currentQueryID

Добавленный в: v25.2.0

Возвращает текущий Query id.

Синтаксис

currentQueryID()

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

Аргументы

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

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

Примеры

Пример

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

currentRequestURL

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

Возвращает URL HTTP-запроса (путь и строку запроса), которым был вызван запрос. Возвращает пустую строку, если запрос был выполнен не через HTTP.

Полезна в сочетании с определёнными в SQL HTTP-обработчиками (CREATE HANDLER) для извлечения параметров, встроенных в путь запроса.

Синтаксис

currentRequestURL()

Аргументы

  • Нет.

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

Возвращает URL текущего HTTP-запроса. String

Примеры

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

SELECT currentRequestURL()

currentRoles

Добавленный в: v21.9.0

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

Синтаксис

currentRoles()

Аргументы

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

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

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

Примеры

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

SELECT currentRoles();
┌─currentRoles()─┐
│ []             │
└────────────────┘

currentSchemas

Добавленный в: v23.7.0

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

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

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

См. также оператор SET.

Синтаксис

currentSchemas(bool)

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

Аргументы

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

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

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

Примеры

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

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

currentUser

Добавленный в: v20.1.0

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

Синтаксис

currentUser()

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

Аргументы

  • None.

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

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

Примеры

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

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

Стандартный синтаксис SQL без скобок

SELECT CURRENT_USER
┌─CURRENT_USER─┐
│ default      │
└──────────────┘

defaultProfiles

Добавленный в: v21.9.0

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

Синтаксис

defaultProfiles()

Аргументы

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

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

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

Примеры

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

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

defaultRoles

Добавленный в: v21.9.0

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

Синтаксис

defaultRoles()

Аргументы

  • Нет.

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

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

Примеры

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

SELECT defaultRoles();
┌─defaultRoles()─┐
│ []             │
└────────────────┘

defaultValueOfArgumentType

Добавленный в: v1.1.0

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

Синтаксис

defaultValueOfArgumentType(expression)

Аргументы

  • expression — значение произвольного типа или выражение, результатом которого является значение произвольного типа. Any

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

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

Примеры

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

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

Пример Nullable

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

defaultValueOfTypeName

Добавленный в: v1.1.0

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

Синтаксис

defaultValueOfTypeName(type)

Аргументы

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

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

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

Примеры

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

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

Пример Nullable

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

digits

Добавленный в: v26.7.0

Возвращает цифры числа n, начиная с указанного смещения offset. Отсчёт начинается с 1 по следующей логике:

  • Если offset равен 0, генерируется исключение, так как offset использует нумерацию с 1.
  • Если offset отрицательный, отсчёт начинается с offset цифр от конца числа, а не от начала.
  • Если offset больше количества цифр в n, возвращается 0.

Для необязательного аргумента length действует следующая логика:

  • Если length положительный, это количество цифр, которые нужно взять, начиная с offset
  • Если length отрицательный, это количество цифр справа в числе, которые нужно исключить

См. также функцию substring, которая выполняет аналогичную операцию со строками.

Синтаксис

digits(n, offset[, length])

Аргументы

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

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

Примеры

Положительное смещение

SELECT digits(1234567890, 7)
7890

Положительные значения смещения и длины

SELECT digits(1234567890, 7, 2)
78

При отрицательном смещении отсчёт ведётся справа

SELECT digits(1234567890, -3)
890

При отрицательной длине цифры справа не учитываются

SELECT digits(1234567890, 3, -2)
345678

При смещении за пределы конца возвращается 0

SELECT digits(1234567890, 11)
0

displayName

Добавленный в: v22.11.0

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

Синтаксис

displayName()

Аргументы

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

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

Возвращает значение display_name из config или FQDN сервера, если оно не задано. String

Примеры

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

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

dumpColumnStructure

Добавленный в: v1.1.0

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

Синтаксис

dumpColumnStructure(x)

Аргументы

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

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

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

Примеры

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

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

enabledProfiles

Добавленный в: v21.9.0

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

Синтаксис

enabledProfiles()

Аргументы

  • Нет.

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

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

Примеры

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

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

enabledRoles

Добавленный в: v21.9.0

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

Синтаксис

enabledRoles()

Аргументы

  • Нет.

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

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

Примеры

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

SELECT enabledRoles();
┌─enabledRoles()─┐
│ []             │
└────────────────┘

errorCodeToName

Добавленный в: v20.12.0

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

Синтаксис

errorCodeToName(error_code)

Аргументы

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

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

Примеры

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

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

file

Добавленный в: v21.3.0

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

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

Синтаксис

file(path[, default])

Аргументы

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

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

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

Примеры

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

INSERT INTO FUNCTION file('a.txt', 'RawBLOB') SELECT 'Hello' SETTINGS engine_file_truncate_on_insert = 1;
INSERT INTO FUNCTION file('b.txt', 'RawBLOB') SELECT 'World!' SETTINGS engine_file_truncate_on_insert = 1;

CREATE TABLE data (a String, b String) ENGINE = Memory;
INSERT INTO data SELECT file('a.txt'), file('b.txt');

SELECT * FROM data;
┌─a─────┬─b──────┐
│ Hello │ World! │
└───────┴────────┘

filesystemAvailable

Добавленный в: v20.1.0

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

Синтаксис

filesystemAvailable([disk_name])

Аргументы

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

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

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

Примеры

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

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

filesystemCapacity

Добавленный в: v20.1.0

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

Синтаксис

filesystemCapacity([disk_name])

Аргументы

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

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

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

Примеры

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

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

filesystemUnreserved

Добавленный в: v22.12.0

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

Синтаксис

filesystemUnreserved([disk_name])

Аргументы

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

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

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

Примеры

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

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

finalizeAggregation

Добавленный в: v1.1.0

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

Синтаксис

finalizeAggregation(state)

Аргументы

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

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

Примеры

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

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

Вместе с initializeAggregation

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

flipCoordinates

Добавленный в: v25.11.0

Меняет местами координаты x и y геометрических объектов. Эта операция меняет широту и долготу местами, что полезно при преобразовании между различными системами координат или при исправлении порядка координат.

Для Point функция меняет местами координаты x и y. Для сложных геометрий (MultiPoint, LineString, Polygon, MultiPolygon, Ring, MultiLineString) преобразование рекурсивно применяется к каждой паре координат.

Функция поддерживает как отдельные геометрические типы (Point, MultiPoint, Ring, Polygon, MultiPolygon, LineString, MultiLineString), так и тип варианта Geometry.

Синтаксис

flipCoordinates(geometry)

Аргументы

  • geometry — геометрия, которую нужно преобразовать. Поддерживаемые типы: Point (Tuple(Float64, Float64)), MultiPoint (Array(Point)), Ring (Array(Point)), Polygon (Array(Ring)), MultiPolygon (Array(Polygon)), LineString (Array(Point)), MultiLineString (Array(LineString)) или Geometry (вариант, содержащий любой из этих типов).

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

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

Примеры

basic_point

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

Ring

SELECT flipCoordinates([(1.0, 2.0), (3.0, 4.0)]);
[(2,1),(4,3)]

polygon

SELECT flipCoordinates([[(1.0, 2.0), (3.0, 4.0)], [(5.0, 6.0), (7.0, 8.0)]]);
[[(2,1),(4,3)],[(6,5),(8,7)]]

geometry_wkt

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

geometry_polygon_wkt

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

formatQuery

Добавленный в: v23.10.0

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

Синтаксис

formatQuery(query)

Аргументы

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

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

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

Примеры

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

SELECT formatQuery('select a,    b FRom tab WHERE a > 3 and  b < 3');
SELECT\n    a,\n    b\nFROM tab\nWHERE (a > 3) AND (b < 3)

formatQueryFromJSON

Добавленный в: v26.8.0

Принимает JSON-представление SQL AST (созданное parseQueryToJSON) и преобразует его обратно в строку SQL-запроса.

При использовании одного аргумента возвращает SQL в каноническом формате. При использовании двух аргументов (json, original_query) по возможности сохраняет комментарии, пробельные символы и отступы исходного запроса.

Десериализованный AST ограничен текущими настройками сеанса max_ast_depth и max_ast_elements. Вместе с parseQueryToJSON эта функция позволяет программно анализировать и преобразовывать запросы в виде их JSON AST.

Синтаксис

formatQueryFromJSON(json[, original_query])

Аргументы

  • json — JSON-строка, представляющая SQL AST. String
  • original_query — Необязательный параметр. Исходный SQL-запрос для сохранения форматирования. String

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

Строка SQL-запроса. String

Примеры

Цикл преобразования

SELECT formatQueryFromJSON(parseQueryToJSON('SELECT a, b FROM t WHERE x > 1'));
┌─formatQueryFromJSON(parseQueryToJSON('SELECT a, b FROM t WHERE x > 1'))─┐
│ SELECT a, b FROM t WHERE x > 1                                          │
└─────────────────────────────────────────────────────────────────────────┘

Сохранять форматирование

SELECT formatQueryFromJSON(parseQueryToJSON('SELECT a FROM t'), 'SELECT /* comment */ a FROM t');
┌─formatQueryFromJSON(parseQueryToJSON('SELECT a FROM t'), 'SELECT /* comment */ a FROM t')─┐
│ SELECT /* comment */ a FROM t                                                             │
└───────────────────────────────────────────────────────────────────────────────────────────┘

formatQueryOrNull

Добавленный в: v23.11.0

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

Синтаксис

formatQueryOrNull(query)

Аргументы

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

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

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

Примеры

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

SELECT formatQuery('select a,    b FRom tab WHERE a > 3 and  b < 3');
SELECT\n    a,\n    b\nFROM tab\nWHERE (a > 3) AND (b < 3)

formatQuerySingleLine

Добавленный в: v23.10.0

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

Синтаксис

formatQuerySingleLine(query)

Аргументы

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

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

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

Примеры

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

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

formatQuerySingleLineOrNull

Добавленный в: v23.11.0

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

Синтаксис

formatQuerySingleLineOrNull(query)

Аргументы

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

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

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

Примеры

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

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

formatReadableDecimalSize

Добавленный в: v22.11.0

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

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

Синтаксис

formatReadableDecimalSize(value[, precision])

Аргументы

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

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

Примеры

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

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

С указанием точности

SELECT
    formatReadableDecimalSize(192851925, 0) AS no_decimals,
    formatReadableDecimalSize(192851925, 4) AS four_decimals
┌─no_decimals─┬─four_decimals─┐
│ 193 MB      │ 192.8519 MB   │
└─────────────┴───────────────┘

formatReadableQuantity

Добавленный в: v20.10.0

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

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

Синтаксис

formatReadableQuantity(value[, precision])

Аргументы

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

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

Примеры

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

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

С указанием точности

SELECT
    formatReadableQuantity(98765432101234, 0) AS no_decimals,
    formatReadableQuantity(98765432101234, 4) AS four_decimals
┌─no_decimals─┬─four_decimals────┐
│ 99 trillion │ 98.7654 trillion │
└─────────────┴──────────────────┘

formatReadableSize

Добавленный в: v1.1.0

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

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

Синтаксис

formatReadableSize(value[, precision])

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

Аргументы

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

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

Примеры

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

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

С указанием точности

SELECT
    formatReadableSize(192851925, 0) AS no_decimals,
    formatReadableSize(192851925, 4) AS four_decimals
┌─no_decimals─┬─four_decimals─┐
│ 184 MiB     │ 183.9179 MiB  │
└─────────────┴───────────────┘

formatReadableTimeDelta

Добавленный в: v20.12.0

Для временного интервала (delta) в секундах или выражения INTERVAL эта функция возвращает строковое представление временной дельты в year/month/day/hour/minute/second/millisecond/microsecond/nanosecond.

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

Когда передаётся выражение INTERVAL, его значение преобразуется в секунды. Единицы INTERVAL MONTH и больше (MONTH, QUARTER, YEAR) не поддерживаются, так как они не представляют собой интервал фиксированной длины в секундах.

Синтаксис

formatReadableTimeDelta(column[, maximum_unit, minimum_unit])

Аргументы

  • column — Столбец с числовой дельтой времени или выражением INTERVAL. Единицы INTERVAL MONTH и больше не поддерживаются. Float64 или Interval
  • maximum_unit — Необязательный параметр. Максимальная единица, которую нужно отображать. Допустимые значения: nanoseconds, microseconds, milliseconds, seconds, minutes, hours, days, months, years. Значение по умолчанию: years. const String
  • minimum_unit — Необязательный параметр. Минимальная единица, которую нужно отображать. Все меньшие единицы отбрасываются. Допустимые значения: nanoseconds, microseconds, milliseconds, seconds, minutes, hours, days, months, years. Если явно указанное значение больше maximum_unit, будет сгенерировано исключение. Значение по умолчанию: seconds, если maximum_unit равен seconds или больше, в противном случае — nanoseconds. const String

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

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

Примеры

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

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

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

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

С использованием выражения INTERVAL

SELECT formatReadableTimeDelta(INTERVAL 12345 SECOND) AS time_delta
┌─time_delta─────────────────────────┐
│ 3 hours, 25 minutes and 45 seconds │
└────────────────────────────────────┘

fuzzQuery

Добавленный в: v26.2.0

Разбирает указанную строку запроса и применяет к ней случайные мутации AST (фаззинг). Возвращает полученный в результате фаззинга запрос в виде строки. Недетерминирована: каждый вызов может возвращать разный результат. Требует allow_fuzz_query_functions = 1.

Синтаксис

fuzzQuery(query)

Аргументы

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

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

Строка запроса после фаззинга String

Примеры

базовый

SET allow_fuzz_query_functions = 1; SELECT fuzzQuery('SELECT 1');

generateRandomStructure

Добавленный в: v23.5.0

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

Синтаксис

generateRandomStructure([number_of_columns, seed])

Аргументы

  • number_of_columns — Требуемое количество столбцов в итоговой структуре таблицы. Если задано значение 0 или Null, число столбцов будет случайным — от 1 до 128. Значение по умолчанию: Null. 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\' = -123, \'c2V1\' = 94, \'c2V2\' = -105, \'c2V3\' = 67), c3 Nullable(UInt8), c4 String, c5 Nested(e1 IPv4, e2 UInt8, e3 UInt16, e4 UInt16, e5 Int32, e6 Map(Date, Decimal256(71))), c6 UInt32, c7 Bool, c8 Float64

generateSerialID

Добавленный в: v25.1.0

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

Синтаксис

generateSerialID(series_identifier[, start_value])

Аргументы

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

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

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

Примеры

первый вызов

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

второй вызов

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

обращение к столбцу

CREATE TABLE test_table (CounterID UInt32, UserID UInt32, ver UInt32) ENGINE = Memory;
INSERT INTO test_table VALUES (1, 3, 3), (1, 1, 1), (1, 2, 2), (1, 5, 5), (1, 4, 4);

SELECT *, generateSerialID('id1') FROM test_table
┌─CounterID─┬─UserID─┬─ver─┬─generateSerialID('id1')─┐
│         1 │      3 │   3 │                       2 │
│         1 │      1 │   1 │                       3 │
│         1 │      2 │   2 │                       4 │
│         1 │      5 │   5 │                       5 │
│         1 │      4 │   4 │                       6 │
└───────────┴────────┴─────┴─────────────────────────┘

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

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

со начальным значением — второй вызов

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

getClientHTTPHeader

Добавленный в: v24.5.0

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

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

getClientHTTPHeader читает заголовки текущего запроса, поэтому возвращает непустое значение только в том случае, если запрос отправлен через HTTP-интерфейс. Например, передайте заголовок вместе с запросом и прочитайте его обратно через HTTP:

echo "SELECT getClientHTTPHeader('Content-Type') SETTINGS allow_get_client_http_header = 1" | \
    curl 'http://localhost:8123/' --data-binary @- -H 'Content-Type: application/x-www-form-urlencoded'

Приведённая выше команда возвращает application/x-www-form-urlencoded.

Синтаксис

getClientHTTPHeader(name)

Аргументы

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

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

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

Примеры

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

-- Over a non-HTTP interface (such as `clickhouse-client` or `clickhouse-local`) there are
-- no request headers, so the function returns an empty string. See the description above
-- for an HTTP example that returns the actual header value.
SELECT getClientHTTPHeader('Content-Type') SETTINGS allow_get_client_http_header = 1

getMacro

Добавленный в: v20.1.0

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

Синтаксис

getMacro(name)

Аргументы

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

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

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

Примеры

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

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

getMaxTableNameLengthForDatabase

Добавленный в: v25.1.0

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

Синтаксис

getMaxTableNameLengthForDatabase(database_name)

Аргументы

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

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

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

Примеры

обычный

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

getMergeTreeSetting

Добавленный в: v25.6.0

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

Синтаксис

getMergeTreeSetting(setting_name)

Аргументы

  • setting_name — Название настройки. String

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

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

Примеры

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

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

getOSKernelVersion

Добавленный в: v21.11.0

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

Синтаксис

getOSKernelVersion()

Аргументы

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

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

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

Примеры

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

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

getServerPort

Добавленный в: v21.10.0

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

Синтаксис

getServerPort(port_name)

Аргументы

  • port_name — Название порта. String

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

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

Примеры

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

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

getServerSetting

Добавленный в: v25.6.0

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

Синтаксис

getServerSetting(setting_name')

Аргументы

  • setting_name — Название настройки сервера. String

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

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

Примеры

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

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

getSetting

Добавленный в: v20.7.0

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

Синтаксис

getSetting(setting_name)

Аргументы

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

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

Примеры

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

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

getSettingOrDefault

Добавленный в: v24.10.0

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

Синтаксис

getSettingOrDefault(setting_name, default_value)

Аргументы

  • setting_name — Имя настройки. 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
\N

getSizeOfEnumType

Добавленный в: v1.1.0

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

Синтаксис

getSizeOfEnumType(x)

Аргументы

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

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

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

Примеры

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

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

getSubcolumn

Добавленный в: v23.3.0

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

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

Синтаксис

getSubcolumn(nested_value, subcolumn_name)

Аргументы

  • Нет.

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

Примеры

getSubcolumn

SELECT getSubcolumn(array_col, 'size0'), getSubcolumn(tuple_col, 'elem_name')
FROM values('array_col Array(UInt32), tuple_col Tuple(elem_name String)', ([1, 2, 3], tuple('abc')));
┌─getSubcolumn(array_col, 'size0')─┬─getSubcolumn(tuple_col, 'elem_name')─┐
│                                3 │ abc                                  │
└──────────────────────────────────┴──────────────────────────────────────┘

getTypeSerializationStreams

Добавленный в: v22.6.0

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

Синтаксис

getTypeSerializationStreams(col)

Аргументы

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

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

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

Примеры

tuple

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

map

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

globalVariable

Добавленный в: v20.5.0

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

Синтаксис

globalVariable(name)

Аргументы

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

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

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

Примеры

globalVariable

SELECT globalVariable('max_allowed_packet')
67108864

hasColumnInTable

Добавленный в: v1.1.0

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

Синтаксис

hasColumnInTable(database, table, column)

Аргументы

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

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

Примеры

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

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

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

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

hasThreadFuzzer

Добавленный в: v20.6.0

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

Синтаксис

hasThreadFuzzer()

Аргументы

  • Нет.

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

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

Примеры

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

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

highlightQuery

Добавленный в: v26.5.0

Разбирает строку запроса ClickHouse SQL и возвращает массив диапазонов для подсветки синтаксиса. Каждый диапазон представляет собой именованный кортеж с начальной позицией (в байтах), конечной позицией и типом подсветки. Типы подсветки описывают синтаксическую роль фрагмента (ключевое слово, идентификатор, функция и т. д.) и могут использоваться для назначения цветов в интерфейсе. Внутри строковых шаблонов LIKE и REGEXP метасимволы и символы экранирования подсвечиваются отдельно.

Синтаксис

highlightQuery(query)

Аргументы

  • query — Строка запроса ClickHouse SQL. String.

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

Массив именованных кортежей (begin UInt64, end UInt64, type Enum8(...)), представляющих выделенные диапазоны. Array(Tuple(begin UInt64, end UInt64, type Enum8(...)))

Примеры

простой

SELECT highlightQuery('SELECT 1')
[(0,6,'keyword'),(7,8,'number')]

hostName

Добавленный в: v20.5.0

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

Синтаксис

hostName()

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

Аргументы

  • Нет.

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

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

Примеры

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

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

icebergBucket

Добавленный в: v25.5.0

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

Синтаксис

icebergBucket(N, value)

Аргументы

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

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

Примеры

Пример

SELECT icebergBucket(5, 1.0 :: Float32)
4

icebergTruncate

Добавленный в: v25.3.0

Реализует логику 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.0

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

Синтаксис

identity(x)

Аргументы

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

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

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

Примеры

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

SELECT identity(42)
42

ignore

Добавленный в: v1.1.0

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

Синтаксис

ignore(x)

Аргументы

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

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

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

Примеры

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

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

indexHint

Добавленный в: v1.1.0

Эта функция предназначена для отладки и интроспекции. Она игнорирует свой аргумент и всегда возвращает 1. Аргументы не вычисляются.

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

Объяснение

Когда вы выполняете:

SELECT * FROM test WHERE key = 123;

ClickHouse делает две вещи:

  1. Использует индекс, чтобы определить, какие гранулы (блоки примерно по 8192 строк) могут содержать key = 123
  2. Читает эти гранулы и построчно фильтрует их, чтобы вернуть только строки, где key = 123

Поэтому, даже если с диска считываются 8 192 строки, возвращается только 1 строка, которая действительно соответствует условию.

С indexHint, когда вы выполняете:

SELECT * FROM test WHERE indexHint(key = 123);

ClickHouse делает только одно:

  1. Использует индекс, чтобы определить, какие гранулы могут содержать key = 123, и возвращает все строки из этих гранул без фильтрации.

Возвращаются все 8 192 строки, включая строки, где key = 456, key = 789 и т. д. (То есть всё, что оказалось сохранено в той же грануле.) indexHint() предназначен не для повышения производительности. Он нужен для отладки и понимания того, как работает индекс ClickHouse:

  • Какие гранулы выбирает моё условие?
  • Сколько строк находится в этих гранулах?
  • Эффективно ли используется мой индекс?

Примечание: Оптимизировать запрос с помощью функции indexHint невозможно. Функция indexHint не оптимизирует запрос, поскольку не предоставляет никакой дополнительной информации для анализа запроса. Наличие выражения внутри функции indexHint ничем не лучше, чем его отсутствие. Функцию indexHint можно использовать только для интроспекции и отладки, и она не повышает производительность. Если вы видите, что indexHint использует кто-либо, кроме участников ClickHouse, скорее всего, это ошибка, и его следует удалить.

Синтаксис

indexHint(expression)

Аргументы

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

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

Во всех случаях возвращает 1. UInt8

Примеры

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

-- `index_granularity` is lowered to 8 here only to keep the example small enough to follow.
-- Do not change it in production: the default of 8192 is what makes the index sparse and cheap,
-- and a small value makes the index large and slows queries down.
CREATE TABLE ontime (FlightDate Date, Carrier String)
ENGINE = MergeTree ORDER BY FlightDate
SETTINGS index_granularity = 8;

-- Ten flights on each of four days, so a granule of eight rows spans more than one day.
INSERT INTO ontime SELECT toDate('2025-09-14') + intDiv(number, 10), 'AA' FROM numbers(40);

-- The granules that hold the rows of 2025-09-15 also hold rows of the neighbouring days,
-- and `indexHint` returns all of them.
SELECT FlightDate AS k, count() FROM ontime WHERE indexHint(k = '2025-09-15') GROUP BY k ORDER BY k ASC;
┌──────────k─┬─count()─┐
│ 2025-09-14 │       2 │
│ 2025-09-15 │      10 │
│ 2025-09-16 │       4 │
└────────────┴─────────┘

initialQueryID

Добавленный в: v1.1.0

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

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

Синтаксис

initialQueryID()

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

Аргументы

  • Нет.

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

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

Примеры

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

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

initialQueryStartTime

Добавленный в: v25.4.0

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

Синтаксис

initialQueryStartTime()

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

Аргументы

  • Нет.

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

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

Примеры

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

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

initializeAggregation

Добавленный в: v20.6.0

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

Синтаксис

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

Аргументы

  • aggregate_function — Имя агрегатной функции, которую нужно инициализировать. 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.0

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

Синтаксис

isConstant(x)

Аргументы

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

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

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

Примеры

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

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

Константа с функцией

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

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

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

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

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

isDecimalOverflow

Добавленный в: v20.8.0

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

Синтаксис

isDecimalOverflow(value[, precision])

Аргументы

  • value — Проверяемое значение типа Decimal. 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.0

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

Синтаксис

joinGet(join_storage_table_name, value_column, join_keys)

Аргументы

  • join_storage_table_name — Идентификатор, указывающий, где выполнять поиск. Идентификатор ищется в базе данных по умолчанию (см. параметр default_database в файле конфигурации). Чтобы переопределить базу данных по умолчанию, используйте запрос USE database_name или укажите базу данных и таблицу через точку, например database_name.table_name. String
  • value_column — Имя столбца таблицы, содержащего необходимые данные. const String
  • join_keys — Список ключей JOIN. Any

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

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

Примеры

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

CREATE TABLE id_val(`id` UInt32, `val` UInt32) ENGINE = Join(ANY, LEFT, id);
INSERT INTO id_val VALUES (1,11)(2,12)(4,13);

SELECT joinGet(id_val, 'val', toUInt32(1));
┌─joinGet('id_val', 'val', toUInt32(1))─┐
│                                    11 │
└───────────────────────────────────────┘

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

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

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

CREATE TABLE some_table (id1 UInt32, id2 UInt32, name String) ENGINE = Join(ANY, LEFT, id1, id2);
INSERT INTO some_table VALUES (1, 11, 'a') (2, 12, 'b') (3, 13, 'c');

SELECT joinGet(some_table, 'name', toUInt32(1), toUInt32(11));
┌─joinGet('some_table', 'name', toUInt32(1), toUInt32(11))─┐
│ a                                                        │
└──────────────────────────────────────────────────────────┘

joinGetOrNull

Добавленный в: v20.4.0

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

Синтаксис

joinGetOrNull(join_storage_table_name, value_column, join_keys)

Аргументы

  • join_storage_table_name — Идентификатор, указывающий, где выполнять поиск. Поиск по идентификатору выполняется в базе данных по умолчанию (см. параметр default_database в файле конфигурации). Чтобы переопределить базу данных по умолчанию, используйте запрос USE database_name или укажите базу данных и таблицу через точку, например database_name.table_name. String
  • value_column — Имя столбца таблицы, содержащего необходимые данные. const String
  • join_keys — Список ключей JOIN. Any

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

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

Примеры

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

CREATE TABLE id_val(`id` UInt32, `val` UInt32) ENGINE = Join(ANY, LEFT, id);
INSERT INTO id_val VALUES (1,11)(2,12)(4,13);

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

lowCardinalityIndices

Добавленный в: v18.12.0

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

Синтаксис

lowCardinalityIndices(col)

Аргументы

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

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

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

Примеры

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

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

-- create two parts:

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

-- the order the blocks are read in is not defined, so sort the result to make it reproducible:

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

lowCardinalityKeys

Добавленный в: v18.12.0

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

Синтаксис

lowCardinalityKeys(col)

Аргументы

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

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

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

Примеры

lowCardinalityKeys

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

-- create two parts:

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

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

materialize

Добавленный в: v1.1.0

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

Синтаксис

materialize(x)

Аргументы

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

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

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

Примеры

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

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

SELECT countMatches('foobarfoo', 'foo');
2

Преобразование константы в полный столбец

SELECT countMatches('foobarfoo', materialize('foo'));
Received exception:
Code: 44. DB::Exception: A value of illegal type was provided as 2nd argument 'pattern' to function 'countMatches'. Expected: constant String, got: String. (ILLEGAL_COLUMN)

minSampleSizeContinuous

Добавленный в: v23.10.0

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

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

Синтаксис

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

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

Аргументы

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

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

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

Примеры

minSampleSizeContinuous

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

minSampleSizeConversion

Добавленный в: v22.6.0

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

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

Синтаксис

minSampleSizeConversion(baseline, mde, power, alpha)

Аргументы

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

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

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

Примеры

minSampleSizeConversion

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

neighbor

Добавленный в: v20.1.0

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

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

Синтаксис

neighbor(column, offset[, default_value])

Аргументы

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

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

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

Примеры

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

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

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

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

normalizeQuery

Добавленный в: v20.8.0

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

Синтаксис

normalizeQuery(x)

Аргументы

  • x — Строка символов. String

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

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

Примеры

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

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

normalizeQueryKeepNames

Добавленный в: v21.2.0

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

Синтаксис

normalizeQueryKeepNames(x)

Аргументы

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

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

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

Примеры

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

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

normalizedQueryHash

Добавленный в: v20.8.0

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

Синтаксис

normalizedQueryHash(x)

Аргументы

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

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

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

Примеры

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

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

normalizedQueryHashKeepNames

Добавленный в: v21.2.0

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

Синтаксис

normalizedQueryHashKeepNames(x)

Аргументы

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

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

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

Примеры

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

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

obfuscateQuery

Добавленный в: v26.4.0

Позволяет обфусцировать SQL-запрос, заменяя идентификаторы случайными словами, а литералы — случайными значениями, при этом сохраняя структуру запроса.

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

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

Возможности:

  • Заменяет имена таблиц, имена столбцов и псевдонимы случайными словами
  • Заменяет числовые и строковые литералы случайными значениями
  • Сохраняет общую структуру запроса и синтаксис SQL
  • Выдаёт разные результаты для разных строк

Синтаксис

obfuscateQuery(query[, tag])

Аргументы

  • query — SQL-запрос, который нужно обфусцировать. String
  • tag — Необязательно. Значение, которое позволяет предотвратить устранение общих подвыражений, если один и тот же вызов функции используется несколько раз.

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

Обфусцированный запрос, в котором идентификаторы и литералы заменены, а исходная структура запроса сохранена. String

Примеры

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

SELECT obfuscateQuery('SELECT name, age FROM users WHERE age > 30')
SELECT fruit, number FROM table WHERE number > 12

С тегом для предотвращения устранения общих подвыражений

SELECT obfuscateQuery('SELECT * FROM t', 1), obfuscateQuery('SELECT * FROM t', 2)
SELECT a FROM b, SELECT c FROM d

Для разных строк результаты различаются

SELECT obfuscateQuery('SELECT 1') AS a, obfuscateQuery('SELECT 1') AS b
SELECT 1	SELECT 1

obfuscateQueryWithSeed

Добавленный в: v26.4.0

Обфусцирует SQL-запрос с использованием указанного seed, обеспечивая детерминированные результаты.

В отличие от obfuscateQuery(), эта функция выдает детерминированные результаты при использовании одного и того же seed. Это полезно, когда требуется согласованная обфускация в нескольких запусках или когда нужно воспроизвести один и тот же обфусцированный запрос для тестирования или отладки.

Возможности:

  • Детерминированная обфускация на основе указанного seed
  • Один и тот же seed всегда дает один и тот же обфусцированный результат
  • Разные seed дают разные результаты
  • Сохраняет структуру запроса, как и obfuscateQuery()

Сценарии использования:

  • Воспроизводимые тестовые сценарии
  • Согласованная анонимизация в нескольких запусках
  • Отладка с согласованно обфусцированными запросами

Синтаксис

obfuscateQueryWithSeed(query, seed)

Аргументы

  • query — SQL-запрос для обфускации. String
  • seed — seed для обфускации. Один и тот же seed даёт детерминированные результаты. Integer или String

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

Обфусцированный запрос, детерминированно сгенерированный на основе указанного seed. String

Примеры

Детерминированная обфускация с целочисленным seed

SELECT obfuscateQueryWithSeed('SELECT name FROM users', 42)
SELECT name FROM users

Детерминированная обфускация со строковым значением seed

SELECT obfuscateQueryWithSeed('SELECT id, value FROM data', 'myseed')
SELECT id, value FROM data

Одинаковый seed даёт одинаковый результат

SELECT obfuscateQueryWithSeed('SELECT 1', 100) = obfuscateQueryWithSeed('SELECT 1', 100)
1

parseQueryToJSON

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

Разбирает строку SQL-запроса в AST (абстрактное синтаксическое дерево) и возвращает JSON-представление этого дерева. Полученный JSON можно передать в formatQueryFromJSON для восстановления SQL-запроса или напрямую отправить на сервер, указав значение clickhouse_json для настройки dialect (при включённой настройке enable_json_ast_dialect).

Это полезно для инструментов, которым необходимо программно анализировать или преобразовывать запросы, минуя грамматику SQL.

Не для каждого SQL-запроса можно получить точное JSON-представление. Запросы, содержащие данные, которые невозможно воспроизвести в JSON-форме (например, встроенные данные INSERT ... VALUES / INSERT ... FORMAT), а также типы узлов AST, для которых ещё не реализована JSON-сериализация, отклоняются с ошибкой BAD_ARGUMENTS, вместо создания JSON, который formatQueryFromJSON не сможет прочитать обратно.

Ограничения разбора (max_query_size, max_parser_depth, max_parser_backtracks) берутся из текущих настроек сеанса.

Синтаксис

parseQueryToJSON(sql)

Аргументы

  • sql — строка SQL-запроса для разбора. String

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

JSON-строка, представляющая AST. String

Примеры

Простой SELECT

SELECT formatQueryFromJSON(parseQueryToJSON('SELECT 1'));
┌─formatQueryFromJSON(parseQueryToJSON('SELECT 1'))─┐
│ SELECT 1                                          │
└───────────────────────────────────────────────────┘

parseReadableSize

Добавленный в: v24.6.0

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

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

Синтаксис

parseReadableSize(x)

Аргументы

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

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

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

Примеры

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

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

parseReadableSizeOrNull

Добавленный в: v24.6.0

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

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

Синтаксис

parseReadableSizeOrNull(x)

Аргументы

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

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

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

Примеры

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

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

parseReadableSizeOrZero

Добавленный в: v24.6.0

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

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

Синтаксис

parseReadableSizeOrZero(x)

Аргументы

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

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

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

Примеры

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

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

parseTimeDelta

Добавленный в: v22.7.0

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

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

  • years, year, yr, 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.0

Вычисляет идентификатор партиции.

Синтаксис

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

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

Аргументы

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

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

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

Примеры

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

DROP TABLE IF EXISTS tab;

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

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

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

pgGetUserById

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

Функция совместимости с протоколом PostgreSQL, аналог pg_catalog.pg_get_userbyid. Клиенты PostgreSQL (например, команда \d в psql) используют её для отображения владельца таблицы. ClickHouse не отслеживает владельцев таблиц, поэтому функция игнорирует аргумент и возвращает имя текущего пользователя.

Синтаксис

pgGetUserById(oid)

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

Аргументы

  • oid — идентификатор объекта роли. Значение игнорируется. UInt32

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

Возвращает имя текущего пользователя. String

Примеры

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

SELECT pg_get_userbyid(10)
┌─pg_get_userbyid(10)─┐
│ default             │
└─────────────────────┘

pgTableIsVisible

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

Функция совместимости с протоколом PostgreSQL, аналог pg_catalog.pg_table_is_visible. Клиенты PostgreSQL (например, команда \d в psql) используют её для фильтрации таблиц, видимых в пути поиска. Поскольку эмулируемое ClickHouse представление pg_class содержит только таблицы текущей базы данных, все они видимы, поэтому функция всегда возвращает 1.

Синтаксис

pgTableIsVisible(oid)

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

Аргументы

  • oid — идентификатор объекта таблицы, предоставляемый эмулируемым представлением pg_class. Значение игнорируется. UInt32

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

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

Примеры

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

SELECT pg_table_is_visible(0)
┌─pg_table_is_visible(0)─┐
│                      1 │
└────────────────────────┘

queryID

Добавленный в: v21.9.0

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

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

Синтаксис

queryID()

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

Аргументы

  • Нет.

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

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

Примеры

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

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

revision

Добавленный в: v22.7.0

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

Синтаксис

revision()

Аргументы

  • Нет.

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

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

Примеры

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

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

rowNumberInAllBlocks

Добавленный в: v1.1.0

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

Синтаксис

rowNumberInAllBlocks()

Аргументы

  • None.

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

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

Примеры

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

-- The data is processed in blocks of two rows: rowNumberInBlock restarts from 0 in every block,
-- while rowNumberInAllBlocks keeps counting across them.
SELECT
    number,
    rowNumberInBlock(),
    rowNumberInAllBlocks()
FROM system.numbers
LIMIT 6
SETTINGS max_block_size = 2
┌─number─┬─rowNumberInBlock()─┬─rowNumberInAllBlocks()─┐
│      0 │                  0 │                      0 │
│      1 │                  1 │                      1 │
│      2 │                  0 │                      2 │
│      3 │                  1 │                      3 │
│      4 │                  0 │                      4 │
│      5 │                  1 │                      5 │
└────────┴────────────────────┴────────────────────────┘

rowNumberInBlock

Добавленный в: v1.1.0

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

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

Синтаксис

rowNumberInBlock()

Аргументы

  • Нет.

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

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

Примеры

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

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

runningAccumulate

Добавленный в: v1.1.0

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

Синтаксис

runningAccumulate(agg_state[, grouping])

Аргументы

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

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

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

Примеры

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

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

runningConcurrency

Добавленный в: v21.3.0

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

Синтаксис

runningConcurrency(start, end)

Аргументы

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

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

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

Примеры

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

CREATE TABLE example_table (start Date, end Date) ENGINE = Memory;
INSERT INTO example_table VALUES ('2025-03-03', '2025-03-11'), ('2025-03-06', '2025-03-08'), ('2025-03-07', '2025-03-09'), ('2025-03-11', '2025-03-12');

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

runningDifference

Добавленный в: v1.1.0

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

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

Синтаксис

runningDifference(x)

Аргументы

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

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

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

Примеры

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

SET allow_deprecated_error_prone_window_functions = 1;

CREATE TABLE events
(
    EventID UInt32,
    EventDate Date,
    EventTime DateTime
)
ENGINE = Memory;

INSERT INTO events VALUES
    (1106, '2025-11-24', '2025-11-24 00:00:04'),
    (1107, '2025-11-24', '2025-11-24 00:00:05'),
    (1108, '2025-11-24', '2025-11-24 00:00:05'),
    (1109, '2025-11-24', '2025-11-24 00:00:09'),
    (1110, '2025-11-24', '2025-11-24 00:00:10');

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

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

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

runningDifferenceStartingWithFirstValue

Добавленный в: v1.1.0

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

Синтаксис

runningDifferenceStartingWithFirstValue(x)

Аргументы

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

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

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

Примеры

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

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

serverUUID

Добавленный в: v20.1.0

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

Синтаксис

serverUUID()

Аргументы

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

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

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

Примеры

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

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

shardCount

Добавленный в: v21.9.0

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

Синтаксис

shardCount()

Аргументы

  • None.

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

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

Примеры

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

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

shardNum

Добавленный в: v21.9.0

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

Синтаксис

shardNum()

Аргументы

  • Нет.

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

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

Примеры

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

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

showCertificate

Добавленный в: v22.6.0

Показывает информацию о текущем SSL-сертификате сервера, если он настроен. Возвращает пустой Map, если у сервера нет сертификата, например когда сертификат запрашивается через ACME, но ещё не выпущен. Подробнее о том, как настроить ClickHouse для использования сертификатов OpenSSL для проверки подключений, см. в разделе Настройка TLS.

Синтаксис

showCertificate()

Аргументы

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

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

Возвращает Map с парами ключ-значение, относящимися к настроенному SSL-сертификату. Map(String, String)

Примеры

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

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

sleep

Добавленный в: v1.1.0

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

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

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

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

Синтаксис

sleep(seconds)

Аргументы

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

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

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

Примеры

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

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

sleepEachRow

Добавленный в: v1.1.0

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

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

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

Синтаксис

sleepEachRow(seconds)

Аргументы

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

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

Возвращает 0 для каждой строки. UInt8

Примеры

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

-- The output will be delayed, with a 0.5-second pause between each row.
SELECT number, sleepEachRow(0.5) FROM system.numbers LIMIT 5;
┌─number─┬─sleepEachRow(0.5)─┐
│      0 │                 0 │
│      1 │                 0 │
│      2 │                 0 │
│      3 │                 0 │
│      4 │                 0 │
└────────┴───────────────────┘

structureToCapnProtoSchema

Добавленный в: v23.8.0

Функция, преобразующая структуру таблицы ClickHouse в схему формата CapnProto

Синтаксис

structureToCapnProtoSchema(table_structure, message)

Аргументы

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

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

Примеры

random

SELECT structureToCapnProtoSchema('s String, x UInt32', 'MessageName') format TSVRaw
struct MessageName
{
    s @0 : Data;
    x @1 : UInt32;
}

structureToProtobufSchema

Добавленный в: v23.8.0

Преобразует структуру таблицы ClickHouse в схему в формате Protobuf.

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

Синтаксис

structureToProtobufSchema(structure, message_name)

Аргументы

  • structure — определение структуры таблицы ClickHouse в виде строки (например, 'column1 Type1, column2 Type2'). String
  • message_name — имя типа сообщения Protobuf в сгенерированной схеме. String

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

Возвращает определение схемы Protobuf в синтаксисе proto3, соответствующее входной структуре таблицы ClickHouse. String

Примеры

Преобразование структуры ClickHouse в схему Protobuf

SELECT structureToProtobufSchema('s String, x UInt32', 'MessageName') FORMAT TSVRaw;
syntax = "proto3";

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

tcpPort

Добавленный в: v20.12.0

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

Синтаксис

tcpPort()

Аргументы

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

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

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

Примеры

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

SELECT tcpPort()
┌─tcpPort()─┐
│      9000 │
└───────────┘

throwIf

Добавленный в: v1.1.0

Генерирует исключение, если аргумент x равен true. Чтобы использовать аргумент error_code, должен быть включен параметр конфигурации allow_custom_error_code_in_throw.

Синтаксис

throwIf(x[, message[, error_code]])

Аргументы

  • x — Условие для проверки. Any
  • message — Необязательно. Произвольное сообщение об ошибке. const String
  • error_code — Необязательно. Произвольный код ошибки. const Int8/16/32

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

Возвращает 0, если условие ложно, и генерирует исключение, если условие истинно. UInt8

Примеры

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

SELECT throwIf(number = 3, 'Too many') FROM numbers(10);
Received exception:
Code: 395. DB::Exception: Too many. (FUNCTION_THROW_IF_VALUE_IS_NON_ZERO)

toColumnTypeName

Добавленный в: v1.1.0

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

Синтаксис

toColumnTypeName(value)

Аргументы

  • value — Значение, для которого требуется вернуть внутренний тип данных. Any

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

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

Примеры

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

SELECT toColumnTypeName(CAST('2025-01-01 01:02:03' AS DateTime));
┌─toColumnTypeName(CAST('2025-01-01 01:02:03', 'DateTime'))─┐
│ Const(UInt32)                                             │
└───────────────────────────────────────────────────────────┘

toTypeName

Добавленный в: v1.1.0

Возвращает имя типа переданного аргумента. Если передан NULL, функция возвращает тип Nullable(Nothing), который соответствует внутреннему представлению NULL в ClickHouse.

Синтаксис

toTypeName(x)

Аргументы

  • x — Значение произвольного типа. Any

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

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

Примеры

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

SELECT toTypeName(123)
┌─toTypeName(123)─┐
│ UInt8           │
└─────────────────┘

tokenizeQuery

Добавленный в: v26.5.0

Разбивает строку запроса ClickHouse SQL на токены и возвращает массив токенов. Каждый токен представляет собой именованный кортеж с начальной позицией (в байтах), конечной позицией и типом токена.

Синтаксис

tokenizeQuery(query)

Аргументы

  • query — Строка запроса ClickHouse SQL. String.

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

Массив именованных Tuple (begin UInt64, end UInt64, type Enum8(...)), представляющих токены запроса. Array(Tuple(begin UInt64, end UInt64, type Enum8(...)))

Примеры

простой

SELECT tokenizeQuery('SELECT 1')
[(0,6,'BareWord'),(6,7,'Whitespace'),(7,8,'Number')]

transactionID

Добавленный в: v22.6.0

Экспериментальная возможность
Не поддерживается в ClickHouse Cloud

Возвращает идентификатор транзакции.

Синтаксис

transactionID()

Аргументы

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

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

Возвращает кортеж, состоящий из start_csn, local_tid и host_id.

  • start_csn: Глобальный последовательный номер — самая поздняя временная метка commit, видимая на момент начала этой транзакции.
  • local_tid: Локальный последовательный номер, уникальный для каждой транзакции, начатой этим хостом в рамках конкретного start_csn.
  • host_id: UUID хоста, который начал эту транзакцию. Tuple(UInt64, UInt64, UUID)

Примеры

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

BEGIN TRANSACTION;
SELECT transactionID();
ROLLBACK;
┌─transactionID()────────────────────────────────┐
│ (32,34,'0ee8b069-f2bb-4748-9eae-069c85b5252b') │
└────────────────────────────────────────────────┘

transactionLatestSnapshot

Добавленный в: v22.6.0

Экспериментальная возможность
Не поддерживается в ClickHouse Cloud

Возвращает последний снимок (Commit Sequence Number) транзакции, доступный для чтения.

Синтаксис

transactionLatestSnapshot()

Аргументы

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

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

Возвращает последний снимок (CSN) транзакции. UInt64

Примеры

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

BEGIN TRANSACTION;
SELECT transactionLatestSnapshot();
ROLLBACK;
┌─transactionLatestSnapshot()─┐
│                          32 │
└─────────────────────────────┘

transactionOldestSnapshot

Добавленный в: v22.6.0

Экспериментальная возможность
Не поддерживается в ClickHouse Cloud

Возвращает самый старый снимок (Commit Sequence Number), который виден некоторой выполняющейся транзакции.

Синтаксис

transactionOldestSnapshot()

Аргументы

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

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

Возвращает наиболее ранний снимок (CSN) транзакции. UInt64

Примеры

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

BEGIN TRANSACTION;
SELECT transactionOldestSnapshot();
ROLLBACK;
┌─transactionOldestSnapshot()─┐
│                          32 │
└─────────────────────────────┘

transform

Добавленный в: v1.1.0

Преобразует значение в соответствии с явно заданным сопоставлением одних элементов с другими.

У этой функции есть два варианта:

  • transform(x, array_from, array_to, default) - преобразует x с помощью массивов сопоставления, используя значение по умолчанию для элементов без совпадений
  • transform(x, array_from, array_to) - выполняет то же преобразование, но возвращает исходное x, если совпадение не найдено

Функция ищет x в array_from и возвращает соответствующий элемент из array_to с тем же индексом. Если x не найден в array_from, она возвращает либо значение default (версия с 4 параметрами), либо исходное x (версия с 3 параметрами). Если в array_from есть несколько совпадающих элементов, возвращается элемент, соответствующий первому совпадению.

Требования:

  • array_from и array_to должны содержать одинаковое количество элементов
  • Для версии с 4 параметрами: transform(T, Array(T), Array(U), U) -> U, где T и U могут быть разными совместимыми типами
  • Для версии с 3 параметрами: transform(T, Array(T), Array(T)) -> T, где все типы должны быть одинаковыми

Синтаксис

transform(x, array_from, array_to[, default])

Аргументы

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

Возвращает соответствующее значение из array_to, если x совпадает с элементом в array_from; в противном случае возвращает default (если указан) или x (если default не указан). Any

Примеры

transform(T, Array(T), Array(U), U) -> U

CREATE TABLE hits (SearchEngineID UInt8, Referer String) ENGINE = Memory;

INSERT INTO hits VALUES
    (2, 'http://yandex.ru/search'),
    (2, 'http://yandex.ru/news'),
    (2, 'http://mail.yandex.ru/'),
    (3, 'http://google.ru/search'),
    (4, 'http://duckduckgo.com/'),
    (0, 'http://vkontakte.ru/feed'),
    (0, '');

SELECT
transform(SearchEngineID, [2, 3], ['Yandex', 'Google'], 'Other') AS title,
count() AS c
FROM hits
WHERE SearchEngineID != 0
GROUP BY title
ORDER BY c DESC, title
┌─title──┬─c─┐
│ Yandex │ 3 │
│ Google │ 1 │
│ Other  │ 1 │
└────────┴───┘

transform(T, Array(T), Array(T)) -> T

-- Without a default, a domain that is not listed is returned unchanged.
SELECT
transform(domain(Referer), ['yandex.ru', 'google.ru', 'vkontakte.ru'], ['www.yandex', 'example.com', 'vk.com']) AS s, count() AS c
FROM hits
GROUP BY domain(Referer)
ORDER BY count() DESC, s
LIMIT 10
┌─s──────────────┬─c─┐
│ www.yandex     │ 2 │
│                │ 1 │
│ duckduckgo.com │ 1 │
│ example.com    │ 1 │
│ mail.yandex.ru │ 1 │
│ vk.com         │ 1 │
└────────────────┴───┘

uniqThetaIntersect

Добавленный в: v22.9.0

Два объекта типа uniqThetaSketch используются для вычисления пересечения (операция над множествами ∩); результатом является новый объект типа uniqThetaSketch.

Синтаксис

uniqThetaIntersect(uniqThetaSketch,uniqThetaSketch)

Аргументы

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

Новый uniqThetaSketch, содержащий результат пересечения. UInt64

Примеры

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

SELECT finalizeAggregation(uniqThetaIntersect(a, b)) AS a_intersect_b, finalizeAggregation(a) AS a_cardinality, finalizeAggregation(b) AS b_cardinality
FROM
(SELECT arrayReduce('uniqThetaState', [1, 2]) AS a, arrayReduce('uniqThetaState', [2, 3, 4]) AS b);
┌─a_intersect_b─┬─a_cardinality─┬─b_cardinality─┐
│             1 │             2 │             3 │
└───────────────┴───────────────┴───────────────┘

uniqThetaNot

Добавленный в: v22.9.0

Выполняет вычисление a_not_b над двумя объектами типа uniqThetaSketch (операция над множествами ×); результатом является новый объект типа uniqThetaSketch.

Синтаксис

uniqThetaNot(uniqThetaSketch,uniqThetaSketch)

Аргументы

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

Возвращает новый uniqThetaSketch, содержащий результат a_not_b. UInt64

Примеры

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

SELECT finalizeAggregation(uniqThetaNot(a, b)) AS a_not_b, finalizeAggregation(a) AS a_cardinality, finalizeAggregation(b) AS b_cardinality
FROM
(SELECT arrayReduce('uniqThetaState', [2, 3, 4]) AS a, arrayReduce('uniqThetaState', [1, 2]) AS b);
┌─a_not_b─┬─a_cardinality─┬─b_cardinality─┐
│       2 │             3 │             2 │
└─────────┴───────────────┴───────────────┘

uniqThetaUnion

Добавленный в: v22.9.0

Два объекта типа uniqThetaSketch для вычисления объединения (операция над множествами ∪); результатом является новый объект типа uniqThetaSketch.

Синтаксис

uniqThetaUnion(uniqThetaSketch,uniqThetaSketch)

Аргументы

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

Возвращает новый uniqThetaSketch, содержащий результат объединения. UInt64

Примеры

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

SELECT finalizeAggregation(uniqThetaUnion(a, b)) AS a_union_b, finalizeAggregation(a) AS a_cardinality, finalizeAggregation(b) AS b_cardinality
FROM
(SELECT arrayReduce('uniqThetaState', [1, 2]) AS a, arrayReduce('uniqThetaState', [2, 3, 4]) AS b);
┌─a_union_b─┬─a_cardinality─┬─b_cardinality─┐
│         4 │             2 │             3 │
└───────────┴───────────────┴───────────────┘

uptime

Добавленный в: v1.1.0

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

Синтаксис

uptime()

Аргументы

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

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

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

Примеры

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

SELECT uptime() AS Uptime
┌─Uptime─┐
│  55867 │
└────────┘

variantElement

Добавленный в: v25.2.0

Извлекает из столбца Variant столбец указанного типа.

Синтаксис

variantElement(variant, type_name[, default_value])

Аргументы

  • variant — столбец типа Variant. Variant
  • type_name — имя типа варианта, который нужно извлечь. String
  • default_value — значение по умолчанию, которое будет использоваться, если variant не содержит варианта указанного типа. Может быть любого типа. Необязательный параметр. Any

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

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

Примеры

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

CREATE TABLE test (v Variant(UInt64, String, Array(UInt64))) ENGINE = Memory;
INSERT INTO test VALUES (NULL), (42), ('Hello, World!'), ([1, 2, 3]);
SELECT v, variantElement(v, 'String'), variantElement(v, 'UInt64'), variantElement(v, 'Array(UInt64)') FROM test;
┌─v─────────────┬─variantElement(v, 'String')─┬─variantElement(v, 'UInt64')─┬─variantElement(v, 'Array(UInt64)')─┐
│ ᴺᵁᴸᴸ          │ ᴺᵁᴸᴸ                        │                        ᴺᵁᴸᴸ │ []                                 │
│ 42            │ ᴺᵁᴸᴸ                        │                          42 │ []                                 │
│ Hello, World! │ Hello, World!               │                        ᴺᵁᴸᴸ │ []                                 │
│ [1,2,3]       │ ᴺᵁᴸᴸ                        │                        ᴺᵁᴸᴸ │ [1,2,3]                            │
└───────────────┴─────────────────────────────┴─────────────────────────────┴────────────────────────────────────┘

variantType

Добавленный в: v24.2.0

Возвращает имя типа варианта для каждой строки столбца Variant. Если строка содержит NULL, для неё возвращается значение 'None'.

Синтаксис

variantType(variant)

Аргументы

  • variant — столбец типа Variant. Variant

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

Возвращает столбец Enum, содержащий имя типа варианта для каждой строки. Enum

Примеры

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

CREATE TABLE test (v Variant(UInt64, String, Array(UInt64))) ENGINE = Memory;
INSERT INTO test VALUES (NULL), (42), ('Hello, World!'), ([1, 2, 3]);
SELECT variantType(v) FROM test;
┌─variantType(v)─┐
│ None           │
│ UInt64         │
│ String         │
│ Array(UInt64)  │
└────────────────┘

version

Добавленный в: v1.1.0

Возвращает текущую версию ClickHouse в виде строки в формате: major_version.minor_version.patch_version.number_of_commits_since_the_previous_stable_release. Если функция выполняется в контексте distributed таблицы, она формирует обычный столбец со значениями для каждого сегмента. В противном случае возвращается константное значение.

Синтаксис

version()

Аргументы

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

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

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

Примеры

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

SELECT version()
┌─version()─┐
│ 24.2.1.1  │
└───────────┘

visibleWidth

Добавленный в: v1.1.0

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

Синтаксис

visibleWidth(x)

Аргументы

  • x — Значение любого типа данных. Any

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

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

Примеры

Вычисление отображаемой ширины NULL

SELECT visibleWidth(NULL)
┌─visibleWidth(NULL)─┐
│                  4 │
└────────────────────┘

zookeeperSessionUptime

Добавленный в: v21.11.0

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

Синтаксис

zookeeperSessionUptime()

Аргументы

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

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

Возвращает время непрерывной работы текущего сеанса ZooKeeper в секундах. UInt32

Примеры

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

SELECT zookeeperSessionUptime();
┌─zookeeperSessionUptime()─┐
│                        3 │
└──────────────────────────┘
Navigation