> ## Documentation Index
> Fetch the complete documentation index at: https://private-7c7dfe99-mintlify-8a08bda2.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

> Документация по категории «Прочие функции»

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

export const DeprecatedBadge = () => {
  return <div className="deprecatedBadge">
            <div className="deprecatedIcon">
            <svg width="14" height="10" viewBox="0 0 14 10" fill="none" xmlns="http://www.w3.org/2000/svg">
                <path d="M13 0H1C0.734784 0 0.48043 0.105357 0.292893 0.292893C0.105357 0.48043 0 0.734784 0 1V2.5C0 2.76522 0.105357 3.01957 0.292893 3.20711C0.48043 3.39464 0.734784 3.5 1 3.5V9C1 9.26522 1.10536 9.51957 1.29289 9.70711C1.48043 9.89464 1.73478 10 2 10H12C12.2652 10 12.5196 9.89464 12.7071 9.70711C12.8946 9.51957 13 9.26522 13 9V3.5C13.2652 3.5 13.5196 3.39464 13.7071 3.20711C13.8946 3.01957 14 2.76522 14 2.5V1C14 0.734784 13.8946 0.48043 13.7071 0.292893C13.5196 0.105357 13.2652 0 13 0ZM12 9H2V3.5H12V9ZM13 2.5H1V1H13V2.5ZM5 5.5C5 5.36739 5.05268 5.24021 5.14645 5.14645C5.24021 5.05268 5.36739 5 5.5 5H8.5C8.63261 5 8.75979 5.05268 8.85355 5.14645C8.94732 5.24021 9 5.36739 9 5.5C9 5.63261 8.94732 5.75979 8.85355 5.85355C8.75979 5.94732 8.63261 6 8.5 6H5.5C5.36739 6 5.24021 5.94732 5.14645 5.85355C5.05268 5.75979 5 5.63261 5 5.5Z" fill="currentColor" />
            </svg>
        </div>
            Deprecated feature
        </div>;
};

export const CloudNotSupportedBadge = () => {
  return <div className="cloudNotSupportedBadge">
            <div className="cloudNotSupportedIcon">
            <svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
                <path strokeWidth="1.5" d="M6.33366 12.6666L12.3739 12.6667C13.6593 12.6667 14.7073 11.6187 14.7073 10.3334C14.7073 9.04804 13.6593 8.00003 12.3739 8.00003C12.3739 8.00003 12.3337 7.66659 12.0003 7.33325M10.667 5.33322C8.00033 2.33325 4.45395 4.78537 4.14195 6.68203C2.55728 6.7627 1.29395 8.06203 1.29395 9.6667C1.29395 11.3234 2.66699 12.6666 4.00033 12.6666" stroke="currentColor" strokeLinecap="round" strokeLinejoin="round" />
                <path strokeWidth="1.5" d="M2.66699 14L12.0003 4.66663" stroke="currentColor" strokeLinecap="round" strokeLinejoin="round" />
            </svg>

        </div>
            Not supported in ClickHouse Cloud
        </div>;
};

export const ExperimentalBadge = () => {
  return <div className="experimentalBadge">
            <div className="experimentalIcon">
            <svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
                <path strokeWidth="1.25" d="M5.5 2H10.5" stroke="currentColor" strokeLinecap="round" strokeLinejoin="round" />
                <path strokeWidth="1.25" d="M9.50015 2V6.19625L13.4283 12.7425C13.4738 12.8183 13.4985 12.9049 13.4996 12.9934C13.5008 13.0818 13.4785 13.169 13.435 13.246C13.3914 13.323 13.3283 13.3871 13.2519 13.4317C13.1755 13.4764 13.0886 13.4999 13.0002 13.5H3.00015C2.91164 13.5 2.8247 13.4766 2.74822 13.432C2.67174 13.3874 2.60847 13.3233 2.56487 13.2463C2.52126 13.1693 2.49889 13.082 2.50004 12.9935C2.50119 12.905 2.52582 12.8184 2.5714 12.7425L6.50015 6.19625V2" stroke="currentColor" strokeLinecap="round" strokeLinejoin="round" />
                <path strokeWidth="1.25" d="M4.47656 9.56754C5.30344 9.41254 6.47656 9.47942 7.99969 10.25C10.0153 11.2707 11.4216 11.0569 12.2184 10.7282" stroke="currentColor" strokeLinecap="round" strokeLinejoin="round" />
            </svg>
        </div>
            Experimental feature. <u><a href="/docs/beta-and-experimental-features#experimental-features">Learn more.</a></u>
        </div>;
};

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

{/*AUTOGENERATED_START*/}

<div id="FQDN">
  ## FQDN
</div>

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

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

**Синтаксис**

```sql theme={null}
FQDN()
```

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

**Аргументы**

* Отсутствуют.

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

Возвращает полное доменное имя (FQDN) сервера ClickHouse. [`String`](/ru/reference/data-types/string)

**Примеры**

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

```sql title=Query theme={null}
SELECT fqdn()
```

```response title=Response theme={null}
┌─FQDN()──────────────────────────┐
│ clickhouse.us-east-2.internal │
└─────────────────────────────────┘
```

<div id="MACNumToString">
  ## MACNumToString
</div>

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

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

**Синтаксис**

```sql theme={null}
MACNumToString(num)
```

**Аргументы**

* `num` — число типа UInt64. [`UInt64`](/ru/reference/data-types/int-uint)

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

Возвращает MAC-адрес в формате AA:BB:CC:DD:EE:FF. [`String`](/ru/reference/data-types/string)

**Примеры**

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

```sql title=Query theme={null}
SELECT MACNumToString(149809441867716) AS mac_address;
```

```response title=Response theme={null}
┌─mac_address───────┐
│ 88:00:11:22:33:44 │
└───────────────────┘
```

<div id="MACStringToNum">
  ## MACStringToNum
</div>

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

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

**Синтаксис**

```sql theme={null}
MACStringToNum(s)
```

**Аргументы**

* `s` — строка MAC-адреса. [`String`](/ru/reference/data-types/string)

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

Возвращает число типа UInt64. [`UInt64`](/ru/reference/data-types/int-uint)

**Примеры**

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

```sql title=Query theme={null}
SELECT MACStringToNum('01:02:03:04:05:06') AS mac_numeric;
```

```response title=Response theme={null}
1108152157446
```

<div id="MACStringToOUI">
  ## MACStringToOUI
</div>

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

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

**Синтаксис**

```sql theme={null}
MACStringToOUI(s)
```

**Аргументы**

* `s` — строка MAC-адреса. [`String`](/ru/reference/data-types/string)

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

Первые три октета в виде числа типа UInt64. [`UInt64`](/ru/reference/data-types/int-uint)

**Примеры**

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

```sql title=Query theme={null}
SELECT MACStringToOUI('00:50:56:12:34:56') AS oui;
```

```response title=Response theme={null}
20566
```

<div id="authenticatedUser">
  ## authenticatedUser
</div>

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

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

**Синтаксис**

```sql theme={null}
authenticatedUser()
```

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

**Аргументы**

* Нет.

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

Имя прошедшего аутентификацию пользователя. [`String`](/ru/reference/data-types/string)

**Примеры**

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

```sql title=Query theme={null}
EXECUTE as u1;
            SELECT currentUser(), authenticatedUser();
```

```response title=Response theme={null}
┌─currentUser()─┬─authenticatedUser()─┐
│ u1            │ default             │
└───────────────┴─────────────────────┘
```

<div id="bar">
  ## bar
</div>

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

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

**Синтаксис**

```sql theme={null}
bar(x, min, max[, width])
```

**Аргументы**

* `x` — Отображаемое значение. [`(U)Int*`](/ru/reference/data-types/int-uint) или [`Float*`](/ru/reference/data-types/float) или [`Decimal`](/ru/reference/data-types/decimal)
* `min` — Минимальное значение. [`(U)Int*`](/ru/reference/data-types/int-uint) или [`Float*`](/ru/reference/data-types/float) или [`Decimal`](/ru/reference/data-types/decimal)
* `max` — Максимальное значение. [`(U)Int*`](/ru/reference/data-types/int-uint) или [`Float*`](/ru/reference/data-types/float) или [`Decimal`](/ru/reference/data-types/decimal)
* `width` — Необязательный параметр. Ширина полосы в символах. Значение по умолчанию — `80`. [`const (U)Int*`](/ru/reference/data-types/int-uint) или [`const Float*`](/ru/reference/data-types/float) или [`const Decimal`](/ru/reference/data-types/decimal)

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

Возвращает строку с полосой в стиле Unicode-арт. [`String`](/ru/reference/data-types/string)

**Примеры**

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

```sql title=Query theme={null}
SELECT
toHour(EventTime) AS h,
count() AS c,
bar(c, 0, 600000, 20) AS bar
FROM test.hits
GROUP BY h
ORDER BY h ASC
```

```response title=Response theme={null}
┌──h─┬──────c─┬─bar────────────────┐
│  0 │ 292907 │ █████████▋         │
│  1 │ 180563 │ ██████             │
│  2 │ 114861 │ ███▋               │
│  3 │  85069 │ ██▋                │
│  4 │  68543 │ ██▎                │
│  5 │  78116 │ ██▌                │
│  6 │ 113474 │ ███▋               │
│  7 │ 170678 │ █████▋             │
│  8 │ 278380 │ █████████▎         │
│  9 │ 391053 │ █████████████      │
│ 10 │ 457681 │ ███████████████▎   │
│ 11 │ 493667 │ ████████████████▍  │
│ 12 │ 509641 │ ████████████████▊  │
│ 13 │ 522947 │ █████████████████▍ │
│ 14 │ 539954 │ █████████████████▊ │
│ 15 │ 528460 │ █████████████████▌ │
│ 16 │ 539201 │ █████████████████▊ │
│ 17 │ 523539 │ █████████████████▍ │
│ 18 │ 506467 │ ████████████████▊  │
│ 19 │ 520915 │ █████████████████▎ │
│ 20 │ 521665 │ █████████████████▍ │
│ 21 │ 542078 │ ██████████████████ │
│ 22 │ 493642 │ ████████████████▍  │
│ 23 │ 400397 │ █████████████▎     │
└────┴────────┴────────────────────┘
```

<div id="blockNumber">
  ## blockNumber
</div>

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

Возвращает монотонно возрастающий порядковый номер [блока](/ru/resources/develop-contribute/introduction/architecture#block), содержащего строку.
Возвращаемый номер блока обновляется по мере возможности, поэтому он может быть не совсем точным.

**Синтаксис**

```sql theme={null}
blockNumber()
```

**Аргументы**

* Отсутствуют.

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

Порядковый номер блока данных, в котором находится строка. [`UInt64`](/ru/reference/data-types/int-uint)

**Примеры**

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

```sql title=Query theme={null}
SELECT blockNumber()
FROM
(
    SELECT *
    FROM system.numbers
    LIMIT 10
) SETTINGS max_block_size = 2
```

```response title=Response theme={null}
┌─blockNumber()─┐
│             7 │
│             7 │
└───────────────┘
┌─blockNumber()─┐
│             8 │
│             8 │
└───────────────┘
┌─blockNumber()─┐
│             9 │
│             9 │
└───────────────┘
┌─blockNumber()─┐
│            10 │
│            10 │
└───────────────┘
┌─blockNumber()─┐
│            11 │
│            11 │
└───────────────┘
```

<div id="blockSerializedSize">
  ## blockSerializedSize
</div>

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

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

**Синтаксис**

```sql theme={null}
blockSerializedSize(x1[, x2[, ...]])
```

**Аргументы**

* `x1[, x2, ...]` — Любое количество значений, для которых нужно получить размер блока в несжатом виде. [`Any`](/ru/reference/data-types)

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

Возвращает число байтов, которое будет записано на диск для блока значений без сжатия. [`UInt64`](/ru/reference/data-types/int-uint)

**Примеры**

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

```sql title=Query theme={null}
SELECT blockSerializedSize(maxState(1)) AS x;
```

```response title=Response theme={null}
┌─x─┐
│ 2 │
└───┘
```

<div id="blockSize">
  ## blockSize
</div>

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

В ClickHouse запросы обрабатываются [блоками](/ru/resources/develop-contribute/introduction/architecture#block) (фрагментами).
Эта функция возвращает размер блока (количество строк), в котором она вызвана.

**Синтаксис**

```sql theme={null}
blockSize()
```

**Аргументы**

* Отсутствуют.

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

Возвращает количество строк в текущем блоке. [`UInt64`](/ru/reference/data-types/int-uint)

**Примеры**

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

```sql title=Query theme={null}
SELECT blockSize()
FROM system.numbers LIMIT 5
```

```response title=Response theme={null}
┌─blockSize()─┐
│           5 │
│           5 │
│           5 │
│           5 │
│           5 │
└─────────────┘
```

<div id="buildId">
  ## buildId
</div>

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

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

**Синтаксис**

```sql theme={null}
buildId()
```

**Аргументы**

* Отсутствуют.

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

Возвращает идентификатор сборки. [`String`](/ru/reference/data-types/string)

**Примеры**

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

```sql title=Query theme={null}
SELECT buildId()
```

```response title=Response theme={null}
┌─buildId()────────────────────────────────┐
│ AB668BEF095FAA6BD26537F197AC2AF48A927FB4 │
└──────────────────────────────────────────┘
```

<div id="byteSize">
  ## byteSize
</div>

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

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

**Синтаксис**

```sql theme={null}
byteSize(arg1[, arg2, ...])
```

**Аргументы**

* `arg1[, arg2, ...]` — Значения любого типа данных, для которых требуется оценить размер в байтах в несжатом виде. [`Any`](/ru/reference/data-types)

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

Возвращает оценку размера аргументов в памяти в байтах. [`UInt64`](/ru/reference/data-types/int-uint)

**Примеры**

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

```sql title=Query theme={null}
SELECT byteSize('string')
```

```response title=Response theme={null}
┌─byteSize('string')─┐
│                 15 │
└────────────────────┘
```

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

```sql title=Query theme={null}
SELECT byteSize(NULL, 1, 0.3, '')
```

```response title=Response theme={null}
┌─byteSize(NULL, 1, 0.3, '')─┐
│                         19 │
└────────────────────────────┘
```

<div id="catboostEvaluate">
  ## catboostEvaluate
</div>

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

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

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

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

Перед оценкой моделей CatBoost необходимо, чтобы библиотека `libcatboostmodel.<so|dylib>` была доступна. См. [документацию CatBoost](https://catboost.ai/docs/concepts/c-plus-plus-api_dynamic-c-pluplus-wrapper.html), чтобы узнать, как ее скомпилировать.

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

```xml theme={null}
<clickhouse>
...
    <catboost_lib_path>/path/to/libcatboostmodel.so</catboost_lib_path>
...
</clickhouse>
```

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

```xml theme={null}
<library_bridge>
    <port>9019</port>
</library_bridge>
```

2. Обучите модель CatBoost с использованием libcatboost

См. раздел [Обучение и применение моделей](https://catboost.ai/docs/features/training.html#training), чтобы узнать, как обучать модели CatBoost на обучающем наборе данных.

**Синтаксис**

```sql theme={null}
catboostEvaluate(path_to_model, feature_1[, feature_2, ..., feature_n])
```

**Аргументы**

* `path_to_model` — Путь к модели CatBoost. [`const String`](/ru/reference/data-types/string)
* `feature` — Один или несколько признаков (аргументов) модели. [`Float*`](/ru/reference/data-types/float)

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

Возвращает результат оценки модели. [`Float64`](/ru/reference/data-types/float)

**Примеры**

**catboostEvaluate**

```sql title=Query theme={null}
SELECT catboostEvaluate('/root/occupy.bin', Temperature, Humidity, Light, CO2, HumidityRatio) AS prediction FROM occupancy LIMIT 1
```

```response title=Response theme={null}
4.695691092573497
```

<div id="colorOKLABToSRGB">
  ## colorOKLABToSRGB
</div>

Добавленный в: 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](https://developer.mozilla.org/en-US/docs/Web/CSS/Reference/Values/color\&#95;value/oklab)
.

**Синтаксис**

```sql theme={null}
colorOKLABToSRGB(tuple [, gamma])
```

**Аргументы**

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

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

Возвращает кортеж (R, G, B), представляющий значения цвета в sRGB. [`Tuple(Float64, Float64, Float64)`](/ru/reference/data-types/tuple)

**Примеры**

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

```sql title=Query theme={null}
SELECT colorOKLABToSRGB((0.4466, 0.0991, 0.44)) AS rgb;
```

```response title=Response theme={null}
┌─rgb──────────────────────┐
│ (198.07056923258935,0,0) │
└──────────────────────────┘
```

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

```sql title=Query theme={null}
WITH colorOKLABToSRGB((0.7, 0.1, 0.54)) AS t
SELECT tuple(toUInt8(t.1), toUInt8(t.2), toUInt8(t.3)) AS RGB;
```

```response title=Response theme={null}
┌─RGB──────────┐
│ (255,0,0)    │
└──────────────┘
```

<div id="colorOKLCHToSRGB">
  ## colorOKLCHToSRGB
</div>

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

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

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

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

Преобразование обратно [`colorSRGBToOKLCH`](#colorSRGBToOKLCH):

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

Второй аргумент gamma используется на последнем этапе.

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

**Синтаксис**

```sql theme={null}
colorOKLCHToSRGB(tuple [, gamma])
```

**Аргументы**

* `tuple` — Кортеж из трёх числовых значений `L`, `C`, `H`, где `L` находится в диапазоне `[0...1]`, `C >= 0`, а `H` — в диапазоне `[0...360]`. [`Tuple(Float64, Float64, Float64)`](/ru/reference/data-types/tuple)
* `gamma` — Необязательный параметр. Показатель степени, используемый для преобразования линейного sRGB обратно в sRGB по формуле `(x ^ (1 / gamma)) * 255` для каждого канала `x`. Значение по умолчанию — `2.2`. [`Float64`](/ru/reference/data-types/float)

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

Возвращает кортеж (R, G, B), представляющий значения цвета в sRGB. [`Tuple(Float64, Float64, Float64)`](/ru/reference/data-types/tuple)

**Примеры**

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

```sql title=Query theme={null}
SELECT colorOKLCHToSRGB((0.6, 0.12, 40)) AS rgb;
```

```response title=Response theme={null}
┌─rgb───────────────────────────────────────────────────────┐
│ (186.02058688365264,100.68677189684993,71.67819977081575) │
└───────────────────────────────────────────────────────────┘
```

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

```sql title=Query theme={null}
WITH colorOKLCHToSRGB((0.6, 0.12, 40)) AS t
SELECT tuple(toUInt8(t.1), toUInt8(t.2), toUInt8(t.3)) AS RGB;
```

```response title=Response theme={null}
┌─RGB──────────┐
│ (186,100,71) │
└──────────────┘
```

<div id="colorSRGBToOKLAB">
  ## colorSRGBToOKLAB
</div>

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

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

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

<Note>
  **OKLAB** — это перцептуально равномерное цветовое пространство.
  Его три координаты: `L` (светлота в диапазоне `[0...1]`), `a (Green-Red axis)` и `b (Blue-Yellow axis)`.
  OKLab спроектировано так, чтобы оставаться перцептуально равномерным и при этом требовать минимум вычислений.
</Note>

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

1. из sRGB в линейный sRGB
   2\) из линейного sRGB в OKLab

**Синтаксис**

```sql theme={null}
colorSRGBToOKLAB(tuple[, gamma])
```

**Аргументы**

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

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

Возвращает кортеж (L, a, b), представляющий значения в цветовом пространстве OKLAB. [`Tuple(Float64, Float64, Float64)`](/ru/reference/data-types/tuple)

**Примеры**

**Преобразование sRGB в OKLAB**

```sql title=Query theme={null}
SELECT colorSRGBToOKLAB((128, 64, 32), 2.2) AS lab;
```

```response title=Response theme={null}
┌─lab──────────────────────────────────────────────────────────┐
│ (0.4436238384931984,0.07266246769242975,0.07500108778529994) │
└──────────────────────────────────────────────────────────────┘
```

<div id="colorSRGBToOKLCH">
  ## colorSRGBToOKLCH
</div>

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

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

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

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

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

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

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

**Синтаксис**

```sql theme={null}
colorSRGBToOKLCH(tuple[, gamma])
```

**Аргументы**

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

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

Возвращает кортеж (L, C, H), содержащий значения в цветовом пространстве OKLCH. [`Tuple(Float64, Float64, Float64)`](/ru/reference/data-types/tuple)

**Примеры**

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

```sql title=Query theme={null}
SELECT colorSRGBToOKLCH((128, 64, 32), 2.2) AS lch;
```

```response title=Response theme={null}
┌─lch───────────────────────────────────────────────────────┐
│ (0.4436238384931984,0.1044269954567863,45.90734548193018) │
└───────────────────────────────────────────────────────────┘
```

<div id="connectionId">
  ## connectionId
</div>

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

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

**Синтаксис**

```sql theme={null}
connectionId()
```

**Аргументы**

* Отсутствуют.

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

Возвращает идентификатор соединения текущего клиента. [`UInt64`](/ru/reference/data-types/int-uint)

**Примеры**

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

```sql title=Query theme={null}
SELECT connectionId();
```

```response title=Response theme={null}
┌─connectionId()─┐
│              0 │
└────────────────┘
```

<div id="countDigits">
  ## countDigits
</div>

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

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

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

  Например:

  * `countDigits(42) = 2`
  * `countDigits(42.000) = 5`
  * `countDigits(0.04200) = 4`
</Note>

<Tip>
  Переполнение Decimal для `Decimal64` можно проверить с помощью `countDigits(x) > 18`,
  хотя это медленнее, чем [`isDecimalOverflow`](#isDecimalOverflow).
</Tip>

**Синтаксис**

```sql theme={null}
countDigits(x)
```

**Аргументы**

* `x` — Целое или десятичное число. [`(U)Int*`](/ru/reference/data-types/int-uint) или [`Decimal`](/ru/reference/data-types/decimal)

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

Возвращает количество цифр, необходимое для представления числа `x`. [`UInt8`](/ru/reference/data-types/int-uint)

**Примеры**

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

```sql title=Query theme={null}
SELECT countDigits(toDecimal32(1, 9)), countDigits(toDecimal32(-1, 9)),
       countDigits(toDecimal64(1, 18)), countDigits(toDecimal64(-1, 18)),
       countDigits(toDecimal128(1, 38)), countDigits(toDecimal128(-1, 38));
```

```response title=Response theme={null}
┌─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 │
└────────────────────────────────┴─────────────────────────────────┴─────────────────────────────────┴──────────────────────────────────┴──────────────────────────────────┴───────────────────────────────────┘
```

<div id="currentDatabase">
  ## currentDatabase
</div>

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

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

См. также [оператор `SET`](/ru/reference/statements/use).

**Синтаксис**

```sql theme={null}
currentDatabase()
```

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

**Аргументы**

* None.

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

Возвращает имя текущей базы данных. [`String`](/ru/reference/data-types/string)

**Примеры**

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

```sql title=Query theme={null}
SELECT currentDatabase()
```

```response title=Response theme={null}
┌─currentDatabase()─┐
│ default           │
└───────────────────┘
```

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

```sql title=Query theme={null}
SELECT CURRENT_DATABASE
```

```response title=Response theme={null}
┌─CURRENT_DATABASE─┐
│ default          │
└──────────────────┘
```

<div id="currentProfiles">
  ## currentProfiles
</div>

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

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

**Синтаксис**

```sql theme={null}
currentProfiles()
```

**Аргументы**

* Отсутствуют.

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

Возвращает массив профилей настроек для текущего пользователя. [`Array(String)`](/ru/reference/data-types/array)

**Примеры**

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

```sql title=Query theme={null}
SELECT currentProfiles();
```

```response title=Response theme={null}
┌─currentProfiles()─────────────────────────────┐
│ ['default', 'readonly_user', 'web_analytics'] │
└───────────────────────────────────────────────┘
```

<div id="currentQueryID">
  ## currentQueryID
</div>

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

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

**Синтаксис**

```sql theme={null}
currentQueryID()
```

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

**Аргументы**

* Отсутствуют.

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

**Примеры**

**Пример**

```sql title=Query theme={null}
SELECT currentQueryID();
```

```response title=Response theme={null}
┌─currentQueryID()─────────────────────┐
│ 1280d0e8-1a08-4524-be6e-77975bb68e7d │
└──────────────────────────────────────┘
```

<div id="currentRoles">
  ## currentRoles
</div>

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

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

**Синтаксис**

```sql theme={null}
currentRoles()
```

**Аргументы**

* Отсутствуют.

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

Возвращает массив ролей, назначенных текущему пользователю. [`Array(String)`](/ru/reference/data-types/array)

**Примеры**

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

```sql title=Query theme={null}
SELECT currentRoles();
```

```response title=Response theme={null}
┌─currentRoles()─────────────────────────────────┐
│ ['sql-console-role:jane.smith@clickhouse.com'] │
└────────────────────────────────────────────────┘
```

<div id="currentSchemas">
  ## currentSchemas
</div>

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

То же, что и функция [`currentDatabase`](#currentDatabase), но:

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

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

См. также [оператор `SET`](/ru/reference/statements/use).

**Синтаксис**

```sql theme={null}
currentSchemas(bool)
```

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

**Аргументы**

* `bool` — Логическое значение, которое игнорируется. [`Bool`](/ru/reference/data-types/boolean)

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

Возвращает массив из одного элемента с именем текущей базы данных. [`Array(String)`](/ru/reference/data-types/array)

**Примеры**

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

```sql title=Query theme={null}
SELECT currentSchemas(true)
```

```response title=Response theme={null}
┌─currentSchemas(true)─┐
│ ['default']          │
└──────────────────────┘
```

<div id="currentUser">
  ## currentUser
</div>

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

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

**Синтаксис**

```sql theme={null}
currentUser()
```

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

**Аргументы**

* None.

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

Возвращает имя текущего пользователя или логин пользователя, который инициировал запрос. [`String`](/ru/reference/data-types/string)

**Примеры**

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

```sql title=Query theme={null}
SELECT currentUser()
```

```response title=Response theme={null}
┌─currentUser()─┐
│ default       │
└───────────────┘
```

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

```sql title=Query theme={null}
SELECT CURRENT_USER
```

```response title=Response theme={null}
┌─CURRENT_USER─┐
│ default      │
└──────────────┘
```

<div id="defaultProfiles">
  ## defaultProfiles
</div>

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

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

**Синтаксис**

```sql theme={null}
defaultProfiles()
```

**Аргументы**

* Отсутствуют.

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

Возвращает массив имён профилей настроек, используемых по умолчанию для текущего пользователя. [`Array(String)`](/ru/reference/data-types/array)

**Примеры**

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

```sql title=Query theme={null}
SELECT defaultProfiles();
```

```response title=Response theme={null}
┌─defaultProfiles()─┐
│ ['default']       │
└───────────────────┘
```

<div id="defaultRoles">
  ## defaultRoles
</div>

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

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

**Синтаксис**

```sql theme={null}
defaultRoles()
```

**Аргументы**

* Нет.

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

Возвращает массив ролей по умолчанию для текущего пользователя. [`Array(String)`](/ru/reference/data-types/array)

**Примеры**

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

```sql title=Query theme={null}
SELECT defaultRoles();
```

```response title=Response theme={null}
┌─defaultRoles()─────────────────────────────────┐
│ ['sql-console-role:jane.smith@clickhouse.com'] │
└────────────────────────────────────────────────┘
```

<div id="defaultValueOfArgumentType">
  ## defaultValueOfArgumentType
</div>

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

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

**Синтаксис**

```sql theme={null}
defaultValueOfArgumentType(expression)
```

**Аргументы**

* `expression` — значение произвольного типа или выражение, результатом которого является значение произвольного типа. [`Any`](/ru/reference/data-types)

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

Возвращает `0` для чисел, пустую строку для строк или `NULL` для типа Nullable. [`UInt8`](/ru/reference/data-types/int-uint) или [`String`](/ru/reference/data-types/string) или [`NULL`](/ru/reference/syntax#null)

**Примеры**

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

```sql title=Query theme={null}
SELECT defaultValueOfArgumentType(CAST(1 AS Int8));
```

```response title=Response theme={null}
┌─defaultValueOfArgumentType(CAST(1, 'Int8'))─┐
│                                           0 │
└─────────────────────────────────────────────┘
```

**Пример Nullable**

```sql title=Query theme={null}
SELECT defaultValueOfArgumentType(CAST(1 AS Nullable(Int8)));
```

```response title=Response theme={null}
┌─defaultValueOfArgumentType(CAST(1, 'Nullable(Int8)'))─┐
│                                                  ᴺᵁᴸᴸ │
└───────────────────────────────────────────────────────┘
```

<div id="defaultValueOfTypeName">
  ## defaultValueOfTypeName
</div>

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

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

**Синтаксис**

```sql theme={null}
defaultValueOfTypeName(type)
```

**Аргументы**

* `type` — Строка с именем типа. [`String`](/ru/reference/data-types/string)

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

Возвращает значение по умолчанию для указанного имени типа: `0` для чисел, пустую строку для строк или `NULL` для Nullable [`UInt8`](/ru/reference/data-types/int-uint) или [`String`](/ru/reference/data-types/string) или [`NULL`](/ru/reference/syntax#null)

**Примеры**

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

```sql title=Query theme={null}
SELECT defaultValueOfTypeName('Int8');
```

```response title=Response theme={null}
┌─defaultValueOfTypeName('Int8')─┐
│                              0 │
└────────────────────────────────┘
```

**Пример Nullable**

```sql title=Query theme={null}
SELECT defaultValueOfTypeName('Nullable(Int8)');
```

```response title=Response theme={null}
┌─defaultValueOfTypeName('Nullable(Int8)')─┐
│                                     ᴺᵁᴸᴸ │
└──────────────────────────────────────────┘
```

<div id="displayName">
  ## displayName
</div>

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

Возвращает значение `display_name` из [конфигурации](/ru/concepts/features/configuration/server-config/configuration-files) или полное доменное имя (FQDN) сервера, если оно не задано.

**Синтаксис**

```sql theme={null}
displayName()
```

**Аргументы**

* Отсутствуют.

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

Возвращает значение `display_name` из config или FQDN сервера, если оно не задано. [`String`](/ru/reference/data-types/string)

**Примеры**

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

```sql title=Query theme={null}
SELECT displayName();
```

```response title=Response theme={null}
┌─displayName()─┐
│ production    │
└───────────────┘
```

<div id="dumpColumnStructure">
  ## dumpColumnStructure
</div>

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

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

**Синтаксис**

```sql theme={null}
dumpColumnStructure(x)
```

**Аргументы**

* `x` — Значение, для которого требуется получить описание. [`Any`](/ru/reference/data-types)

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

Возвращает описание структуры столбца, используемой для представления этого значения. [`String`](/ru/reference/data-types/string)

**Примеры**

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

```sql title=Query theme={null}
SELECT dumpColumnStructure(CAST('2018-01-01 01:02:03', 'DateTime'));
```

```response title=Response theme={null}
┌─dumpColumnStructure(CAST('2018-01-01 01:02:03', 'DateTime'))─┐
│ DateTime, Const(size = 1, UInt32(size = 1))                  │
└──────────────────────────────────────────────────────────────┘
```

<div id="enabledProfiles">
  ## enabledProfiles
</div>

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

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

**Синтаксис**

```sql theme={null}
enabledProfiles()
```

**Аргументы**

* Нет.

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

Возвращает массив имен профилей настроек, включенных для текущего пользователя. [`Array(String)`](/ru/reference/data-types/array)

**Примеры**

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

```sql title=Query theme={null}
SELECT enabledProfiles();
```

```response title=Response theme={null}
┌─enabledProfiles()─────────────────────────────────────────────────┐
│ ['default', 'readonly_user', 'web_analytics', 'batch_processing'] │
└───────────────────────────────────────────────────────────────────┘
```

<div id="enabledRoles">
  ## enabledRoles
</div>

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

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

**Синтаксис**

```sql theme={null}
enabledRoles()
```

**Аргументы**

* Нет.

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

Возвращает массив имён ролей, включённых для текущего пользователя. [`Array(String)`](/ru/reference/data-types/array)

**Примеры**

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

```sql title=Query theme={null}
SELECT enabledRoles();
```

```response title=Response theme={null}
┌─enabledRoles()─────────────────────────────────────────────────┐
│ ['general_data', 'sql-console-role:jane.smith@clickhouse.com'] │
└────────────────────────────────────────────────────────────────┘
```

<div id="errorCodeToName">
  ## errorCodeToName
</div>

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

Возвращает текстовое название числового кода ошибки ClickHouse.
Соответствие между числовыми кодами ошибок и их названиями доступно [здесь](https://github.com/ClickHouse/ClickHouse/blob/master/src/Common/ErrorCodes.cpp).

**Синтаксис**

```sql theme={null}
errorCodeToName(error_code)
```

**Аргументы**

* `error_code` — код ошибки ClickHouse. [`(U)Int*`](/ru/reference/data-types/int-uint) or [`Float*`](/ru/reference/data-types/float) or [`Decimal`](/ru/reference/data-types/decimal)

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

Возвращает текстовое название `error_code`. [`String`](/ru/reference/data-types/string)

**Примеры**

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

```sql title=Query theme={null}
SELECT errorCodeToName(252);
```

```response title=Response theme={null}
┌─errorCodeToName(252)─┐
│ TOO_MANY_PARTS       │
└──────────────────────┘
```

<div id="file">
  ## file
</div>

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

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

См. также табличную функцию [`file`](/ru/reference/functions/table-functions/file).

**Синтаксис**

```sql theme={null}
file(path[, default])
```

**Аргументы**

* `path` — Путь к файлу относительно `user_files_path`. Поддерживаются подстановочные шаблоны `*`, `**`, `?`, `{abc,def}` и `{N..M}`, где `N` и `M` — числа, а `'abc'` и `'def'` — строки. [`String`](/ru/reference/data-types/string)
* `default` — Значение, которое возвращается, если файл не существует или к нему нет доступа. [`String`](/ru/reference/data-types/string) или [`NULL`](/ru/reference/syntax#null)

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

Возвращает содержимое файла в виде строки. [`String`](/ru/reference/data-types/string)

**Примеры**

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

```sql title=Query theme={null}
INSERT INTO table SELECT file('a.txt'), file('b.txt');
```

```response title=Response theme={null}
```

<div id="filesystemAvailable">
  ## filesystemAvailable
</div>

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

Возвращает объём свободного места в файловой системе, где хранится постоянное хранилище базы данных.
Возвращаемое значение всегда меньше общего объёма свободного места ([`filesystemUnreserved`](/ru/reference/functions/regular-functions/other-functions#filesystemUnreserved)), поскольку часть пространства зарезервирована для операционной системы.

**Синтаксис**

```sql theme={null}
filesystemAvailable([disk_name])
```

**Аргументы**

* `disk_name` — Необязательный параметр. Имя диска, для которого нужно определить объём свободного места. Если не указано, используется диск по умолчанию. [`String`](/ru/reference/data-types/string) или [`FixedString`](/ru/reference/data-types/fixedstring)

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

Возвращает объём оставшегося свободного места в байтах. [`UInt64`](/ru/reference/data-types/int-uint)

**Примеры**

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

```sql title=Query theme={null}
SELECT formatReadableSize(filesystemAvailable()) AS "Available space";
```

```response title=Response theme={null}
┌─Available space─┐
│ 30.75 GiB       │
└─────────────────┘
```

<div id="filesystemCapacity">
  ## filesystemCapacity
</div>

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

Возвращает объём файловой системы в байтах.
Требуется настроить [path](/ru/reference/settings/server-settings/settings#path) к каталогу данных.

**Синтаксис**

```sql theme={null}
filesystemCapacity([disk_name])
```

**Аргументы**

* `disk_name` — Необязательный. Имя диска, для которого нужно получить объём. Если не указано, используется диск по умолчанию. [`String`](/ru/reference/data-types/string) или [`FixedString`](/ru/reference/data-types/fixedstring)

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

Возвращает объём файловой системы в байтах. [`UInt64`](/ru/reference/data-types/int-uint)

**Примеры**

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

```sql title=Query theme={null}
SELECT formatReadableSize(filesystemCapacity()) AS "Capacity";
```

```response title=Response theme={null}
┌─Capacity──┐
│ 39.32 GiB │
└───────────┘
```

<div id="filesystemUnreserved">
  ## filesystemUnreserved
</div>

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

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

**Синтаксис**

```sql theme={null}
filesystemUnreserved([disk_name])
```

**Аргументы**

* `disk_name` — Необязательный. Имя диска, для которого нужно определить общий объём свободного места. Если не указано, используется диск по умолчанию. [`String`](/ru/reference/data-types/string) или [`FixedString`](/ru/reference/data-types/fixedstring)

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

Возвращает объём свободного места в байтах. [`UInt64`](/ru/reference/data-types/int-uint)

**Примеры**

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

```sql title=Query theme={null}
SELECT formatReadableSize(filesystemUnreserved()) AS "Free space";
```

```response title=Response theme={null}
┌─Free space─┐
│ 32.39 GiB  │
└────────────┘
```

<div id="finalizeAggregation">
  ## finalizeAggregation
</div>

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

Для состояния агрегации эта функция возвращает результат агрегации (или финализированное состояние при использовании комбинатора [-State](/ru/reference/functions/aggregate-functions/combinators#-state)).

**Синтаксис**

```sql theme={null}
finalizeAggregation(state)
```

**Аргументы**

* `state` — Состояние агрегации. [`AggregateFunction`](/ru/reference/data-types/aggregatefunction)

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

Возвращает окончательный результат агрегации. [`Any`](/ru/reference/data-types)

**Примеры**

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

```sql title=Query theme={null}
SELECT finalizeAggregation(arrayReduce('maxState', [1, 2, 3]));
```

```response title=Response theme={null}
┌─finalizeAggregation(arrayReduce('maxState', [1, 2, 3]))─┐
│                                                       3 │
└─────────────────────────────────────────────────────────┘
```

**Вместе с initializeAggregation**

```sql title=Query theme={null}
WITH initializeAggregation('sumState', number) AS one_row_sum_state
SELECT
    number,
    finalizeAggregation(one_row_sum_state) AS one_row_sum,
    runningAccumulate(one_row_sum_state) AS cumulative_sum
FROM numbers(5);
```

```response title=Response theme={null}
┌─number─┬─one_row_sum─┬─cumulative_sum─┐
│      0 │           0 │              0 │
│      1 │           1 │              1 │
│      2 │           2 │              3 │
│      3 │           3 │              6 │
│      4 │           4 │             10 │
└────────┴─────────────┴────────────────┘
```

<div id="flipCoordinates">
  ## flipCoordinates
</div>

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

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

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

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

**Синтаксис**

```sql theme={null}
flipCoordinates(geometry)
```

**Аргументы**

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

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

Геометрия с переставленными координатами. Возвращаемый тип соответствует входному типу. [`Point`](/ru/reference/data-types/geo#point) или [`Ring`](/ru/reference/data-types/geo#ring) или [`Polygon`](/ru/reference/data-types/geo#polygon) или [`MultiPolygon`](/ru/reference/data-types/geo#multipolygon) или [`LineString`](/ru/reference/data-types/geo#linestring) или [`MultiLineString`](/ru/reference/data-types/geo#multilinestring) или [`Geometry`](/ru/reference/data-types/geo)

**Примеры**

**basic\_point**

```sql title=Query theme={null}
SELECT flipCoordinates((1.0, 2.0));
```

```response title=Response theme={null}
(2.0, 1.0)
```

**ring**

```sql title=Query theme={null}
SELECT flipCoordinates([(1.0, 2.0), (3.0, 4.0)]);
```

```response title=Response theme={null}
[(2.0, 1.0), (4.0, 3.0)]
```

**polygon**

```sql title=Query theme={null}
SELECT flipCoordinates([[(1.0, 2.0), (3.0, 4.0)], [(5.0, 6.0), (7.0, 8.0)]]);
```

```response title=Response theme={null}
[[(2.0, 1.0), (4.0, 3.0)], [(6.0, 5.0), (8.0, 7.0)]]
```

**geometry\_wkt**

```sql title=Query theme={null}
SELECT flipCoordinates(readWkt('POINT(10 20)'));
```

```response title=Response theme={null}
(20, 10)
```

**geometry\_polygon\_wkt**

```sql title=Query theme={null}
SELECT flipCoordinates(readWkt('POLYGON((0 0, 5 0, 5 5, 0 5, 0 0))'));
```

```response title=Response theme={null}
[[(0, 0), (0, 5), (5, 5), (5, 0), (0, 0)]]
```

<div id="formatQuery">
  ## formatQuery
</div>

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

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

**Синтаксис**

```sql theme={null}
formatQuery(query)
```

**Аргументы**

* `query` — SQL-запрос, который требуется отформатировать. [String](/ru/reference/data-types/string)

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

Отформатированный запрос [`String`](/ru/reference/data-types/string)

**Примеры**

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

```sql title=Query theme={null}
SELECT formatQuery('select a,    b FRom tab WHERE a > 3 and  b < 3');
```

```response title=Response theme={null}
SELECT
    a,
    b
FROM tab
WHERE (a > 3) AND (b < 3)
```

<div id="formatQueryOrNull">
  ## formatQueryOrNull
</div>

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

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

**Синтаксис**

```sql theme={null}
formatQueryOrNull(query)
```

**Аргументы**

* `query` — SQL-запрос для форматирования. [String](/ru/reference/data-types/string)

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

Отформатированный запрос [`String`](/ru/reference/data-types/string)

**Примеры**

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

```sql title=Query theme={null}
SELECT formatQuery('select a,    b FRom tab WHERE a > 3 and  b < 3');
```

```response title=Response theme={null}
SELECT
    a,
    b
FROM tab
WHERE (a > 3) AND (b < 3)
```

<div id="formatQuerySingleLine">
  ## formatQuerySingleLine
</div>

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

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

**Синтаксис**

```sql theme={null}
formatQuerySingleLine(query)
```

**Аргументы**

* `query` — SQL-запрос, который нужно отформатировать. [String](/ru/reference/data-types/string)

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

Отформатированный запрос [`String`](/ru/reference/data-types/string)

**Примеры**

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

```sql title=Query theme={null}
SELECT formatQuerySingleLine('select a,    b FRom tab WHERE a > 3 and  b < 3');
```

```response title=Response theme={null}
SELECT a, b FROM tab WHERE (a > 3) AND (b < 3)
```

<div id="formatQuerySingleLineOrNull">
  ## formatQuerySingleLineOrNull
</div>

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

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

**Синтаксис**

```sql theme={null}
formatQuerySingleLineOrNull(query)
```

**Аргументы**

* `query` — SQL-запрос, который нужно отформатировать. [`String`](/ru/reference/data-types/string)

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

Отформатированный запрос [`String`](/ru/reference/data-types/string)

**Примеры**

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

```sql title=Query theme={null}
SELECT formatQuerySingleLine('select a,    b FRom tab WHERE a > 3 and  b < 3');
```

```response title=Response theme={null}
SELECT a, b FROM tab WHERE (a > 3) AND (b < 3)
```

<div id="formatReadableDecimalSize">
  ## formatReadableDecimalSize
</div>

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

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

Обратной операцией для этой функции является [`parseReadableSize`](#parseReadableSize).

**Синтаксис**

```sql theme={null}
formatReadableDecimalSize(x)
```

**Аргументы**

* `x` — Размер в байтах. [`UInt64`](/ru/reference/data-types/int-uint)

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

Возвращает округлённый размер в удобочитаемом виде с суффиксом в виде строки. [`String`](/ru/reference/data-types/string)

**Примеры**

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

```sql title=Query theme={null}
SELECT
    arrayJoin([1, 1024, 1024*1024, 192851925]) AS filesize_bytes,
    formatReadableDecimalSize(filesize_bytes) AS filesize
```

```response title=Response theme={null}
┌─filesize_bytes─┬─filesize───┐
│              1 │ 1.00 B     │
│           1024 │ 1.02 KB    │
│        1048576 │ 1.05 MB    │
│      192851925 │ 192.85 MB  │
└────────────────┴────────────┘
```

<div id="formatReadableQuantity">
  ## formatReadableQuantity
</div>

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

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

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

**Синтаксис**

```sql theme={null}
formatReadableQuantity(x)
```

**Аргументы**

* `x` — число для форматирования. [`UInt64`](/ru/reference/data-types/int-uint)

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

Возвращает округлённое число с суффиксом в виде строки. [`String`](/ru/reference/data-types/string)

**Примеры**

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

```sql title=Query theme={null}
SELECT
    arrayJoin([1024, 1234 * 1000, (4567 * 1000) * 1000, 98765432101234]) AS number,
    formatReadableQuantity(number) AS number_for_humans
```

```response title=Response theme={null}
┌─────────number─┬─number_for_humans─┐
│           1024 │ 1.02 thousand     │
│        1234000 │ 1.23 million      │
│     4567000000 │ 4.57 billion      │
│ 98765432101234 │ 98.77 trillion    │
└────────────────┴───────────────────┘
```

<div id="formatReadableSize">
  ## formatReadableSize
</div>

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

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

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

**Синтаксис**

```sql theme={null}
formatReadableSize(x)
```

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

**Аргументы**

* `x` — Размер в байтах. [`UInt64`](/ru/reference/data-types/int-uint)

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

Возвращает округлённый размер с суффиксом в удобочитаемом виде в виде строки. [`String`](/ru/reference/data-types/string)

**Примеры**

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

```sql title=Query theme={null}
SELECT
    arrayJoin([1, 1024, 1024*1024, 192851925]) AS filesize_bytes,
    formatReadableSize(filesize_bytes) AS filesize
```

```response title=Response theme={null}
┌─filesize_bytes─┬─filesize───┐
│              1 │ 1.00 B     │
│           1024 │ 1.00 KiB   │
│        1048576 │ 1.00 MiB   │
│      192851925 │ 183.92 MiB │
└────────────────┴────────────┘
```

<div id="formatReadableTimeDelta">
  ## formatReadableTimeDelta
</div>

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

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

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

**Синтаксис**

```sql theme={null}
formatReadableTimeDelta(column[, maximum_unit, minimum_unit])
```

**Аргументы**

* `column` — Столбец с числовой дельтой времени. [`Float64`](/ru/reference/data-types/float)
* `maximum_unit` — Необязательный параметр. Максимальная единица, которую нужно отображать. Допустимые значения: `nanoseconds`, `microseconds`, `milliseconds`, `seconds`, `minutes`, `hours`, `days`, `months`, `years`. Значение по умолчанию: `years`. [`const String`](/ru/reference/data-types/string)
* `minimum_unit` — Необязательный параметр. Минимальная единица, которую нужно отображать. Все меньшие единицы отбрасываются. Допустимые значения: `nanoseconds`, `microseconds`, `milliseconds`, `seconds`, `minutes`, `hours`, `days`, `months`, `years`. Если явно указанное значение больше `maximum_unit`, будет сгенерировано исключение. Значение по умолчанию: `seconds`, если `maximum_unit` равен `seconds` или больше, в противном случае — `nanoseconds`. [`const String`](/ru/reference/data-types/string)

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

Возвращает дельту времени в виде строки. [`String`](/ru/reference/data-types/string)

**Примеры**

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

```sql title=Query theme={null}
SELECT
    arrayJoin([100, 12345, 432546534]) AS elapsed,
    formatReadableTimeDelta(elapsed) AS time_delta
```

```response title=Response theme={null}
┌────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│
└────────────┴────────────────────────────────────────────────────────────────┘
```

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

```sql title=Query theme={null}
SELECT
    arrayJoin([100, 12345, 432546534]) AS elapsed,
    formatReadableTimeDelta(elapsed, 'minutes') AS time_delta
```

```response title=Response theme={null}
┌────elapsed─┬─time_delta─────────────────────────────────────────────────────┐
│        100 │ 1 minute and 40 seconds                                         │
│      12345 │ 205 minutes and 45 seconds                                      │
│  432546534 │ 7209108 minutes and 54 seconds                                  │
└────────────┴─────────────────────────────────────────────────────────────────┘
```

<div id="fuzzQuery">
  ## fuzzQuery
</div>

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

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

**Синтаксис**

```sql theme={null}
fuzzQuery(query)
```

**Аргументы**

* `query` — SQL-запрос для фаззинга. [String](/ru/reference/data-types/string)

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

Строка запроса после фаззинга [`String`](/ru/reference/data-types/string)

**Примеры**

**базовый**

```sql title=Query theme={null}
SET allow_fuzz_query_functions = 1; SELECT fuzzQuery('SELECT 1');
```

```response title=Response theme={null}
```

<div id="generateRandomStructure">
  ## generateRandomStructure
</div>

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

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

**Синтаксис**

```sql theme={null}
generateRandomStructure([number_of_columns, seed])
```

**Аргументы**

* `number_of_columns` — Требуемое количество столбцов в итоговой структуре таблицы. Если задано значение 0 или `Null`, число столбцов будет случайным — от 1 до 128. Значение по умолчанию: `Null`. [`UInt64`](/ru/reference/data-types/int-uint)
* `seed` — Начальное значение генератора случайных чисел для получения стабильных результатов. Если `seed` не указан или задан как `Null`, он генерируется случайным образом. [`UInt64`](/ru/reference/data-types/int-uint)

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

Случайно сгенерированная структура таблицы. [`String`](/ru/reference/data-types/string)

**Примеры**

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

```sql title=Query theme={null}
SELECT generateRandomStructure()
```

```response title=Response theme={null}
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
```

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

```sql title=Query theme={null}
SELECT generateRandomStructure(1)
```

```response title=Response theme={null}
c1 Map(UInt256, UInt16)
```

**с заданным seed**

```sql title=Query theme={null}
SELECT generateRandomStructure(NULL, 33)
```

```response title=Response theme={null}
c1 DateTime, c2 Enum8('c2V0' = 0, 'c2V1' = 1, 'c2V2' = 2, 'c2V3' = 3), c3 LowCardinality(Nullable(FixedString(30))), c4 Int16, c5 Enum8('c5V0' = 0, 'c5V1' = 1, 'c5V2' = 2, 'c5V3' = 3), c6 Nullable(UInt8), c7 String, c8 Nested(e1 IPv4, e2 UInt8, e3 UInt16, e4 UInt16, e5 Int32, e6 Map(Date, Decimal256(70)))
```

<div id="generateSerialID">
  ## generateSerialID
</div>

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

Генерирует и возвращает последовательные числа, начиная с предыдущего значения счетчика.
Эта функция принимает строковый аргумент — идентификатор серии, а также необязательное начальное значение.
Сервер должен быть настроен для работы с Keeper.
Серии хранятся в узлах Keeper по пути, который можно настроить в [`series_keeper_path`](/ru/reference/settings/server-settings/settings#series_keeper_path) в конфигурации сервера.

**Синтаксис**

```sql theme={null}
generateSerialID(series_identifier[, start_value])
```

**Аргументы**

* `series_identifier` — Идентификатор серии [`const String`](/ru/reference/data-types/string)
* `start_value` — Необязательный. Начальное значение счётчика. По умолчанию — 0. Примечание: это значение используется только при создании новой серии и игнорируется, если серия уже существует [`UInt*`](/ru/reference/data-types/int-uint)

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

Возвращает последовательные числа, начиная с предыдущего значения счётчика. [`UInt64`](/ru/reference/data-types/int-uint)

**Примеры**

**первый вызов**

```sql title=Query theme={null}
SELECT generateSerialID('id1')
```

```response title=Response theme={null}
┌─generateSerialID('id1')──┐
│                        1 │
└──────────────────────────┘
```

**второй вызов**

```sql title=Query theme={null}
SELECT generateSerialID('id1')
```

```response title=Response theme={null}
┌─generateSerialID('id1')──┐
│                        2 │
└──────────────────────────┘
```

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

```sql title=Query theme={null}
SELECT *, generateSerialID('id1') FROM test_table
```

```response title=Response theme={null}
┌─CounterID─┬─UserID─┬─ver─┬─generateSerialID('id1')──┐
│         1 │      3 │   3 │                        3 │
│         1 │      1 │   1 │                        4 │
│         1 │      2 │   2 │                        5 │
│         1 │      5 │   5 │                        6 │
│         1 │      4 │   4 │                        7 │
└───────────┴────────┴─────┴──────────────────────────┘
```

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

```sql title=Query theme={null}
SELECT generateSerialID('id2', 100)
```

```response title=Response theme={null}
┌─generateSerialID('id2', 100)──┐
│                           100 │
└───────────────────────────────┘
```

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

```sql title=Query theme={null}
SELECT generateSerialID('id2', 100)
```

```response title=Response theme={null}
┌─generateSerialID('id2', 100)──┐
│                           101 │
└───────────────────────────────┘
```

<div id="getClientHTTPHeader">
  ## getClientHTTPHeader
</div>

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

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

<Info>
  **Требуется включить настройку `allow_get_client_http_header`**

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

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

**Синтаксис**

```sql theme={null}
getClientHTTPHeader(name)
```

**Аргументы**

* `name` — Имя HTTP-заголовка. [`String`](/ru/reference/data-types/string)

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

Возвращает значение заголовка. [`String`](/ru/reference/data-types/string)

**Примеры**

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

```sql title=Query theme={null}
SELECT getClientHTTPHeader('Content-Type');
```

```response title=Response theme={null}
┌─getClientHTTPHeader('Content-Type')─┐
│ application/x-www-form-urlencoded   │
└─────────────────────────────────────┘
```

<div id="getMacro">
  ## getMacro
</div>

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

Возвращает значение макроса из файла конфигурации сервера.
Макросы определяются в разделе [`<macros>`](/ru/reference/settings/server-settings/settings#macros) файла конфигурации и могут использоваться, чтобы различать серверы по удобным именам, даже если у них сложные имена узлов.
Если функция выполняется в контексте distributed таблицы, она создаёт обычный столбец со значениями для каждого сегмента.

**Синтаксис**

```sql theme={null}
getMacro(name)
```

**Аргументы**

* `name` — Имя макроса, который нужно получить. [`const String`](/ru/reference/data-types/string)

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

Возвращает значение указанного макроса. [`String`](/ru/reference/data-types/string)

**Примеры**

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

```sql title=Query theme={null}
SELECT getMacro('test');
```

```response title=Response theme={null}
┌─getMacro('test')─┐
│ Value            │
└──────────────────┘
```

<div id="getMaxTableNameLengthForDatabase">
  ## getMaxTableNameLengthForDatabase
</div>

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

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

**Синтаксис**

```sql theme={null}
getMaxTableNameLengthForDatabase(database_name)
```

**Аргументы**

* `database_name` — имя указанной базы данных. [`String`](/ru/reference/data-types/string)

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

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

**Примеры**

**обычный**

```sql title=Query theme={null}
SELECT getMaxTableNameLengthForDatabase('default');
```

```response title=Response theme={null}
┌─getMaxTableNameLengthForDatabase('default')─┐
            │                                         206 │
            └─────────────────────────────────────────────┘
```

<div id="getMergeTreeSetting">
  ## getMergeTreeSetting
</div>

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

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

**Синтаксис**

```sql theme={null}
getMergeTreeSetting(setting_name)
```

**Аргументы**

* `setting_name` — Название настройки. [`String`](/ru/reference/data-types/string)

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

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

**Примеры**

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

```sql title=Query theme={null}
SELECT getMergeTreeSetting('index_granularity');
```

```response title=Response theme={null}
┌─getMergeTreeSetting('index_granularity')─┐
│                                     8192 │
└──────────────────────────────────────────┘
```

<div id="getOSKernelVersion">
  ## getOSKernelVersion
</div>

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

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

**Синтаксис**

```sql theme={null}
getOSKernelVersion()
```

**Аргументы**

* Отсутствуют.

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

Возвращает текущую версию ядра операционной системы. [`String`](/ru/reference/data-types/string)

**Примеры**

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

```sql title=Query theme={null}
SELECT getOSKernelVersion();
```

```response title=Response theme={null}
┌─getOSKernelVersion()────┐
│ Linux 4.15.0-55-generic │
└─────────────────────────┘
```

<div id="getServerPort">
  ## getServerPort
</div>

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

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

**Синтаксис**

```sql theme={null}
getServerPort(port_name)
```

**Аргументы**

* `port_name` — Название порта. [`String`](/ru/reference/data-types/string)

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

Возвращает номер порта сервера. [`UInt16`](/ru/reference/data-types/int-uint)

**Примеры**

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

```sql title=Query theme={null}
SELECT getServerPort('tcp_port');
```

```response title=Response theme={null}
┌─getServerPort('tcp_port')─┐
│                      9000 │
└───────────────────────────┘
```

<div id="getServerSetting">
  ## getServerSetting
</div>

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

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

**Синтаксис**

```sql theme={null}
getServerSetting(setting_name')
```

**Аргументы**

* `setting_name` — Название настройки сервера. [`String`](/ru/reference/data-types/string)

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

Возвращает текущее значение настройки сервера. [`Any`](/ru/reference/data-types)

**Примеры**

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

```sql title=Query theme={null}
SELECT getServerSetting('allow_use_jemalloc_memory');
```

```response title=Response theme={null}
┌─getServerSetting('allow_use_jemalloc_memory')─┐
│ true                                          │
└───────────────────────────────────────────────┘
```

<div id="getSetting">
  ## getSetting
</div>

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

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

**Синтаксис**

```sql theme={null}
getSetting(setting_name)
```

**Аргументы**

* `setting_Name` — Имя настройки. [`const String`](/ru/reference/data-types/string)

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

Возвращает текущее значение настройки. [`Any`](/ru/reference/data-types)

**Примеры**

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

```sql title=Query theme={null}
SELECT getSetting('enable_analyzer');
SET enable_analyzer = false;
SELECT getSetting('enable_analyzer');
```

```response title=Response theme={null}
┌─getSetting('⋯_analyzer')─┐
│ true                     │
└──────────────────────────┘
┌─getSetting('⋯_analyzer')─┐
│ false                    │
└──────────────────────────┘
```

<div id="getSettingOrDefault">
  ## getSettingOrDefault
</div>

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

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

**Синтаксис**

```sql theme={null}
getSettingOrDefault(setting_name, default_value)
```

**Аргументы**

* `setting_name` — Имя настройки. [`String`](/ru/reference/data-types/string)
* `default_value` — Значение, которое возвращается, если custom\_setting не задан. Значение может быть любого типа данных или `NULL`.

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

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

**Примеры**

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

```sql title=Query theme={null}
SELECT getSettingOrDefault('custom_undef1', 'my_value');
SELECT getSettingOrDefault('custom_undef2', 100);
SELECT getSettingOrDefault('custom_undef3', NULL);
```

```response title=Response theme={null}
my_value
100
NULL
```

<div id="getSizeOfEnumType">
  ## getSizeOfEnumType
</div>

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

Возвращает количество полей в указанном [`Enum`](/ru/reference/data-types/enum).

**Синтаксис**

```sql theme={null}
getSizeOfEnumType(x)
```

**Аргументы**

* `x` — значение типа `Enum`. [`Enum`](/ru/reference/data-types/enum)

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

Возвращает количество полей с входными значениями типа `Enum`. [`UInt8/16`](/ru/reference/data-types/int-uint)

**Примеры**

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

```sql title=Query theme={null}
SELECT getSizeOfEnumType(CAST('a' AS Enum8('a' = 1, 'b' = 2))) AS x;
```

```response title=Response theme={null}
┌─x─┐
│ 2 │
└───┘
```

<div id="getSubcolumn">
  ## getSubcolumn
</div>

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

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

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

**Синтаксис**

```sql theme={null}
getSubcolumn(nested_value, subcolumn_name)
```

**Аргументы**

* Нет.

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

**Примеры**

**getSubcolumn**

```sql title=Query theme={null}
SELECT getSubcolumn(array_col, 'size0'), getSubcolumn(tuple_col, 'elem_name')
```

```response title=Response theme={null}
```

<div id="getTypeSerializationStreams">
  ## getTypeSerializationStreams
</div>

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

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

**Синтаксис**

```sql theme={null}
getTypeSerializationStreams(col)
```

**Аргументы**

* `col` — Столбец или строковое представление типа данных, по которому будет определён тип данных. [`Any`](/ru/reference/data-types)

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

Возвращает массив со всеми путями подпотоков сериализации. [`Array(String)`](/ru/reference/data-types/array)

**Примеры**

**tuple**

```sql title=Query theme={null}
SELECT getTypeSerializationStreams(tuple('a', 1, 'b', 2))
```

```response title=Response theme={null}
['{TupleElement(1), Regular}','{TupleElement(2), Regular}','{TupleElement(3), Regular}','{TupleElement(4), Regular}']
```

**map**

```sql title=Query theme={null}
SELECT getTypeSerializationStreams('Map(String, Int64)')
```

```response title=Response theme={null}
['{ArraySizes}','{ArrayElements, TupleElement(keys), Regular}','{ArrayElements, TupleElement(values), Regular}']
```

<div id="globalVariable">
  ## globalVariable
</div>

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

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

**Синтаксис**

```sql theme={null}
globalVariable(name)
```

**Аргументы**

* `name` — имя глобальной переменной. [`String`](/ru/reference/data-types/string)

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

Возвращает значение переменной `name`. [`Any`](/ru/reference/data-types)

**Примеры**

**globalVariable**

```sql title=Query theme={null}
SELECT globalVariable('max_allowed_packet')
```

```response title=Response theme={null}
67108864
```

<div id="hasColumnInTable">
  ## hasColumnInTable
</div>

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

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

**Синтаксис**

```sql theme={null}
hasColumnInTable([hostname[, username[, password]],]database, table, column)
```

**Аргументы**

* `database` — Имя базы данных. [`const String`](/ru/reference/data-types/string)
* `table` — Имя таблицы. [`const String`](/ru/reference/data-types/string)
* `column` — Имя столбца. [`const String`](/ru/reference/data-types/string)
* `hostname` — Необязательно. Имя удалённого сервера, на котором нужно выполнить проверку. [`const String`](/ru/reference/data-types/string)
* `username` — Необязательно. Имя пользователя удалённого сервера. [`const String`](/ru/reference/data-types/string)
* `password` — Необязательно. Пароль удалённого сервера. [`const String`](/ru/reference/data-types/string)

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

Возвращает `1`, если указанный столбец существует, и `0` в противном случае. [`UInt8`](/ru/reference/data-types/int-uint)

**Примеры**

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

```sql title=Query theme={null}
SELECT hasColumnInTable('system','metrics','metric')
```

```response title=Response theme={null}
1
```

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

```sql title=Query theme={null}
SELECT hasColumnInTable('system','metrics','non-existing_column')
```

```response title=Response theme={null}
0
```

<div id="hasThreadFuzzer">
  ## hasThreadFuzzer
</div>

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

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

**Синтаксис**

```sql theme={null}
hasThreadFuzzer()
```

**Аргументы**

* Нет.

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

Возвращает, активен ли Thread Fuzzer. [`UInt8`](/ru/reference/data-types/int-uint)

**Примеры**

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

```sql title=Query theme={null}
SELECT hasThreadFuzzer()
```

```response title=Response theme={null}
┌─hasThreadFuzzer()─┐
│                 0 │
└───────────────────┘
```

<div id="highlightQuery">
  ## highlightQuery
</div>

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

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

**Синтаксис**

```sql theme={null}
highlightQuery(query)
```

**Аргументы**

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

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

Массив именованных кортежей `(begin UInt64, end UInt64, type Enum8(...))`, представляющих выделенные диапазоны. [`Array(Tuple(begin UInt64, end UInt64, type Enum8(...)))`](/ru/reference/data-types/array)

**Примеры**

**простой**

```sql title=Query theme={null}
SELECT highlightQuery('SELECT 1')
```

```response title=Response theme={null}
[(0,6,'keyword'),(7,8,'number')]
```

<div id="hostName">
  ## hostName
</div>

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

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

**Синтаксис**

```sql theme={null}
hostName()
```

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

**Аргументы**

* Нет.

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

Возвращает имя хоста. [`String`](/ru/reference/data-types/string)

**Примеры**

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

```sql title=Query theme={null}
SELECT hostName()
```

```response title=Response theme={null}
┌─hostName()─┐
│ clickhouse │
└────────────┘
```

<div id="icebergBucket">
  ## icebergBucket
</div>

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

Реализует логику [бакет-преобразования в Iceberg](https://iceberg.apache.org/spec/#bucket-transform-details.)

**Синтаксис**

```sql theme={null}
icebergBucket(N, value)
```

**Аргументы**

* `N` — Количество бакетов, модуль. [`const (U)Int*`](/ru/reference/data-types/int-uint)
* `value` — Исходное значение для преобразования. [`(U)Int*`](/ru/reference/data-types/int-uint) или [`Bool`](/ru/reference/data-types/boolean) или [`Decimal`](/ru/reference/data-types/decimal) или [`Float*`](/ru/reference/data-types/float) или [`String`](/ru/reference/data-types/string) или [`FixedString`](/ru/reference/data-types/fixedstring) или [`UUID`](/ru/reference/data-types/uuid) или [`Date`](/ru/reference/data-types/date) или [`Time`](/ru/reference/data-types/time) или [`DateTime`](/ru/reference/data-types/datetime)

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

Возвращает 32-битный хеш исходного значения. [`Int32`](/ru/reference/data-types/int-uint)

**Примеры**

**Пример**

```sql title=Query theme={null}
SELECT icebergBucket(5, 1.0 :: Float32)
```

```response title=Response theme={null}
4
```

<div id="icebergTruncate">
  ## icebergTruncate
</div>

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

Реализует логику truncate-преобразования в Iceberg: [https://iceberg.apache.org/spec/#truncate-transform-details](https://iceberg.apache.org/spec/#truncate-transform-details).

**Синтаксис**

```sql theme={null}
icebergTruncate(N, value)
```

**Аргументы**

* `value` — Значение, которое нужно преобразовать. [`String`](/ru/reference/data-types/string) или [`(U)Int*`](/ru/reference/data-types/int-uint) или [`Decimal`](/ru/reference/data-types/decimal)

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

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

**Примеры**

**Пример**

```sql title=Query theme={null}
SELECT icebergTruncate(3, 'iceberg')
```

```response title=Response theme={null}
ice
```

<div id="identity">
  ## identity
</div>

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

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

**Синтаксис**

```sql theme={null}
identity(x)
```

**Аргументы**

* `x` — Входное значение. [`Any`](/ru/reference/data-types)

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

Возвращает входное значение без изменений. [`Any`](/ru/reference/data-types)

**Примеры**

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

```sql title=Query theme={null}
SELECT identity(42)
```

```response title=Response theme={null}
42
```

<div id="ignore">
  ## ignore
</div>

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

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

**Синтаксис**

```sql theme={null}
ignore(x)
```

**Аргументы**

* `x` — Входное значение, которое не используется и передаётся только для избежания синтаксической ошибки. [`Any`](/ru/reference/data-types)

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

Всегда возвращает `0`. [`UInt8`](/ru/reference/data-types/int-uint)

**Примеры**

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

```sql title=Query theme={null}
SELECT ignore(0, 'ClickHouse', NULL)
```

```response title=Response theme={null}
┌─ignore(0, 'ClickHouse', NULL)─┐
│                             0 │
└───────────────────────────────┘
```

<div id="indexHint">
  ## indexHint
</div>

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

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

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

<Accordion title="Объяснение">
  Когда вы выполняете:

  ```sql theme={null}
  SELECT * FROM test WHERE key = 123;
  ```

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

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

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

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

  ```sql theme={null}
  SELECT * FROM test WHERE indexHint(key = 123);
  ```

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

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

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

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

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

**Синтаксис**

```sql theme={null}
indexHint(expression)
```

**Аргументы**

* `expression` — Любое выражение для выбора диапазона индекса. [`Expression`](/ru/reference/data-types/special-data-types/expression)

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

Во всех случаях возвращает `1`. [`UInt8`](/ru/reference/data-types/int-uint)

**Примеры**

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

```sql title=Query theme={null}
SELECT FlightDate AS k, count() FROM ontime WHERE indexHint(k = '2025-09-15') GROUP BY k ORDER BY k ASC;
```

```response title=Response theme={null}
┌──────────k─┬─count()─┐
│ 2025-09-14 │    7071 │
│ 2025-09-15 │   16428 │
│ 2025-09-16 │    1077 │
│ 2025-09-30 │    8167 │
└────────────┴─────────┘
```

<div id="initialQueryID">
  ## initialQueryID
</div>

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

Возвращает ID исходного запроса.
Другие параметры запроса можно извлечь из поля `initial_query_id` в [`system.query_log`](/ru/reference/system-tables/query_log).

В отличие от функции [`queryID`](/ru/reference/functions/regular-functions/other-functions#queryID), `initialQueryID` возвращает одинаковые результаты на разных сегментах.

**Синтаксис**

```sql theme={null}
initialQueryID()
```

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

**Аргументы**

* Нет.

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

Возвращает идентификатор исходного запроса. [`String`](/ru/reference/data-types/string)

**Примеры**

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

```sql title=Query theme={null}
CREATE TABLE tmp (str String) ENGINE = Log;
INSERT INTO tmp (*) VALUES ('a');
SELECT count(DISTINCT t) FROM (SELECT initialQueryID() AS t FROM remote('127.0.0.{1..3}', currentDatabase(), 'tmp') GROUP BY queryID());
```

```response title=Response theme={null}
┌─count(DISTINCT t)─┐
│                 1 │
└───────────────────┘
```

<div id="initialQueryStartTime">
  ## initialQueryStartTime
</div>

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

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

**Синтаксис**

```sql theme={null}
initialQueryStartTime()
```

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

**Аргументы**

* Нет.

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

Возвращает время начала исходного запроса для текущего запроса. [`DateTime`](/ru/reference/data-types/datetime)

**Примеры**

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

```sql title=Query theme={null}
CREATE TABLE tmp (str String) ENGINE = Log;
INSERT INTO tmp (*) VALUES ('a');
SELECT count(DISTINCT t) FROM (SELECT initialQueryStartTime() AS t FROM remote('127.0.0.{1..3}', currentDatabase(), 'tmp') GROUP BY queryID());
```

```response title=Response theme={null}
┌─count(DISTINCT t)─┐
│                 1 │
└───────────────────┘
```

<div id="initializeAggregation">
  ## initializeAggregation
</div>

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

Вычисляет результат агрегатной функции по одному значению.
Эту функцию можно использовать для инициализации агрегатных функций с комбинатором [-State](/ru/reference/functions/aggregate-functions/combinators#-state).
Вы можете создавать состояния агрегатных функций и вставлять их в столбцы типа [`AggregateFunction`](/ru/reference/data-types/aggregatefunction) или использовать инициализированные агрегаты в качестве значений по умолчанию.

**Синтаксис**

```sql theme={null}
initializeAggregation(aggregate_function, arg1[, arg2, ...])
```

**Аргументы**

* `aggregate_function` — Имя агрегатной функции, которую нужно инициализировать. [`String`](/ru/reference/data-types/string)
* `arg1[, arg2, ...]` — Аргументы агрегатной функции. [`Any`](/ru/reference/data-types)

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

Возвращает результат агрегации для каждой строки, переданной в функцию. Возвращаемый тип совпадает с возвращаемым типом функции, переданной в `initializeAggregation` первым аргументом. [`Any`](/ru/reference/data-types)

**Примеры**

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

```sql title=Query theme={null}
SELECT uniqMerge(state) FROM (SELECT initializeAggregation('uniqState', number % 3) AS state FROM numbers(10000));
```

```response title=Response theme={null}
┌─uniqMerge(state)─┐
│                3 │
└──────────────────┘
```

**Использование функций sumState и finalizeAggregation**

```sql title=Query theme={null}
SELECT finalizeAggregation(state), toTypeName(state) FROM (SELECT initializeAggregation('sumState', number % 3) AS state FROM numbers(5));
```

```response title=Response theme={null}
┌─finalizeAggregation(state)─┬─toTypeName(state)─────────────┐
│                          0 │ AggregateFunction(sum, UInt8) │
│                          1 │ AggregateFunction(sum, UInt8) │
│                          2 │ AggregateFunction(sum, UInt8) │
│                          0 │ AggregateFunction(sum, UInt8) │
│                          1 │ AggregateFunction(sum, UInt8) │
└────────────────────────────┴───────────────────────────────┘
```

<div id="isConstant">
  ## isConstant
</div>

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

Возвращает, является ли аргумент константным выражением.
Константное выражение — это выражение, результат которого известен на этапе анализа запроса, то есть до выполнения.
Например, выражения над [литералами](/ru/reference/syntax#literals) являются константными выражениями.
Эта функция предназначена главным образом для разработки, отладки и демонстрации.

**Синтаксис**

```sql theme={null}
isConstant(x)
```

**Аргументы**

* `x` — выражение для проверки. [`Any`](/ru/reference/data-types)

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

Возвращает `1`, если `x` — константа, и `0`, если `x` не является константой. [`UInt8`](/ru/reference/data-types/int-uint)

**Примеры**

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

```sql title=Query theme={null}
SELECT isConstant(x + 1)
FROM (SELECT 43 AS x)
```

```response title=Response theme={null}
┌─isConstant(plus(x, 1))─┐
│                      1 │
└────────────────────────┘
```

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

```sql title=Query theme={null}
WITH 3.14 AS pi
SELECT isConstant(cos(pi))
```

```response title=Response theme={null}
┌─isConstant(cos(pi))─┐
│                   1 │
└─────────────────────┘
```

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

```sql title=Query theme={null}
SELECT isConstant(number)
FROM numbers(1)
```

```response title=Response theme={null}
┌─isConstant(number)─┐
│                  0 │
└────────────────────┘
```

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

```sql title=Query theme={null}
SELECT isConstant(now())
```

```response title=Response theme={null}
┌─isConstant(now())─┐
│                 1 │
└───────────────────┘
```

<div id="isDecimalOverflow">
  ## isDecimalOverflow
</div>

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

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

**Синтаксис**

```sql theme={null}
isDecimalOverflow(value[, precision])
```

**Аргументы**

* `value` — Проверяемое значение типа Decimal. [`Decimal`](/ru/reference/data-types/decimal)
* `precision` — Необязательно. Точность типа Decimal. Если не указано, используется исходная точность первого аргумента. [`UInt8`](/ru/reference/data-types/int-uint)

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

Возвращает `1`, если десятичное значение содержит больше цифр, чем допускает его точность, и `0`, если десятичное значение соответствует указанной точности. [`UInt8`](/ru/reference/data-types/int-uint)

**Примеры**

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

```sql title=Query theme={null}
SELECT isDecimalOverflow(toDecimal32(1000000000, 0), 9),
       isDecimalOverflow(toDecimal32(1000000000, 0)),
       isDecimalOverflow(toDecimal32(-1000000000, 0), 9),
       isDecimalOverflow(toDecimal32(-1000000000, 0));
```

```response title=Response theme={null}
┌─isDecimalOverflow(toDecimal32(1000000000, 0), 9)─┬─isDecimalOverflow(toDecimal32(1000000000, 0))─┬─isDecimalOverflow(toDecimal32(-1000000000, 0), 9)─┬─isDecimalOverflow(toDecimal32(-1000000000, 0))─┐
│                                                1 │                                             1 │                                                 1 │                                              1 │
└──────────────────────────────────────────────────┴───────────────────────────────────────────────┴───────────────────────────────────────────────────┴────────────────────────────────────────────────┘
```

<div id="joinGet">
  ## joinGet
</div>

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

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

<Note>
  Поддерживает только таблицы, созданные с помощью `ENGINE = Join(ANY, LEFT, <join_keys>)` [оператора](/ru/reference/engines/table-engines/special/join).
</Note>

**Синтаксис**

```sql theme={null}
joinGet(join_storage_table_name, value_column, join_keys)
```

**Аргументы**

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

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

Возвращает список значений, соответствующих списку ключей. [`Any`](/ru/reference/data-types)

**Примеры**

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

```sql title=Query theme={null}
CREATE TABLE db_test.id_val(`id` UInt32, `val` UInt32) ENGINE = Join(ANY, LEFT, id);
INSERT INTO db_test.id_val VALUES (1,11)(2,12)(4,13);

SELECT joinGet(db_test.id_val, 'val', toUInt32(1));
```

```response title=Response theme={null}
┌─joinGet(db_test.id_val, 'val', toUInt32(1))─┐
│                                          11 │
└─────────────────────────────────────────────┘
```

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

```sql title=Query theme={null}
USE db_test;
SELECT joinGet(id_val, 'val', toUInt32(2));
```

```response title=Response theme={null}
┌─joinGet(id_val, 'val', toUInt32(2))─┐
│                                  12 │
└─────────────────────────────────────┘
```

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

```sql title=Query theme={null}
CREATE TABLE some_table (id1 UInt32, id2 UInt32, name String) ENGINE = Join(ANY, LEFT, id1, id2);
INSERT INTO some_table VALUES (1, 11, 'a') (2, 12, 'b') (3, 13, 'c');

SELECT joinGet(some_table, 'name', 1, 11);
```

```response title=Response theme={null}
┌─joinGet(some_table, 'name', 1, 11)─┐
│ a                                  │
└────────────────────────────────────┘
```

<div id="joinGetOrNull">
  ## joinGetOrNull
</div>

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

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

<Note>
  Поддерживает только таблицы, созданные с помощью оператора `ENGINE = Join(ANY, LEFT, <join_keys>)` [оператор](/ru/reference/engines/table-engines/special/join).
</Note>

**Синтаксис**

```sql theme={null}
joinGetOrNull(join_storage_table_name, value_column, join_keys)
```

**Аргументы**

* `join_storage_table_name` — Идентификатор, указывающий, где выполнять поиск. Поиск по идентификатору выполняется в базе данных по умолчанию (см. параметр default\_database в файле конфигурации). Чтобы переопределить базу данных по умолчанию, используйте запрос `USE database_name` или укажите базу данных и таблицу через точку, например `database_name.table_name`. [`String`](/ru/reference/data-types/string)
* `value_column` — Имя столбца таблицы, содержащего необходимые данные. [`const String`](/ru/reference/data-types/string)
* `join_keys` — Список ключей JOIN. [`Any`](/ru/reference/data-types)

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

Возвращает список значений, соответствующих списку ключей, или `NULL`, если ключ не найден. [`Any`](/ru/reference/data-types)

**Примеры**

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

```sql title=Query theme={null}
CREATE TABLE db_test.id_val(`id` UInt32, `val` UInt32) ENGINE = Join(ANY, LEFT, id);
INSERT INTO db_test.id_val VALUES (1,11)(2,12)(4,13);

SELECT joinGetOrNull(db_test.id_val, 'val', toUInt32(1)), joinGetOrNull(db_test.id_val, 'val', toUInt32(999));
```

```response title=Response theme={null}
┌─joinGetOrNull(db_test.id_val, 'val', toUInt32(1))─┬─joinGetOrNull(db_test.id_val, 'val', toUInt32(999))─┐
│                                                11 │                                                ᴺᵁᴸᴸ │
└───────────────────────────────────────────────────┴─────────────────────────────────────────────────────┘
```

<div id="lowCardinalityIndices">
  ## lowCardinalityIndices
</div>

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

Возвращает позицию значения в словаре столбца [LowCardinality](/ru/reference/data-types/lowcardinality). Нумерация позиций начинается с 1. Поскольку у LowCardinality словари создаются отдельно для каждой части, эта функция может возвращать разные позиции для одного и того же значения в разных частях.

**Синтаксис**

```sql theme={null}
lowCardinalityIndices(col)
```

**Аргументы**

* `col` — Столбец с низкой кардинальностью. [`LowCardinality`](/ru/reference/data-types/lowcardinality)

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

Позиция значения в словаре текущей части. [`UInt64`](/ru/reference/data-types/int-uint)

**Примеры**

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

```sql title=Query theme={null}
DROP TABLE IF EXISTS test;
CREATE TABLE test (s LowCardinality(String)) ENGINE = Memory;

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

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

SELECT s, lowCardinalityIndices(s) FROM test;
```

```response title=Response theme={null}
┌─s──┬─lowCardinalityIndices(s)─┐
│ ab │                        1 │
│ cd │                        2 │
│ ab │                        1 │
│ ab │                        1 │
│ df │                        3 │
└────┴──────────────────────────┘
┌─s──┬─lowCardinalityIndices(s)─┐
│ ef │                        1 │
│ cd │                        2 │
│ ab │                        3 │
│ cd │                        2 │
│ ef │                        1 │
└────┴──────────────────────────┘
```

<div id="lowCardinalityKeys">
  ## lowCardinalityKeys
</div>

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

Возвращает значения словаря столбца [LowCardinality](/ru/reference/data-types/lowcardinality).
Если размер блока меньше или больше размера словаря, результат будет усечён или дополнен значениями по умолчанию.
Поскольку LowCardinality использует словари на уровне частей, эта функция может возвращать разные значения словаря в разных частях.

**Синтаксис**

```sql theme={null}
lowCardinalityKeys(col)
```

**Аргументы**

* `col` — Столбец с низкой кардинальностью. [`LowCardinality`](/ru/reference/data-types/lowcardinality)

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

Возвращает ключи словаря. [`UInt64`](/ru/reference/data-types/int-uint)

**Примеры**

**lowCardinalityKeys**

```sql title=Query theme={null}
DROP TABLE IF EXISTS test;
CREATE TABLE test (s LowCardinality(String)) ENGINE = Memory;

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

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

SELECT s, lowCardinalityKeys(s) FROM test;
```

```response title=Response theme={null}
┌─s──┬─lowCardinalityKeys(s)─┐
│ ef │                       │
│ cd │ ef                    │
│ ab │ cd                    │
│ cd │ ab                    │
│ ef │                       │
└────┴───────────────────────┘
┌─s──┬─lowCardinalityKeys(s)─┐
│ ab │                       │
│ cd │ ab                    │
│ ab │ cd                    │
│ ab │ df                    │
│ df │                       │
└────┴───────────────────────┘
```

<div id="materialize">
  ## materialize
</div>

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

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

**Синтаксис**

```sql theme={null}
materialize(x)
```

**Аргументы**

* `x` — Константа. [`Any`](/ru/reference/data-types)

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

Возвращает полный столбец, содержащий константное значение. [`Any`](/ru/reference/data-types)

**Примеры**

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

```sql title=Query theme={null}
-- В приведённом ниже примере функция `countMatches` ожидает константный второй аргумент.
-- Это поведение можно отладить с помощью функции `materialize`, которая преобразует константу в полный столбец,
-- тем самым проверяя, что функция генерирует исключение для неконстантного аргумента.

SELECT countMatches('foobarfoo', 'foo');
SELECT countMatches('foobarfoo', materialize('foo'));
```

```response title=Response theme={null}
2
Code: 44. DB::Exception: Received from localhost:9000. DB::Exception: Illegal type of argument #2 'pattern' of function countMatches, expected constant String, got String
```

<div id="minSampleSizeContinuous">
  ## minSampleSizeContinuous
</div>

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

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

Использует формулу, описанную в [этой статье](https://towardsdatascience.com/required-sample-size-for-a-b-testing-6f6608dd330a).
Предполагаются одинаковые размеры экспериментальной и контрольной групп.
Возвращает требуемый размер выборки для одной группы (то есть для всего эксперимента нужен размер выборки вдвое больше возвращаемого значения).
Также предполагается одинаковая дисперсия тестовой метрики в экспериментальной и контрольной группах.

**Синтаксис**

```sql theme={null}
minSampleSizeContinuous(baseline, sigma, mde, power, alpha)
```

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

**Аргументы**

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

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

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

**Примеры**

**minSampleSizeContinuous**

```sql title=Query theme={null}
SELECT minSampleSizeContinuous(112.25, 21.1, 0.03, 0.80, 0.05) AS sample_size
```

```response title=Response theme={null}
(616.2931945826209,108.8825,115.6175)
```

<div id="minSampleSizeConversion">
  ## minSampleSizeConversion
</div>

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

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

Использует формулу, описанную в [этой статье](https://towardsdatascience.com/required-sample-size-for-a-b-testing-6f6608dd330a). Предполагается, что размеры экспериментальной и контрольной групп одинаковы. Возвращает размер выборки, необходимый для одной группы (то есть для всего эксперимента требуется выборка вдвое больше возвращаемого значения).

**Синтаксис**

```sql theme={null}
minSampleSizeConversion(baseline, mde, power, alpha)
```

**Аргументы**

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

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

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

**Примеры**

**minSampleSizeConversion**

```sql title=Query theme={null}
SELECT minSampleSizeConversion(0.25, 0.03, 0.80, 0.05) AS sample_size
```

```response title=Response theme={null}
(3396.077603219163,0.22,0.28)
```

<div id="neighbor">
  ## neighbor
</div>

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

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

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

**Синтаксис**

```sql theme={null}
neighbor(column, offset[, default_value])
```

**Аргументы**

* `column` — Исходный столбец. [`Any`](/ru/reference/data-types)
* `offset` — Смещение относительно текущей строки. Положительные значения указывают вперёд, отрицательные — назад. [`Integer`](/ru/reference/data-types/int-uint)
* `default_value` — Необязательно. Значение, которое возвращается, если смещение выходит за пределы данных. Если не указано, используется значение по умолчанию для типа столбца. [`Any`](/ru/reference/data-types)

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

Возвращает значение по указанному смещению или значение по умолчанию, если смещение выходит за пределы данных. [`Any`](/ru/reference/data-types)

**Примеры**

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

```sql title=Query theme={null}
SELECT number, neighbor(number, 2) FROM system.numbers LIMIT 10;
```

```response title=Response theme={null}
┌─number─┬─neighbor(number, 2)─┐
│      0 │                   2 │
│      1 │                   3 │
│      2 │                   4 │
│      3 │                   5 │
│      4 │                   6 │
│      5 │                   7 │
│      6 │                   8 │
│      7 │                   9 │
│      8 │                   0 │
│      9 │                   0 │
└────────┴─────────────────────┘
```

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

```sql title=Query theme={null}
SELECT number, neighbor(number, 2, 999) FROM system.numbers LIMIT 10;
```

```response title=Response theme={null}
┌─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 │
└────────┴──────────────────────────┘
```

<div id="normalizeQuery">
  ## normalizeQuery
</div>

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

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

**Синтаксис**

```sql theme={null}
normalizeQuery(x)
```

**Аргументы**

* `x` — Строка символов. [`String`](/ru/reference/data-types/string)

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

Возвращает указанную строку символов с плейсхолдерами. [`String`](/ru/reference/data-types/string)

**Примеры**

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

```sql title=Query theme={null}
SELECT normalizeQuery('[1, 2, 3, x]') AS query
```

```response title=Response theme={null}
┌─query────┐
│ [?.., x] │
└──────────┘
```

<div id="normalizeQueryKeepNames">
  ## normalizeQueryKeepNames
</div>

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

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

**Синтаксис**

```sql theme={null}
normalizeQueryKeepNames(x)
```

**Аргументы**

* `x` — Последовательность символов. [`String`](/ru/reference/data-types/string)

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

Возвращает указанную последовательность символов с плейсхолдерами. [`String`](/ru/reference/data-types/string)

**Примеры**

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

```sql title=Query theme={null}
SELECT normalizeQuery('SELECT 1 AS aComplexName123'), normalizeQueryKeepNames('SELECT 1 AS aComplexName123')
```

```response title=Response theme={null}
┌─normalizeQuery('SELECT 1 AS aComplexName123')─┬─normalizeQueryKeepNames('SELECT 1 AS aComplexName123')─┐
│ SELECT ? AS `?`                               │ SELECT ? AS aComplexName123                            │
└───────────────────────────────────────────────┴────────────────────────────────────────────────────────┘
```

<div id="normalizedQueryHash">
  ## normalizedQueryHash
</div>

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

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

**Синтаксис**

```sql theme={null}
normalizedQueryHash(x)
```

**Аргументы**

* `x` — Последовательность символов. [`String`](/ru/reference/data-types/string)

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

Возвращает 64-битное хеш-значение. [`UInt64`](/ru/reference/data-types/int-uint)

**Примеры**

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

```sql title=Query theme={null}
SELECT normalizedQueryHash('SELECT 1 AS `xyz`') != normalizedQueryHash('SELECT 1 AS `abc`') AS res
```

```response title=Response theme={null}
┌─res─┐
│   1 │
└─────┘
```

<div id="normalizedQueryHashKeepNames">
  ## normalizedQueryHashKeepNames
</div>

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

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

**Синтаксис**

```sql theme={null}
normalizedQueryHashKeepNames(x)
```

**Аргументы**

* `x` — Последовательность символов. [`String`](/ru/reference/data-types/string)

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

Возвращает 64-битное хеш-значение. [`UInt64`](/ru/reference/data-types/int-uint)

**Примеры**

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

```sql title=Query theme={null}
SELECT normalizedQueryHash('SELECT 1 AS `xyz123`') != normalizedQueryHash('SELECT 1 AS `abc123`') AS normalizedQueryHash;
SELECT normalizedQueryHashKeepNames('SELECT 1 AS `xyz123`') != normalizedQueryHashKeepNames('SELECT 1 AS `abc123`') AS normalizedQueryHashKeepNames;
```

```response title=Response theme={null}
┌─normalizedQueryHash─┐
│                   0 │
└─────────────────────┘
┌─normalizedQueryHashKeepNames─┐
│                            1 │
└──────────────────────────────┘
```

<div id="obfuscateQuery">
  ## obfuscateQuery
</div>

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

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

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

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

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

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

**Синтаксис**

```sql theme={null}
obfuscateQuery(query[, tag])
```

**Аргументы**

* `query` — SQL-запрос, который нужно обфусцировать. [`String`](/ru/reference/data-types/string)
* `tag` — Необязательно. Значение, которое позволяет предотвратить устранение общих подвыражений, если один и тот же вызов функции используется несколько раз.

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

Обфусцированный запрос, в котором идентификаторы и литералы заменены, а исходная структура запроса сохранена. [`String`](/ru/reference/data-types/string)

**Примеры**

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

```sql title=Query theme={null}
SELECT obfuscateQuery('SELECT name, age FROM users WHERE age > 30')
```

```response title=Response theme={null}
SELECT fruit, number FROM table WHERE number > 12
```

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

```sql title=Query theme={null}
SELECT obfuscateQuery('SELECT * FROM t', 1), obfuscateQuery('SELECT * FROM t', 2)
```

```response title=Response theme={null}
SELECT a FROM b, SELECT c FROM d
```

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

```sql title=Query theme={null}
SELECT obfuscateQuery('SELECT 1') AS a, obfuscateQuery('SELECT 1') AS b
```

```response title=Response theme={null}
A B
```

<div id="obfuscateQueryWithSeed">
  ## obfuscateQueryWithSeed
</div>

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

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

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

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

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

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

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

**Синтаксис**

```sql theme={null}
obfuscateQueryWithSeed(query, seed)
```

**Аргументы**

* `query` — SQL-запрос для обфускации. [`String`](/ru/reference/data-types/string)
* `seed` — seed для обфускации. Один и тот же seed даёт детерминированные результаты. [`Integer`](/ru/reference/data-types/int-uint) или [`String`](/ru/reference/data-types/string)

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

Обфусцированный запрос, детерминированно сгенерированный на основе указанного seed. [`String`](/ru/reference/data-types/string)

**Примеры**

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

```sql title=Query theme={null}
SELECT obfuscateQueryWithSeed('SELECT name FROM users', 42)
```

```response title=Response theme={null}
SELECT fruit FROM table
```

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

```sql title=Query theme={null}
SELECT obfuscateQueryWithSeed('SELECT id, value FROM data', 'myseed')
```

```response title=Response theme={null}
SELECT a, b FROM c
```

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

```sql title=Query theme={null}
SELECT obfuscateQueryWithSeed('SELECT 1', 100) = obfuscateQueryWithSeed('SELECT 1', 100)
```

```response title=Response theme={null}
true
```

<div id="parseReadableSize">
  ## parseReadableSize
</div>

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

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

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

**Синтаксис**

```sql theme={null}
parseReadableSize(x)
```

**Аргументы**

* `x` — Размер в удобочитаемом формате с единицами ISO/IEC 80000-13 или десятичными байтовыми единицами. [`String`](/ru/reference/data-types/string)

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

Возвращает количество байтов, округлённое вверх до ближайшего целого числа. [`UInt64`](/ru/reference/data-types/int-uint)

**Примеры**

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

```sql title=Query theme={null}
SELECT arrayJoin(['1 B', '1 KiB', '3 MB', '5.314 KiB']) AS readable_sizes, parseReadableSize(readable_sizes) AS sizes;
```

```response title=Response theme={null}
┌─readable_sizes─┬───sizes─┐
│ 1 B            │       1 │
│ 1 KiB          │    1024 │
│ 3 MB           │ 3000000 │
│ 5.314 KiB      │    5442 │
└────────────────┴─────────┘
```

<div id="parseReadableSizeOrNull">
  ## parseReadableSizeOrNull
</div>

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

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

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

**Синтаксис**

```sql theme={null}
parseReadableSizeOrNull(x)
```

**Аргументы**

* `x` — Размер в удобочитаемом формате с единицами ISO/IEC 80000-13 или десятичными байтовыми единицами. [`String`](/ru/reference/data-types/string)

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

Возвращает количество байтов, округлённое вверх до ближайшего целого, или `NULL`, если входное значение не удаётся разобрать [`Nullable(UInt64)`](/ru/reference/data-types/nullable)

**Примеры**

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

```sql title=Query theme={null}
SELECT arrayJoin(['1 B', '1 KiB', '3 MB', '5.314 KiB', 'invalid']) AS readable_sizes, parseReadableSizeOrNull(readable_sizes) AS sizes;
```

```response title=Response theme={null}
┌─readable_sizes─┬───sizes─┐
│ 1 B            │       1 │
│ 1 KiB          │    1024 │
│ 3 MB           │ 3000000 │
│ 5.314 KiB      │    5442 │
│ invalid        │    ᴺᵁᴸᴸ │
└────────────────┴─────────┘
```

<div id="parseReadableSizeOrZero">
  ## parseReadableSizeOrZero
</div>

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

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

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

**Синтаксис**

```sql theme={null}
parseReadableSizeOrZero(x)
```

**Аргументы**

* `x` — Размер в удобочитаемом формате по ISO/IEC 80000-13 или в десятичных единицах измерения байтов. [`String`](/ru/reference/data-types/string)

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

Возвращает количество байтов, округлённое вверх до ближайшего целого, или `0`, если не удалось разобрать входное значение. [`UInt64`](/ru/reference/data-types/int-uint)

**Примеры**

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

```sql title=Query theme={null}
SELECT arrayJoin(['1 B', '1 KiB', '3 MB', '5.314 KiB', 'invalid']) AS readable_sizes, parseReadableSizeOrZero(readable_sizes) AS sizes;
```

```response title=Response theme={null}
┌─readable_sizes─┬───sizes─┐
│ 1 B            │       1 │
│ 1 KiB          │    1024 │
│ 3 MB           │ 3000000 │
│ 5.314 KiB      │    5442 │
│ invalid        │       0 │
└────────────────┴─────────┘
```

<div id="parseTimeDelta">
  ## parseTimeDelta
</div>

Добавленный в: 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 дня.

**Синтаксис**

```sql theme={null}
parseTimeDelta(timestr)
```

**Аргументы**

* `timestr` — Последовательность чисел, за которой следует нечто, напоминающее единицу времени. [`String`](/ru/reference/data-types/string)

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

Число секунд. [`Float64`](/ru/reference/data-types/float)

**Примеры**

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

```sql title=Query theme={null}
SELECT parseTimeDelta('11s+22min')
```

```response title=Response theme={null}
┌─parseTimeDelta('11s+22min')─┐
│                        1331 │
└─────────────────────────────┘
```

**Сложные единицы времени**

```sql title=Query theme={null}
SELECT parseTimeDelta('1yr2mo')
```

```response title=Response theme={null}
┌─parseTimeDelta('1yr2mo')─┐
│                 36806400 │
└──────────────────────────┘
```

<div id="partitionId">
  ## partitionId
</div>

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

Вычисляет [идентификатор партиции](/ru/reference/engines/table-engines/mergetree-family/custom-partitioning-key).

<Note>
  Эта функция работает медленно, поэтому её не следует вызывать для большого числа строк.
</Note>

**Синтаксис**

```sql theme={null}
partitionId(column1[, column2, ...])
```

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

**Аргументы**

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

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

Возвращает идентификатор партиции, к которой принадлежит строка. [`String`](/ru/reference/data-types/string)

**Примеры**

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

```sql title=Query theme={null}
DROP TABLE IF EXISTS tab;

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

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

SELECT i, j, partitionId(i), _partition_id FROM tab ORDER BY i, j;
```

```response title=Response theme={null}
┌─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             │
└───┴───┴────────────────┴───────────────┘
```

<div id="queryID">
  ## queryID
</div>

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

Возвращает идентификатор текущего запроса.
Другие параметры запроса можно извлечь из поля `query_id` таблицы [`system.query_log`](/ru/reference/system-tables/query_log).

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

**Синтаксис**

```sql theme={null}
queryID()
```

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

**Аргументы**

* Нет.

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

Возвращает идентификатор текущего запроса. [`String`](/ru/reference/data-types/string)

**Примеры**

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

```sql title=Query theme={null}
CREATE TABLE tmp (str String) ENGINE = Log;
INSERT INTO tmp (*) VALUES ('a');
SELECT count(DISTINCT t) FROM (SELECT queryID() AS t FROM remote('127.0.0.{1..3}', currentDatabase(), 'tmp') GROUP BY queryID());
```

```response title=Response theme={null}
┌─count(DISTINCT t)─┐
│                 3 │
└───────────────────┘
```

<div id="revision">
  ## revision
</div>

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

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

**Синтаксис**

```sql theme={null}
revision()
```

**Аргументы**

* Нет.

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

Возвращает текущую ревизию сервера ClickHouse. [`UInt32`](/ru/reference/data-types/int-uint)

**Примеры**

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

```sql title=Query theme={null}
SELECT revision()
```

```response title=Response theme={null}
┌─revision()─┐
│      54485 │
└────────────┘
```

<div id="rowNumberInAllBlocks">
  ## rowNumberInAllBlocks
</div>

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

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

**Синтаксис**

```sql theme={null}
rowNumberInAllBlocks()
```

**Аргументы**

* None.

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

Возвращает порядковый номер строки в блоке данных, начиная с `0`. [`UInt64`](/ru/reference/data-types/int-uint)

**Примеры**

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

```sql title=Query theme={null}
SELECT rowNumberInAllBlocks()
FROM
(
    SELECT *
    FROM system.numbers_mt
    LIMIT 10
)
SETTINGS max_block_size = 2
```

```response title=Response theme={null}
┌─rowNumberInAllBlocks()─┐
│                      0 │
│                      1 │
└────────────────────────┘
┌─rowNumberInAllBlocks()─┐
│                      4 │
│                      5 │
└────────────────────────┘
┌─rowNumberInAllBlocks()─┐
│                      2 │
│                      3 │
└────────────────────────┘
┌─rowNumberInAllBlocks()─┐
│                      6 │
│                      7 │
└────────────────────────┘
┌─rowNumberInAllBlocks()─┐
│                      8 │
│                      9 │
└────────────────────────┘
```

<div id="rowNumberInBlock">
  ## rowNumberInBlock
</div>

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

Для каждого [блока](/ru/resources/develop-contribute/introduction/architecture#block), обрабатываемого функцией `rowNumberInBlock`, возвращает номер текущей строки.

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

**Синтаксис**

```sql theme={null}
rowNumberInBlock()
```

**Аргументы**

* Нет.

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

Возвращает порядковый номер строки в блоке данных, начиная с `0`. [`UInt64`](/ru/reference/data-types/int-uint)

**Примеры**

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

```sql title=Query theme={null}
SELECT rowNumberInBlock()
FROM
(
    SELECT *
    FROM system.numbers_mt
    LIMIT 10
) SETTINGS max_block_size = 2
```

```response title=Response theme={null}
┌─rowNumberInBlock()─┐
│                  0 │
│                  1 │
└────────────────────┘
┌─rowNumberInBlock()─┐
│                  0 │
│                  1 │
└────────────────────┘
┌─rowNumberInBlock()─┐
│                  0 │
│                  1 │
└────────────────────┘
┌─rowNumberInBlock()─┐
│                  0 │
│                  1 │
└────────────────────┘
┌─rowNumberInBlock()─┐
│                  0 │
│                  1 │
└────────────────────┘
```

<div id="runningAccumulate">
  ## runningAccumulate
</div>

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

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

<Warning>
  **Устарело**

  Состояние сбрасывается с каждым новым блоком данных.
  Из-за такого поведения, приводящего к ошибкам, функция объявлена устаревшей, и вместо нее рекомендуется использовать [оконные функции](/ru/reference/functions/window-functions).
  Чтобы разрешить использование этой функции, можно использовать настройку [`allow_deprecated_error_prone_window_functions`](/ru/reference/settings/session-settings#allow_deprecated_error_prone_window_functions).
</Warning>

**Синтаксис**

```sql theme={null}
runningAccumulate(agg_state[, grouping])
```

**Аргументы**

* `agg_state` — Состояние агрегатной функции. [`AggregateFunction`](/ru/reference/data-types/aggregatefunction)
* `grouping` — Необязательный. Ключ группировки. Состояние функции сбрасывается при изменении значения `grouping`. Это может быть любой из поддерживаемых типов данных, для которых определён оператор равенства. [`Any`](/ru/reference/data-types)

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

Возвращает накопленный результат для каждой строки. [`Any`](/ru/reference/data-types)

**Примеры**

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

```sql title=Query theme={null}
WITH initializeAggregation('sumState', number) AS one_row_sum_state
SELECT
    number,
    finalizeAggregation(one_row_sum_state) AS one_row_sum,
    runningAccumulate(one_row_sum_state) AS cumulative_sum
FROM numbers(5);
```

```response title=Response theme={null}
┌─number─┬─one_row_sum─┬─cumulative_sum─┐
│      0 │           0 │              0 │
│      1 │           1 │              1 │
│      2 │           2 │              3 │
│      3 │           3 │              6 │
│      4 │           4 │             10 │
└────────┴─────────────┴────────────────┘
```

<div id="runningConcurrency">
  ## runningConcurrency
</div>

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

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

<Tip>
  **Требования**

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

<Warning>
  **Устарело**

  Рекомендуется использовать [оконные функции](/ru/reference/functions/window-functions).
</Warning>

**Синтаксис**

```sql theme={null}
runningConcurrency(start, end)
```

**Аргументы**

* `start` — столбец со временем начала событий. [`Date`](/ru/reference/data-types/date) или [`DateTime`](/ru/reference/data-types/datetime) или [`DateTime64`](/ru/reference/data-types/datetime64)
* `end` — столбец со временем окончания событий. [`Date`](/ru/reference/data-types/date) или [`DateTime`](/ru/reference/data-types/datetime) или [`DateTime64`](/ru/reference/data-types/datetime64)

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

Возвращает количество одновременно происходящих событий в момент начала каждого события. [`UInt32`](/ru/reference/data-types/int-uint)

**Примеры**

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

```sql title=Query theme={null}
SELECT start, runningConcurrency(start, end) FROM example_table;
```

```response title=Response theme={null}
┌──────start─┬─runningConcurrency(start, end)─┐
│ 2025-03-03 │                              1 │
│ 2025-03-06 │                              2 │
│ 2025-03-07 │                              3 │
│ 2025-03-11 │                              2 │
└────────────┴────────────────────────────────┘
```

<div id="runningDifference">
  ## runningDifference
</div>

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

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

<Warning>
  **Устарело**

  Возвращает разницу только в пределах текущего обрабатываемого блока данных.
  Из-за такого поведения, подверженного ошибкам, функция помечена как устаревшая.
  Вместо неё рекомендуется использовать [оконные функции](/ru/reference/functions/window-functions).

  Чтобы разрешить использование этой функции, можно включить настройку [`allow_deprecated_error_prone_window_functions`](/ru/reference/settings/session-settings#allow_deprecated_error_prone_window_functions).
</Warning>

Результат функции зависит от того, какие блоки данных были затронуты, и от порядка данных в блоке.
Порядок строк при вычислении `runningDifference()` может отличаться от порядка строк, возвращаемых пользователю.
Чтобы этого избежать, можно создать подзапрос с [`ORDER BY`](/ru/reference/statements/select/order-by) и вызвать функцию вне этого подзапроса.
Обратите внимание, что размер блока влияет на результат.
Внутреннее состояние `runningDifference` сбрасывается для каждого нового блока.

**Синтаксис**

```sql theme={null}
runningDifference(x)
```

**Аргументы**

* `x` — столбец, для которого вычисляется разность с предыдущим значением. [`Any`](/ru/reference/data-types)

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

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

**Примеры**

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

```sql title=Query theme={null}
SELECT
    EventID,
    EventTime,
    runningDifference(EventTime) AS delta
FROM
(
    SELECT
        EventID,
        EventTime
    FROM events
    WHERE EventDate = '2025-11-24'
    ORDER BY EventTime ASC
    LIMIT 5
);
```

```response title=Response theme={null}
┌─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 │
└─────────┴─────────────────────┴───────┘
```

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

```sql title=Query theme={null}
SELECT
    number,
    runningDifference(number + 1) AS diff
FROM numbers(100000)
WHERE diff != 1;
```

```response title=Response theme={null}
┌─number─┬─diff─┐
│      0 │    0 │
└────────┴──────┘
┌─number─┬─diff─┐
│  65536 │    0 │
└────────┴──────┘
```

<div id="runningDifferenceStartingWithFirstValue">
  ## runningDifferenceStartingWithFirstValue
</div>

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

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

<Warning>
  **Устарело**

  Возвращает разность только в пределах текущего обрабатываемого блока данных.
  Из-за такого поведения, подверженного ошибкам, функция помечена как устаревшая.
  Вместо неё рекомендуется использовать [оконные функции](/ru/reference/functions/window-functions).

  Чтобы разрешить использование этой функции, можно использовать настройку `allow_deprecated_error_prone_window_functions`.
</Warning>

**Синтаксис**

```sql theme={null}
runningDifferenceStartingWithFirstValue(x)
```

**Аргументы**

* `x` — столбец, для которого вычисляется разность с предыдущей строкой. [`Any`](/ru/reference/data-types)

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

Возвращает разность между последовательными значениями; для первой строки возвращается значение из первой строки. [`Any`](/ru/reference/data-types)

**Примеры**

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

```sql title=Query theme={null}
SELECT
    number,
    runningDifferenceStartingWithFirstValue(number) AS diff
FROM numbers(5);
```

```response title=Response theme={null}
┌─number─┬─diff─┐
│      0 │    0 │
│      1 │    1 │
│      2 │    1 │
│      3 │    1 │
│      4 │    1 │
└────────┴──────┘
```

<div id="serverUUID">
  ## serverUUID
</div>

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

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

**Синтаксис**

```sql theme={null}
serverUUID()
```

**Аргументы**

* Отсутствуют.

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

Возвращает случайный UUID сервера. [`UUID`](/ru/reference/data-types/uuid)

**Примеры**

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

```sql title=Query theme={null}
SELECT serverUUID();
```

```response title=Response theme={null}
┌─serverUUID()─────────────────────────────┐
│ 7ccc9260-000d-4d5c-a843-5459abaabb5f     │
└──────────────────────────────────────────┘
```

<div id="shardCount">
  ## shardCount
</div>

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

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

**Синтаксис**

```sql theme={null}
shardCount()
```

**Аргументы**

* None.

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

Возвращает общее число сегментов или `0`. [`UInt32`](/ru/reference/data-types/int-uint)

**Примеры**

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

```sql title=Query theme={null}
-- См. пример shardNum() выше, который также демонстрирует shardCount()
CREATE TABLE shard_count_example (dummy UInt8)
ENGINE=Distributed(test_cluster_two_shards_localhost, system, one, dummy);
SELECT shardCount() FROM shard_count_example;
```

```response title=Response theme={null}
┌─shardCount()─┐
│            2 │
│            2 │
└──────────────┘
```

<div id="shardNum">
  ## shardNum
</div>

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

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

**Синтаксис**

```sql theme={null}
shardNum()
```

**Аргументы**

* Нет.

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

Возвращает индекс сегмента или константу `0`. [`UInt32`](/ru/reference/data-types/int-uint)

**Примеры**

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

```sql title=Query theme={null}
CREATE TABLE shard_num_example (dummy UInt8)
ENGINE=Distributed(test_cluster_two_shards_localhost, system, one, dummy);
SELECT dummy, shardNum(), shardCount() FROM shard_num_example;
```

```response title=Response theme={null}
┌─dummy─┬─shardNum()─┬─shardCount()─┐
│     0 │          1 │            2 │
│     0 │          2 │            2 │
└───────┴────────────┴──────────────┘
```

<div id="showCertificate">
  ## showCertificate
</div>

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

Показывает информацию о текущем SSL-сертификате сервера, если он настроен.
Подробнее о том, как настроить ClickHouse для использования сертификатов OpenSSL для проверки подключений, см. в разделе [Настройка TLS](/ru/concepts/features/security/tls/configuring-tls).

**Синтаксис**

```sql theme={null}
showCertificate()
```

**Аргументы**

* Отсутствуют.

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

Возвращает Map с парами ключ-значение, относящимися к настроенному SSL-сертификату. [`Map(String, String)`](/ru/reference/data-types/map)

**Примеры**

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

```sql title=Query theme={null}
SELECT showCertificate() FORMAT LineAsString;
```

```response title=Response theme={null}
{'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'}
```

<div id="sleep">
  ## sleep
</div>

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

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

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

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

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

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

**Синтаксис**

```sql theme={null}
sleep(seconds)
```

**Аргументы**

* `seconds` — Количество секунд, на которое приостанавливается выполнение запроса; не более 3 секунд. Для указания долей секунды можно использовать число с плавающей точкой. [`const UInt*`](/ru/reference/data-types/int-uint) или [`const Float*`](/ru/reference/data-types/float)

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

Возвращает `0`. [`UInt8`](/ru/reference/data-types/int-uint)

**Примеры**

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

```sql title=Query theme={null}
-- Этот запрос приостановится на 2 секунды перед завершением.
-- В течение этого времени результаты возвращаться не будут, и запрос будет выглядеть зависшим или не отвечающим.
SELECT sleep(2);
```

```response title=Response theme={null}
┌─sleep(2)─┐
│        0 │
└──────────┘
1 row in set. Elapsed: 2.012 sec.
```

<div id="sleepEachRow">
  ## sleepEachRow
</div>

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

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

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

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

<Warning>
  Как и в случае с функцией `sleep()`, `sleepEachRow()` следует использовать осмотрительно и только при необходимости, поскольку она может значительно снизить общую производительность и отзывчивость системы ClickHouse, особенно при работе с большими результирующими наборами.
</Warning>

**Синтаксис**

```sql theme={null}
sleepEachRow(seconds)
```

**Аргументы**

* `seconds` — Количество секунд, на которое приостанавливается выполнение запроса для каждой строки результирующего набора, не более 3 секунд. Для указания долей секунды можно использовать значение с плавающей точкой. [`const UInt*`](/ru/reference/data-types/int-uint) или [`const Float*`](/ru/reference/data-types/float)

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

Возвращает `0` для каждой строки. [`UInt8`](/ru/reference/data-types/int-uint)

**Примеры**

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

```sql title=Query theme={null}
-- Вывод будет задержан: между каждой строкой будет пауза 0,5 секунды.
SELECT number, sleepEachRow(0.5) FROM system.numbers LIMIT 5;
```

```response title=Response theme={null}
┌─number─┬─sleepEachRow(0.5)─┐
│      0 │                 0 │
│      1 │                 0 │
│      2 │                 0 │
│      3 │                 0 │
│      4 │                 0 │
└────────┴───────────────────┘
```

<div id="structureToCapnProtoSchema">
  ## structureToCapnProtoSchema
</div>

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

Функция, преобразующая структуру таблицы ClickHouse в схему формата CapnProto

**Синтаксис**

```sql theme={null}
structureToCapnProtoSchema(table_structure, message)
```

**Аргументы**

* Отсутствуют.

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

**Примеры**

**random**

```sql title=Query theme={null}
SELECT structureToCapnProtoSchema('s String, x UInt32', 'MessageName') format TSVRaw
```

```response title=Response theme={null}
struct MessageName
{
    s @0 : Data;
    x @1 : UInt32;
}
```

<div id="structureToProtobufSchema">
  ## structureToProtobufSchema
</div>

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

Преобразует структуру таблицы ClickHouse в схему в формате Protobuf.

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

**Синтаксис**

```sql theme={null}
structureToProtobufSchema(structure, message_name)
```

**Аргументы**

* `structure` — определение структуры таблицы ClickHouse в виде строки (например, 'column1 Type1, column2 Type2'). [`String`](/ru/reference/data-types/string)
* `message_name` — имя типа сообщения Protobuf в сгенерированной схеме. [`String`](/ru/reference/data-types/string)

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

Возвращает определение схемы Protobuf в синтаксисе proto3, соответствующее входной структуре таблицы ClickHouse. [`String`](/ru/reference/data-types/string)

**Примеры**

**Преобразование структуры ClickHouse в схему Protobuf**

```sql title=Query theme={null}
SELECT structureToProtobufSchema('s String, x UInt32', 'MessageName') FORMAT TSVRaw;
```

```response title=Response theme={null}
syntax = "proto3";

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

<div id="tcpPort">
  ## tcpPort
</div>

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

Возвращает номер TCP-порта [нативного интерфейса](/ru/concepts/features/interfaces/tcp), на котором сервер прослушивает подключения.
Если функция выполняется в контексте distributed таблицы, она создает обычный столбец со значениями, относящимися к каждому сегменту.
В противном случае возвращает константное значение.

**Синтаксис**

```sql theme={null}
tcpPort()
```

**Аргументы**

* Отсутствуют.

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

Возвращает номер TCP-порта. [`UInt16`](/ru/reference/data-types/int-uint)

**Примеры**

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

```sql title=Query theme={null}
SELECT tcpPort()
```

```response title=Response theme={null}
┌─tcpPort()─┐
│      9000 │
└───────────┘
```

<div id="throwIf">
  ## throwIf
</div>

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

Генерирует исключение, если аргумент x равен true.
Чтобы использовать аргумент `error_code`, должен быть включен параметр конфигурации `allow_custom_error_code_in_throw`.

**Синтаксис**

```sql theme={null}
throwIf(x[, message[, error_code]])
```

**Аргументы**

* `x` — Условие для проверки. [`Any`](/ru/reference/data-types)
* `message` — Необязательно. Произвольное сообщение об ошибке. [`const String`](/ru/reference/data-types/string)
* `error_code` — Необязательно. Произвольный код ошибки. [`const Int8/16/32`](/ru/reference/data-types/int-uint)

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

Возвращает `0`, если условие ложно, и генерирует исключение, если условие истинно. [`UInt8`](/ru/reference/data-types/int-uint)

**Примеры**

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

```sql title=Query theme={null}
SELECT throwIf(number = 3, 'Too many') FROM numbers(10);
```

```response title=Response theme={null}
↙ Progress: 0.00 rows, 0.00 B (0.00 rows/s., 0.00 B/s.) Received exception from server (version 19.14.1):
Code: 395. DB::Exception: Received from localhost:9000. DB::Exception: Too many.
```

<div id="toColumnTypeName">
  ## toColumnTypeName
</div>

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

Возвращает внутреннее имя типа данных указанного значения.
В отличие от функции [`toTypeName`](#toTypeName), возвращаемый тип данных может включать внутренние столбцы-обёртки, такие как `Const` и `LowCardinality`.

**Синтаксис**

```sql theme={null}
toColumnTypeName(value)
```

**Аргументы**

* `value` — Значение, для которого требуется вернуть внутренний тип данных. [`Any`](/ru/reference/data-types)

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

Возвращает внутренний тип данных, используемый для представления значения. [`String`](/ru/reference/data-types/string)

**Примеры**

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

```sql title=Query theme={null}
SELECT toColumnTypeName(CAST('2025-01-01 01:02:03' AS DateTime));
```

```response title=Response theme={null}
┌─toColumnTypeName(CAST('2025-01-01 01:02:03', 'DateTime'))─┐
│ Const(UInt32)                                             │
└───────────────────────────────────────────────────────────┘
```

<div id="toTypeName">
  ## toTypeName
</div>

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

Возвращает имя типа переданного аргумента.
Если передан `NULL`, функция возвращает тип `Nullable(Nothing)`, который соответствует внутреннему представлению `NULL` в ClickHouse.

**Синтаксис**

```sql theme={null}
toTypeName(x)
```

**Аргументы**

* `x` — Значение произвольного типа. [`Any`](/ru/reference/data-types)

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

Возвращает имя типа данных переданного значения. [`String`](/ru/reference/data-types/string)

**Примеры**

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

```sql title=Query theme={null}
SELECT toTypeName(123)
```

```response title=Response theme={null}
┌─toTypeName(123)─┐
│ UInt8           │
└─────────────────┘
```

<div id="tokenizeQuery">
  ## tokenizeQuery
</div>

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

Разбивает строку запроса ClickHouse SQL на токены и возвращает массив токенов.
Каждый токен представляет собой именованный кортеж с начальной позицией (в байтах), конечной позицией и типом токена.

**Синтаксис**

```sql theme={null}
tokenizeQuery(query)
```

**Аргументы**

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

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

Массив именованных Tuple `(begin UInt64, end UInt64, type Enum8(...))`, представляющих токены запроса. [`Array(Tuple(begin UInt64, end UInt64, type Enum8(...)))`](/ru/reference/data-types/array)

**Примеры**

**простой**

```sql title=Query theme={null}
SELECT tokenizeQuery('SELECT 1')
```

```response title=Response theme={null}
[(0,6,'BareWord'),(6,7,'Whitespace'),(7,8,'Number')]
```

<div id="transactionID">
  ## transactionID
</div>

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

Возвращает идентификатор транзакции.

<Note>
  Эта функция входит в набор экспериментальных возможностей.
  Чтобы включить экспериментальную поддержку транзакций, добавьте этот параметр в [конфигурацию](/ru/concepts/features/configuration/server-config/configuration-files):

  ```xml theme={null}
  <clickhouse>
      <allow_experimental_transactions>1</allow_experimental_transactions>
  </clickhouse>
  ```

  Дополнительные сведения см. на странице [Поддержка транзакций (ACID)](/ru/concepts/features/operations/insert/transactions#transactions-commit-and-rollback).
</Note>

**Синтаксис**

```sql theme={null}
transactionID()
```

**Аргументы**

* Отсутствуют.

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

Возвращает кортеж, состоящий из `start_csn`, `local_tid` и `host_id`.

* `start_csn`: Глобальный последовательный номер — самая поздняя временная метка commit, видимая на момент начала этой транзакции.
* `local_tid`: Локальный последовательный номер, уникальный для каждой транзакции, начатой этим хостом в рамках конкретного start\_csn.
* `host_id`: UUID хоста, который начал эту транзакцию.
  [`Tuple(UInt64, UInt64, UUID)`](/ru/reference/data-types/tuple)

**Примеры**

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

```sql title=Query theme={null}
BEGIN TRANSACTION;
SELECT transactionID();
ROLLBACK;
```

```response title=Response theme={null}
┌─transactionID()────────────────────────────────┐
│ (32,34,'0ee8b069-f2bb-4748-9eae-069c85b5252b') │
└────────────────────────────────────────────────┘
```

<div id="transactionLatestSnapshot">
  ## transactionLatestSnapshot
</div>

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

Возвращает самый новый снимок (Commit Sequence Number) [транзакции](/ru/concepts/features/operations/insert/transactions#transactions-commit-and-rollback), доступный для чтения.

<Note>
  Эта функция входит в набор экспериментальных возможностей. Чтобы включить экспериментальную поддержку транзакций, добавьте этот параметр в конфигурацию:

  ```xml theme={null}
  <clickhouse>
      <allow_experimental_transactions>1</allow_experimental_transactions>
  </clickhouse>
  ```

  Дополнительные сведения см. на странице [Поддержка транзакций (ACID)](/ru/concepts/features/operations/insert/transactions#transactions-commit-and-rollback).
</Note>

**Синтаксис**

```sql theme={null}
transactionLatestSnapshot()
```

**Аргументы**

* Отсутствуют.

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

Возвращает последний снимок (CSN) транзакции. [`UInt64`](/ru/reference/data-types/int-uint)

**Примеры**

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

```sql title=Query theme={null}
BEGIN TRANSACTION;
SELECT transactionLatestSnapshot();
ROLLBACK;
```

```response title=Response theme={null}
┌─transactionLatestSnapshot()─┐
│                          32 │
└─────────────────────────────┘
```

<div id="transactionOldestSnapshot">
  ## transactionOldestSnapshot
</div>

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

Возвращает самый старый снимок (Commit Sequence Number), который виден некоторой выполняющейся [транзакции](/ru/concepts/features/operations/insert/transactions#transactions-commit-and-rollback).

<Note>
  Эта функция входит в набор экспериментальных возможностей. Включите экспериментальную поддержку транзакций, добавив эту настройку в конфигурацию:

  ```xml theme={null}
  <clickhouse>
      <allow_experimental_transactions>1</allow_experimental_transactions>
  </clickhouse>
  ```

  Дополнительные сведения см. на странице [Поддержка транзакций (ACID)](/ru/concepts/features/operations/insert/transactions#transactions-commit-and-rollback).
</Note>

**Синтаксис**

```sql theme={null}
transactionOldestSnapshot()
```

**Аргументы**

* Отсутствуют.

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

Возвращает наиболее ранний снимок (CSN) транзакции. [`UInt64`](/ru/reference/data-types/int-uint)

**Примеры**

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

```sql title=Query theme={null}
BEGIN TRANSACTION;
SELECT transactionOldestSnapshot();
ROLLBACK;
```

```response title=Response theme={null}
┌─transactionOldestSnapshot()─┐
│                          32 │
└─────────────────────────────┘
```

<div id="transform">
  ## transform
</div>

Добавленный в: 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`, где все типы должны быть одинаковыми

**Синтаксис**

```sql theme={null}
transform(x, array_from, array_to[, default])
```

**Аргументы**

* `x` — Значение для преобразования. [`(U)Int*`](/ru/reference/data-types/int-uint) или [`Decimal`](/ru/reference/data-types/decimal) или [`Float*`](/ru/reference/data-types/float) или [`String`](/ru/reference/data-types/string) или [`Date`](/ru/reference/data-types/date) или [`DateTime`](/ru/reference/data-types/datetime)
* `array_from` — Константный массив значений для поиска совпадений. [`Array((U)Int*)`](/ru/reference/data-types/array) или [`Array(Decimal)`](/ru/reference/data-types/array) или [`Array(Float*)`](/ru/reference/data-types/array) или [`Array(String)`](/ru/reference/data-types/array) или [`Array(Date)`](/ru/reference/data-types/array) или [`Array(DateTime)`](/ru/reference/data-types/array)
* `array_to` — Константный массив значений, возвращаемых при соответствующих совпадениях в `array_from`. [`Array((U)Int*)`](/ru/reference/data-types/array) или [`Array(Decimal)`](/ru/reference/data-types/array) или [`Array(Float*)`](/ru/reference/data-types/array) или [`Array(String)`](/ru/reference/data-types/array) или [`Array(Date)`](/ru/reference/data-types/array) или [`Array(DateTime)`](/ru/reference/data-types/array)
* `default` — Необязательно. Значение, возвращаемое, если `x` не найден в `array_from`. Если не указано, возвращается `x` без изменений. [`(U)Int*`](/ru/reference/data-types/int-uint) или [`Decimal`](/ru/reference/data-types/decimal) или [`Float*`](/ru/reference/data-types/float) или [`String`](/ru/reference/data-types/string) или [`Date`](/ru/reference/data-types/date) или [`DateTime`](/ru/reference/data-types/datetime)

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

Возвращает соответствующее значение из `array_to`, если `x` совпадает с элементом в `array_from`; в противном случае возвращает `default` (если указан) или `x` (если `default` не указан). [`Any`](/ru/reference/data-types)

**Примеры**

**transform(T, Array(T), Array(U), U) -> U**

```sql title=Query theme={null}
SELECT
transform(SearchEngineID, [2, 3], ['Yandex', 'Google'], 'Other') AS title,
count() AS c
FROM test.hits
WHERE SearchEngineID != 0
GROUP BY title
ORDER BY c DESC
```

```response title=Response theme={null}
┌─title─────┬──────c─┐
│ Yandex    │ 498635 │
│ Google    │ 229872 │
│ Other     │ 104472 │
└───────────┴────────┘
```

**transform(T, Array(T), Array(T)) -> T**

```sql title=Query theme={null}
SELECT
transform(domain(Referer), ['yandex.ru', 'google.ru', 'vkontakte.ru'], ['www.yandex', 'example.com', 'vk.com']) AS s, count() AS c
FROM test.hits
GROUP BY domain(Referer)
ORDER BY count() DESC
LIMIT 10
```

```response title=Response theme={null}
┌─s──────────────┬───────c─┐
│                │ 2906259 │
│ www.yandex     │  867767 │
│ ███████.ru     │  313599 │
│ mail.yandex.ru │  107147 │
│ ██████.ru      │  100355 │
│ █████████.ru   │   65040 │
│ news.yandex.ru │   64515 │
│ ██████.net     │   59141 │
│ example.com    │   57316 │
└────────────────┴─────────┘
```

<div id="uniqThetaIntersect">
  ## uniqThetaIntersect
</div>

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

Два объекта типа uniqThetaSketch используются для вычисления пересечения (операция над множествами ∩); результатом является новый объект типа uniqThetaSketch.

**Синтаксис**

```sql theme={null}
uniqThetaIntersect(uniqThetaSketch,uniqThetaSketch)
```

**Аргументы**

* `uniqThetaSketch` — объект типа uniqThetaSketch. [`Tuple`](/ru/reference/data-types/tuple) или [`Array`](/ru/reference/data-types/array) или [`Date`](/ru/reference/data-types/date) или [`DateTime`](/ru/reference/data-types/datetime) или [`String`](/ru/reference/data-types/string) или [`(U)Int*`](/ru/reference/data-types/int-uint) или [`Float*`](/ru/reference/data-types/float) или [`Decimal`](/ru/reference/data-types/decimal)

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

Новый uniqThetaSketch, содержащий результат пересечения. [`UInt64`](/ru/reference/data-types/int-uint)

**Примеры**

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

```sql title=Query theme={null}
SELECT finalizeAggregation(uniqThetaIntersect(a, b)) AS a_intersect_b, finalizeAggregation(a) AS a_cardinality, finalizeAggregation(b) AS b_cardinality
FROM
(SELECT arrayReduce('uniqThetaState', [1, 2]) AS a, arrayReduce('uniqThetaState', [2, 3, 4]) AS b);
```

```response title=Response theme={null}
┌─a_intersect_b─┬─a_cardinality─┬─b_cardinality─┐
│             1 │             2 │             3 │
└───────────────┴───────────────┴───────────────┘
```

<div id="uniqThetaNot">
  ## uniqThetaNot
</div>

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

Выполняет вычисление a\_not\_b над двумя объектами типа uniqThetaSketch (операция над множествами ×); результатом является новый объект типа uniqThetaSketch.

**Синтаксис**

```sql theme={null}
uniqThetaNot(uniqThetaSketch,uniqThetaSketch)
```

**Аргументы**

* `uniqThetaSketch` — объект типа uniqThetaSketch. [`Tuple`](/ru/reference/data-types/tuple) или [`Array`](/ru/reference/data-types/array) или [`Date`](/ru/reference/data-types/date) или [`DateTime`](/ru/reference/data-types/datetime) или [`String`](/ru/reference/data-types/string) или [`(U)Int*`](/ru/reference/data-types/int-uint) или [`Float*`](/ru/reference/data-types/float) или [`Decimal`](/ru/reference/data-types/decimal)

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

Возвращает новый uniqThetaSketch, содержащий результат a\_not\_b. [`UInt64`](/ru/reference/data-types/int-uint)

**Примеры**

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

```sql title=Query theme={null}
SELECT finalizeAggregation(uniqThetaNot(a, b)) AS a_not_b, finalizeAggregation(a) AS a_cardinality, finalizeAggregation(b) AS b_cardinality
FROM
(SELECT arrayReduce('uniqThetaState', [2, 3, 4]) AS a, arrayReduce('uniqThetaState', [1, 2]) AS b);
```

```response title=Response theme={null}
┌─a_not_b─┬─a_cardinality─┬─b_cardinality─┐
│       2 │             3 │             2 │
└─────────┴───────────────┴───────────────┘
```

<div id="uniqThetaUnion">
  ## uniqThetaUnion
</div>

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

Два объекта типа uniqThetaSketch для вычисления объединения (операция над множествами ∪); результатом является новый объект типа uniqThetaSketch.

**Синтаксис**

```sql theme={null}
uniqThetaUnion(uniqThetaSketch,uniqThetaSketch)
```

**Аргументы**

* `uniqThetaSketch` — объект типа uniqThetaSketch. [`Tuple`](/ru/reference/data-types/tuple) или [`Array`](/ru/reference/data-types/array) или [`Date`](/ru/reference/data-types/date) или [`DateTime`](/ru/reference/data-types/datetime) или [`String`](/ru/reference/data-types/string) или [`(U)Int*`](/ru/reference/data-types/int-uint) или [`Float*`](/ru/reference/data-types/float) или [`Decimal`](/ru/reference/data-types/decimal)

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

Возвращает новый uniqThetaSketch, содержащий результат объединения. [`UInt64`](/ru/reference/data-types/int-uint)

**Примеры**

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

```sql title=Query theme={null}
SELECT finalizeAggregation(uniqThetaUnion(a, b)) AS a_union_b, finalizeAggregation(a) AS a_cardinality, finalizeAggregation(b) AS b_cardinality
FROM
(SELECT arrayReduce('uniqThetaState', [1, 2]) AS a, arrayReduce('uniqThetaState', [2, 3, 4]) AS b);
```

```response title=Response theme={null}
┌─a_union_b─┬─a_cardinality─┬─b_cardinality─┐
│         4 │             2 │             3 │
└───────────┴───────────────┴───────────────┘
```

<div id="uptime">
  ## uptime
</div>

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

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

**Синтаксис**

```sql theme={null}
uptime()
```

**Аргументы**

* Отсутствуют.

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

Возвращает время непрерывной работы сервера в секундах. [`UInt32`](/ru/reference/data-types/int-uint)

**Примеры**

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

```sql title=Query theme={null}
SELECT uptime() AS Uptime
```

```response title=Response theme={null}
┌─Uptime─┐
│  55867 │
└────────┘
```

<div id="variantElement">
  ## variantElement
</div>

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

Извлекает из столбца `Variant` столбец указанного типа.

**Синтаксис**

```sql theme={null}
variantElement(variant, type_name[, default_value])
```

**Аргументы**

* `variant` — столбец типа Variant. [`Variant`](/ru/reference/data-types/variant)
* `type_name` — имя типа варианта, который нужно извлечь. [`String`](/ru/reference/data-types/string)
* `default_value` — значение по умолчанию, которое будет использоваться, если `variant` не содержит варианта указанного типа. Может быть любого типа. Необязательный параметр. [`Any`](/ru/reference/data-types)

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

Возвращает столбец со значениями указанного типа варианта, извлечёнными из столбца Variant. [`Any`](/ru/reference/data-types)

**Примеры**

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

```sql title=Query theme={null}
CREATE TABLE test (v Variant(UInt64, String, Array(UInt64))) ENGINE = Memory;
INSERT INTO test VALUES (NULL), (42), ('Hello, World!'), ([1, 2, 3]);
SELECT v, variantElement(v, 'String'), variantElement(v, 'UInt64'), variantElement(v, 'Array(UInt64)') FROM test;
```

```response title=Response theme={null}
┌─v─────────────┬─variantElement(v, 'String')─┬─variantElement(v, 'UInt64')─┬─variantElement(v, 'Array(UInt64)')─┐
│ ᴺᵁᴸᴸ          │ ᴺᵁᴸᴸ                        │                        ᴺᵁᴸᴸ │ []                                 │
│ 42            │ ᴺᵁᴸᴸ                        │                          42 │ []                                 │
│ Hello, World! │ Hello, World!               │                        ᴺᵁᴸᴸ │ []                                 │
│ [1,2,3]       │ ᴺᵁᴸᴸ                        │                        ᴺᵁᴸᴸ │ [1,2,3]                            │
└───────────────┴─────────────────────────────┴─────────────────────────────┴────────────────────────────────────┘
```

<div id="variantType">
  ## variantType
</div>

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

Возвращает имя типа варианта для каждой строки столбца `Variant`. Если строка содержит NULL, для неё возвращается значение 'None'.

**Синтаксис**

```sql theme={null}
variantType(variant)
```

**Аргументы**

* `variant` — столбец типа Variant. [`Variant`](/ru/reference/data-types/variant)

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

Возвращает столбец Enum, содержащий имя типа варианта для каждой строки. [`Enum`](/ru/reference/data-types/enum)

**Примеры**

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

```sql title=Query theme={null}
CREATE TABLE test (v Variant(UInt64, String, Array(UInt64))) ENGINE = Memory;
INSERT INTO test VALUES (NULL), (42), ('Hello, World!'), ([1, 2, 3]);
SELECT variantType(v) FROM test;
```

```response title=Response theme={null}
┌─variantType(v)─┐
│ None           │
│ UInt64         │
│ String         │
│ Array(UInt64)  │
└────────────────┘
```

<div id="version">
  ## version
</div>

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

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

**Синтаксис**

```sql theme={null}
version()
```

**Аргументы**

* Отсутствуют.

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

Возвращает текущую версию ClickHouse. [`String`](/ru/reference/data-types/string)

**Примеры**

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

```sql title=Query theme={null}
SELECT version()
```

```response title=Response theme={null}
┌─version()─┐
│ 24.2.1.1  │
└───────────┘
```

<div id="visibleWidth">
  ## visibleWidth
</div>

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

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

**Синтаксис**

```sql theme={null}
visibleWidth(x)
```

**Аргументы**

* `x` — Значение любого типа данных. [`Any`](/ru/reference/data-types)

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

Возвращает приблизительную ширину значения при выводе в текстовом формате. [`UInt64`](/ru/reference/data-types/int-uint)

**Примеры**

**Вычисление отображаемой ширины NULL**

```sql title=Query theme={null}
SELECT visibleWidth(NULL)
```

```response title=Response theme={null}
┌─visibleWidth(NULL)─┐
│                  4 │
└────────────────────┘
```

<div id="zookeeperSessionUptime">
  ## zookeeperSessionUptime
</div>

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

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

**Синтаксис**

```sql theme={null}
zookeeperSessionUptime()
```

**Аргументы**

* Отсутствуют.

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

Возвращает время непрерывной работы текущего сеанса ZooKeeper в секундах. [`UInt32`](/ru/reference/data-types/int-uint)

**Примеры**

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

```sql title=Query theme={null}
SELECT zookeeperSessionUptime();
```

```response title=Response theme={null}
┌─zookeeperSessionUptime()─┐
│                      286 │
└──────────────────────────┘
```
