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

> Documentación de la categoría "Otras funciones"

# Otras funciones

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>
            Funcionalidad obsoleta
        </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>
            No es compatible con 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>
            Funcionalidad experimental. <u><a href="/docs/beta-and-experimental-features#experimental-features">Más información.</a></u>
        </div>;
};

<Note>
  La documentación sobre funciones que aparece a continuación se genera a partir de la tabla del sistema `system.functions`.
</Note>

{/*AUTOGENERATED_START*/}

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

Introducido en: v20.1.0

Devuelve el nombre de dominio completamente cualificado del servidor de ClickHouse.

**Sintaxis**

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

**Alias**: `fullHostName`

**Argumentos**

* Ninguno.

**Valor devuelto**

Devuelve el nombre de dominio completo del servidor ClickHouse. [`String`](/es/reference/data-types/string)

**Ejemplos**

**Ejemplo de uso**

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

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

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

Introducido en: v1.1.0

Interpreta un número [`UInt64`](/es/reference/data-types/int-uint) como una dirección MAC en orden big-endian.
Devuelve la dirección MAC correspondiente en formato `AA:BB:CC:DD:EE:FF` (números en hexadecimal separados por dos puntos) como cadena.

**Sintaxis**

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

**Argumentos**

* `num` — Número de tipo UInt64. [`UInt64`](/es/reference/data-types/int-uint)

**Valor devuelto**

Devuelve una dirección MAC en formato AA:BB:CC:DD:EE:FF. [`String`](/es/reference/data-types/string)

**Ejemplos**

**Ejemplo de uso**

```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>

Introducido en: v1.1.0

La función inversa de MACNumToString. Si la dirección MAC tiene un formato no válido, devuelve 0.

**Sintaxis**

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

**Argumentos**

* `s` — Cadena con la dirección MAC. [`String`](/es/reference/data-types/string)

**Valor devuelto**

Devuelve un número UInt64. [`UInt64`](/es/reference/data-types/int-uint)

**Ejemplos**

**Ejemplo de uso**

```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>

Introducido en: v1.1.0

Dada una dirección MAC con el formato AA:BB:CC:DD:EE:FF (números hexadecimales separados por dos puntos), devuelve los tres primeros octetos como un número UInt64. Si la dirección MAC tiene un formato no válido, devuelve 0.

**Sintaxis**

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

**Argumentos**

* `s` — Cadena con la dirección MAC. [`String`](/es/reference/data-types/string)

**Valor devuelto**

Los tres primeros octetos como número UInt64. [`UInt64`](/es/reference/data-types/int-uint)

**Ejemplos**

**Ejemplo de uso**

```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>

Introducido en: v25.11.0

Si el usuario de la sesión se ha cambiado con el comando EXECUTE AS, esta función devuelve el nombre del usuario original que se utilizó para autenticarse y crear la sesión.
Alias: authUser()

**Sintaxis**

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

**Alias**: `authUser`

**Argumentos**

* Ninguno.

**Valor devuelto**

El nombre del usuario autenticado. [`String`](/es/reference/data-types/string)

**Ejemplos**

**Ejemplo de uso**

```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>

Introducido en: v1.1.0

Crea un gráfico de barras.
Dibuja una banda con un ancho proporcional a (x - min) y de width caracteres cuando x = max.
La banda se dibuja con una precisión de un octavo de carácter.

**Sintaxis**

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

**Argumentos**

* `x` — Tamaño que se va a mostrar. [`(U)Int*`](/es/reference/data-types/int-uint) o [`Float*`](/es/reference/data-types/float) o [`Decimal`](/es/reference/data-types/decimal)
* `min` — El valor mínimo. [`(U)Int*`](/es/reference/data-types/int-uint) o [`Float*`](/es/reference/data-types/float) o [`Decimal`](/es/reference/data-types/decimal)
* `max` — El valor máximo. [`(U)Int*`](/es/reference/data-types/int-uint) o [`Float*`](/es/reference/data-types/float) o [`Decimal`](/es/reference/data-types/decimal)
* `width` — Opcional. El ancho de la barra en caracteres. El valor predeterminado es `80`. [`const (U)Int*`](/es/reference/data-types/int-uint) o [`const Float*`](/es/reference/data-types/float) o [`const Decimal`](/es/reference/data-types/decimal)

**Valor devuelto**

Devuelve una cadena que representa una barra de arte Unicode. [`String`](/es/reference/data-types/string)

**Ejemplos**

**Ejemplo de uso**

```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>

Introducido en: v1.1.0

Devuelve un número de secuencia del [bloque](/es/resources/develop-contribute/introduction/architecture#block) que contiene la fila y que aumenta de forma monótona.
El número de bloque devuelto se actualiza en la medida de lo posible; es decir, puede no ser totalmente preciso.

**Sintaxis**

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

**Argumentos**

* Ninguno.

**Valor devuelto**

Número de secuencia del bloque de datos en el que se encuentra la fila. [`UInt64`](/es/reference/data-types/int-uint)

**Ejemplos**

**Uso básico**

```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>

Introducido en: v20.3.0

Devuelve el tamaño sin comprimir, en bytes, de un bloque de valores almacenado en disco.

**Sintaxis**

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

**Argumentos**

* `x1[, x2, ...]` — Cualquier cantidad de valores para los que se obtiene el tamaño sin comprimir del bloque. [`Any`](/es/reference/data-types/index)

**Valor devuelto**

Devuelve la cantidad de bytes que se escribirán en disco para un bloque de valores sin compresión. [`UInt64`](/es/reference/data-types/int-uint)

**Ejemplos**

**Ejemplo de uso**

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

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

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

Introducido en: v1.1.0

En ClickHouse, las consultas se procesan en [bloques](/es/resources/develop-contribute/introduction/architecture#block) (fragmentos).
Esta función devuelve el tamaño (número de filas) del bloque sobre el que se invoca.

**Sintaxis**

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

**Argumentos**

* Ninguno.

**Valor devuelto**

Devuelve el número de filas del bloque actual. [`UInt64`](/es/reference/data-types/int-uint)

**Ejemplos**

**Ejemplo de uso**

```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>

Introducido en: v20.5.0

Devuelve el ID de compilación generado por un compilador para el binario en ejecución del servidor ClickHouse.
Si se ejecuta en el contexto de una tabla distribuida, esta función genera una columna normal con valores correspondientes a cada segmento.
De lo contrario, produce un valor constante.

**Sintaxis**

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

**Argumentos**

* Ninguno.

**Valor devuelto**

Devuelve el ID de compilación. [`String`](/es/reference/data-types/string)

**Ejemplos**

**Ejemplo de uso**

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

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

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

Introducido en: v21.1.0

Devuelve una estimación del tamaño en bytes sin comprimir de sus argumentos en memoria.
Para argumentos de tipo `String`, la función devuelve la longitud de la cadena + 8 (longitud).
Si la función tiene varios argumentos, acumula sus tamaños en bytes.

**Sintaxis**

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

**Argumentos**

* `arg1[, arg2, ...]` — Valores de cualquier tipo de dato cuyo tamaño en bytes sin comprimir se desea estimar. [`Any`](/es/reference/data-types/index)

**Valor devuelto**

Devuelve una estimación del tamaño en bytes de los argumentos en memoria. [`UInt64`](/es/reference/data-types/int-uint)

**Ejemplos**

**Ejemplo de uso**

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

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

**Varios argumentos**

```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>

Introducido en: v22.9.0

Evalúa un modelo externo de catboost. [CatBoost](https://catboost.ai) es una biblioteca de gradient boosting de código abierto desarrollada por Yandex para aprendizaje automático.
Acepta una ruta a un modelo catboost y los argumentos del modelo (`features`).

**Requisitos previos**

1. Compilar la biblioteca de evaluación de catboost

Antes de evaluar modelos catboost, la biblioteca `libcatboostmodel.<so|dylib>` debe estar disponible. Consulta la [documentación de CatBoost](https://catboost.ai/docs/concepts/c-plus-plus-api_dynamic-c-pluplus-wrapper.html) para ver cómo compilarla.

A continuación, especifica la ruta a `libcatboostmodel.<so|dylib>` en la configuración de ClickHouse:

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

Por razones de seguridad y aislamiento, la evaluación del modelo no se ejecuta en el proceso del servidor, sino en el proceso clickhouse-library-bridge.
En la primera ejecución de `catboostEvaluate()`, el servidor inicia el proceso clickhouse-library-bridge si aún no está en ejecución. Ambos procesos
se comunican mediante una interfaz HTTP. De forma predeterminada, se utiliza el puerto `9012`. Se puede especificar un puerto diferente de la siguiente manera; esto resulta útil si el puerto
`9012` ya está asignado a otro servicio.

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

2. Entrene un modelo catboost con libcatboost

Consulte [Training and applying models](https://catboost.ai/docs/features/training.html#training) para saber cómo entrenar modelos catboost a partir de un conjunto de datos de entrenamiento.

**Sintaxis**

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

**Argumentos**

* `path_to_model` — Ruta al modelo de CatBoost. [`const String`](/es/reference/data-types/string)
* `feature` — Una o más características/argumentos del modelo. [`Float*`](/es/reference/data-types/float)

**Valor devuelto**

Devuelve el resultado de la evaluación del modelo. [`Float64`](/es/reference/data-types/float)

**Ejemplos**

**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>

Introducido en: v26.2.0

Convierte un color del espacio de color perceptivo OKLab al espacio de color sRGB.

El color de entrada se especifica en el espacio de color OKLab. Si los valores de entrada quedan fuera
de los rangos típicos de OKLab, el resultado depende de la implementación.

OKLab usa tres componentes:

* L: luminosidad perceptiva (normalmente en el rango \[0..1])
  * a: eje oponente verde-rojo
  * b: eje oponente azul-amarillo

Los componentes a y b son teóricamente ilimitados, pero en la práctica se sitúan entre -0.4 y 0.4.
OKLab está diseñado para ser perceptualmente uniforme
sin dejar de ser poco costoso de calcular.

La conversión está pensada para ser la inversa de colorSRGBToOKLAB y consta de
las siguientes etapas:

1. Conversión de OKLab a sRGB lineal.
   2\) Conversión de sRGB lineal a sRGB codificado con gamma.

El argumento gamma opcional especifica el exponente utilizado al convertir de sRGB lineal
a valores RGB codificados con gamma. Si no se especifica, se usa un valor gamma predeterminado
para mantener la coherencia con colorSRGBToOKLAB.

Para obtener más información sobre el espacio de color OKLab y su relación con sRGB, consulte [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)
.

**Sintaxis**

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

**Argumentos**

* `tuple` — Una tupla de tres valores numéricos `L`, `a`, `b`, donde `L` está dentro del rango `[0...1]`. [`Tuple(Float64, Float64, Float64)`](/es/reference/data-types/tuple)
* `gamma` — Opcional. El exponente que se utiliza para transformar sRGB lineal de nuevo a sRGB aplicando `(x ^ (1 / gamma)) * 255` a cada canal `x`. El valor predeterminado es `2.2`. [`Float64`](/es/reference/data-types/float)

**Valor devuelto**

Devuelve una tupla (R, G, B) que representa valores de color sRGB. [`Tuple(Float64, Float64, Float64)`](/es/reference/data-types/tuple)

**Ejemplos**

**Convertir OKLAB a 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) │
└──────────────────────────┘
```

**Convertir OKLAB a 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>

Introducido en: v25.7.0

Convierte un color del espacio de color perceptualmente uniforme **OKLCH** al conocido espacio de color **sRGB**.

Si `L` está fuera del rango `[0...1]`, `C` es negativo o `H` está fuera del rango `[0...360]`, el resultado depende de la implementación.

<Note>
  **OKLCH** es una versión cilíndrica del espacio de color OKLab.
  Sus tres coordenadas son `L` (la luminosidad en el rango `[0...1]`), `C` (croma `>= 0`) y `H` (tono en grados dentro de `[0...360]`).
  OKLab/OKLCH está diseñado para ser perceptualmente uniforme y seguir siendo barato de calcular.
</Note>

La conversión es la inversa de [`colorSRGBToOKLCH`](#colorSRGBToOKLCH):

1. OKLCH a OKLab.
   2\) OKLab a sRGB lineal
   3\) sRGB lineal a sRGB

El segundo argumento, gamma, se utiliza en la última etapa.

Para ver referencias de colores en el espacio OKLCH y cómo se corresponden con los colores sRGB, consulta [https://oklch.com/](https://oklch.com/).

**Sintaxis**

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

**Argumentos**

* `tuple` — Una tupla de tres valores numéricos `L`, `C`, `H`, donde `L` está en el intervalo `[0...1]`, `C >= 0` y `H` está en el intervalo `[0...360]`. [`Tuple(Float64, Float64, Float64)`](/es/reference/data-types/tuple)
* `gamma` — Opcional. El exponente que se utiliza para convertir sRGB lineal de nuevo a sRGB aplicando `(x ^ (1 / gamma)) * 255` a cada canal `x`. El valor predeterminado es `2.2`. [`Float64`](/es/reference/data-types/float)

**Valor devuelto**

Devuelve una tupla (R, G, B) que representa los valores de color sRGB. [`Tuple(Float64, Float64, Float64)`](/es/reference/data-types/tuple)

**Ejemplos**

**Convertir OKLCH a 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) │
└───────────────────────────────────────────────────────────┘
```

**Convertir de OKLCH a 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>

Introducido en: v26.2.0

Convierte un color codificado en el espacio de color **sRGB** al espacio de color **OKLAB**, que es perceptualmente uniforme.

Si algún canal de entrada está fuera de `[0...255]` o el valor de gamma no es positivo, el comportamiento depende de la implementación.

<Note>
  **OKLAB** es un espacio de color perceptualmente uniforme.
  Sus tres coordenadas son `L` (la luminosidad en el intervalo `[0...1]`), `a (eje verde-rojo)` y `b (eje azul-amarillo)`.
  OKLab está diseñado para ser perceptualmente uniforme y, al mismo tiempo, ser poco costoso de calcular.
</Note>

La conversión consta de dos etapas:

1. sRGB a sRGB lineal
   2\) sRGB lineal a OKLab

**Sintaxis**

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

**Argumentos**

* `tuple` — Tupla de tres valores R, G y B en el rango `[0...255]`. [`Tuple(UInt8, UInt8, UInt8)`](/es/reference/data-types/tuple)
* `gamma` — Opcional. Exponente que se usa para linealizar sRGB al aplicar `(x / 255)^gamma` a cada canal `x`. El valor predeterminado es `2.2`. [`Float64`](/es/reference/data-types/float)

**Valor devuelto**

Devuelve una tupla `(L, a, b)` que representa los valores del espacio de color OKLAB. [`Tuple(Float64, Float64, Float64)`](/es/reference/data-types/tuple)

**Ejemplos**

**Convertir sRGB a 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>

Introducido en: v25.7.0

Convierte un color codificado en el espacio de color **sRGB** al espacio de color **OKLCH**, perceptualmente uniforme.

Si algún canal de entrada está fuera de `[0...255]` o el valor gamma no es positivo, el comportamiento depende de la implementación.

<Note>
  **OKLCH** es una versión cilíndrica del espacio de color OKLab.
  Sus tres coordenadas son `L` (la luminosidad en el intervalo `[0...1]`), `C` (croma `>= 0`) y `H` (el tono en grados dentro de `[0...360]`).
  OKLab/OKLCH está diseñado para ser perceptualmente uniforme y, al mismo tiempo, tener un coste de cálculo bajo.
</Note>

La conversión consta de tres etapas:

1. sRGB a sRGB lineal
   2\) sRGB lineal a OKLab
   3\) OKLab a OKLCH.

Para consultar referencias de colores en el espacio OKLCH y cómo se corresponden con los colores sRGB, consulte [https://OKLCH.com/](https://OKLCH.com/).

**Sintaxis**

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

**Argumentos**

* `tuple` — Tupla de tres valores R, G, B en el intervalo `[0...255]`. [`Tuple(UInt8, UInt8, UInt8)`](/es/reference/data-types/tuple)
* `gamma` — Opcional. Exponente que se usa para linealizar sRGB aplicando `(x / 255)^gamma` a cada canal `x`. El valor predeterminado es `2.2`. [`Float64`](/es/reference/data-types/float)

**Valor devuelto**

Devuelve una tupla (L, C, H) que representa los valores del espacio de color OKLCH. [`Tuple(Float64, Float64, Float64)`](/es/reference/data-types/tuple)

**Ejemplos**

**Convertir sRGB a 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>

Introducido en: v21.3.0

Devuelve el ID de la conexión del cliente que envió la consulta actual.
Esta función resulta especialmente útil en tareas de depuración.
Se creó para mantener la compatibilidad con la función `CONNECTION_ID` de MySQL.
No suele utilizarse en consultas de producción.

**Sintaxis**

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

**Argumentos**

* Ninguno.

**Valor devuelto**

Devuelve el ID de la conexión del cliente actual. [`UInt64`](/es/reference/data-types/int-uint)

**Ejemplos**

**Ejemplo de uso**

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

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

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

Introducido en: v20.8.0

Devuelve la cantidad de dígitos decimales necesarios para representar un valor.

<Note>
  Esta función tiene en cuenta las escalas de los valores decimales; es decir, calcula el resultado sobre el tipo entero subyacente, que es `(value * scale)`.

  Por ejemplo:

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

<Tip>
  Puede comprobar el desbordamiento decimal de `Decimal64` con `countDigits(x) > 18`,
  aunque es más lento que [`isDecimalOverflow`](#isDecimalOverflow).
</Tip>

**Sintaxis**

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

**Argumentos**

* `x` — Un valor entero o decimal. [`(U)Int*`](/es/reference/data-types/int-uint) o [`Decimal`](/es/reference/data-types/decimal)

**Valor devuelto**

Devuelve el número de dígitos necesarios para representar `x`. [`UInt8`](/es/reference/data-types/int-uint)

**Ejemplos**

**Ejemplo de uso**

```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>

Introducido en: v1.1.0

Devuelve el nombre de la base de datos actual.
Es útil en los parámetros del motor de tabla de las sentencias `CREATE TABLE` en las que necesitas especificar la base de datos.

Consulta también la [sentencia `SET`](/es/reference/statements/use).

**Sintaxis**

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

**Alias**: `current_database`, `SCHEMA`, `DATABASE`

**Argumentos**

* Ninguno.

**Valor devuelto**

Devuelve el nombre de la base de datos actual. [`String`](/es/reference/data-types/string)

**Ejemplos**

**Ejemplo de uso**

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

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

**Sintaxis SQL estándar sin paréntesis**

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

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

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

Introducido en: v21.9.0

Devuelve un array con los perfiles de configuración del usuario actual.

**Sintaxis**

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

**Argumentos**

* Ninguno.

**Valor devuelto**

Devuelve un array de perfiles de configuración del usuario actual. [`Array(String)`](/es/reference/data-types/array)

**Ejemplos**

**Ejemplo de uso**

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

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

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

Introducido en: v25.2.0

Devuelve el id de consulta actual.

**Sintaxis**

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

**Alias**: `current_query_id`

**Argumentos**

* Ninguno.

**Valor devuelto**

**Ejemplos**

**Ejemplo**

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

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

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

Introducido en: v21.9.0

Devuelve un array con los roles asignados al usuario actual.

**Sintaxis**

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

**Argumentos**

* Ninguno.

**Valor devuelto**

Devuelve un array con los roles asignados al usuario actual. [`Array(String)`](/es/reference/data-types/array)

**Ejemplos**

**Ejemplo de uso**

```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>

Introducido en: v23.7.0

Igual que la función [`currentDatabase`](#currentDatabase), pero

* acepta un argumento booleano que se ignora
* devuelve el nombre de la base de datos como un array con un único valor.

La función `currentSchemas` solo existe por compatibilidad con PostgreSQL.
Use `currentDatabase` en su lugar.

Consulte también la [sentencia `SET`](/es/reference/statements/use).

**Sintaxis**

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

**Alias**: `current_schemas`

**Argumentos**

* `bool` — Un valor booleano que se ignora. [`Bool`](/es/reference/data-types/boolean)

**Valor devuelto**

Devuelve un array de un solo elemento con el nombre de la base de datos actual. [`Array(String)`](/es/reference/data-types/array)

**Ejemplos**

**Ejemplo de uso**

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

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

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

Introducido en: v20.1.0

Devuelve el nombre del usuario actual.
En el caso de una consulta distribuida, se devuelve el nombre del usuario que inició la consulta.

**Sintaxis**

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

**Alias**: `session_user`, `user`, `current_user`

**Argumentos**

* Ninguno.

**Valor devuelto**

Devuelve el nombre del usuario actual o, si no, el inicio de sesión del usuario que inició la consulta. [`String`](/es/reference/data-types/string)

**Ejemplos**

**Ejemplo de uso**

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

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

**Sintaxis estándar de SQL sin paréntesis**

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

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

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

Introducido en: v21.9.0

Devuelve un array con los nombres de los perfiles de configuración predeterminados del usuario actual.

**Sintaxis**

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

**Argumentos**

* Ninguno.

**Valor devuelto**

Devuelve un array con los nombres de los perfiles de configuración predeterminados del usuario actual. [`Array(String)`](/es/reference/data-types/array)

**Ejemplos**

**Ejemplo de uso**

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

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

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

Introducido en: v21.9.0

Devuelve un array de roles predeterminados para el usuario actual.

**Sintaxis**

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

**Argumentos**

* Ninguno.

**Valor devuelto**

Devuelve un array de roles predeterminados del usuario actual. [`Array(String)`](/es/reference/data-types/array)

**Ejemplos**

**Ejemplo de uso**

```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>

Introducido en: v1.1.0

Devuelve el valor predeterminado de un tipo de dato determinado.
No incluye los valores predeterminados de las columnas personalizadas definidas por el usuario.

**Sintaxis**

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

**Argumentos**

* `expression` — Un valor de tipo arbitrario o una expresión cuyo resultado es un valor de tipo arbitrario. [`Any`](/es/reference/data-types/index)

**Valor devuelto**

Devuelve `0` para números, una cadena vacía para cadenas o `NULL` para tipos Nullable. [`UInt8`](/es/reference/data-types/int-uint) o [`String`](/es/reference/data-types/string) o [`NULL`](/es/reference/syntax#null)

**Ejemplos**

**Ejemplo de uso**

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

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

**Ejemplo de 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>

Introducido en: v1.1.0

Devuelve el valor predeterminado del nombre de tipo especificado.

**Sintaxis**

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

**Argumentos**

* `type` — Una cadena que representa un nombre de tipo. [`String`](/es/reference/data-types/string)

**Valor devuelto**

Devuelve el valor predeterminado para el nombre de tipo especificado: `0` para números, una cadena vacía para cadenas, o `NULL` para `Nullable` [`UInt8`](/es/reference/data-types/int-uint) o [`String`](/es/reference/data-types/string) o [`NULL`](/es/reference/syntax#null)

**Ejemplos**

**Ejemplo de uso**

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

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

**Ejemplo de Nullable**

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

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

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

Introducido en: v22.11.0

Devuelve el valor de `display_name` de [configuración](/es/concepts/features/configuration/server-config/configuration-files) o el nombre de dominio completo (FQDN) del servidor si no está configurado.

**Sintaxis**

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

**Argumentos**

* Ninguno.

**Valor devuelto**

Devuelve el valor de `display_name` de la configuración o el FQDN del servidor si no está definido. [`String`](/es/reference/data-types/string)

**Ejemplos**

**Ejemplo de uso**

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

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

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

Introducido en: v1.1.0

Muestra una descripción detallada de la estructura interna de una columna y de su tipo de dato.

**Sintaxis**

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

**Argumentos**

* `x` — Valor cuya descripción se quiere obtener. [`Any`](/es/reference/data-types/index)

**Valor devuelto**

Devuelve una descripción de la estructura de la columna utilizada para representar el valor. [`String`](/es/reference/data-types/string)

**Ejemplos**

**Ejemplo de uso**

```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>

Introducido en: v21.9.0

Devuelve un array de nombres de perfiles de configuración habilitados para el usuario actual.

**Sintaxis**

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

**Argumentos**

* Ninguno.

**Valor devuelto**

Devuelve un array con los nombres de los perfiles de configuración habilitados para el usuario actual. [`Array(String)`](/es/reference/data-types/array)

**Ejemplos**

**Ejemplo de uso**

```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>

Introducido en: v21.9.0

Devuelve un array con los roles habilitados para el usuario actual.

**Sintaxis**

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

**Argumentos**

* Ninguno.

**Valor devuelto**

Devuelve un array con los nombres de los roles habilitados para el usuario actual. [`Array(String)`](/es/reference/data-types/array)

**Ejemplos**

**Ejemplo de uso**

```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>

Introducido en: v20.12.0

Devuelve el nombre en texto de un código de error numérico de ClickHouse.
La correspondencia entre los códigos de error numéricos y sus nombres está disponible [aquí](https://github.com/ClickHouse/ClickHouse/blob/master/src/Common/ErrorCodes.cpp).

**Sintaxis**

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

**Argumentos**

* `error_code` — Código de error de ClickHouse. [`(U)Int*`](/es/reference/data-types/int-uint) o [`Float*`](/es/reference/data-types/float) o [`Decimal`](/es/reference/data-types/decimal)

**Valor devuelto**

Devuelve el nombre en texto de `error_code`. [`String`](/es/reference/data-types/string)

**Ejemplos**

**Ejemplo de uso**

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

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

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

Introducido en: v21.3.0

Lee un archivo como una cadena y carga los datos en la columna especificada.
El contenido del archivo no se interpreta.

Consulte también la función de tabla [`file`](/es/reference/functions/table-functions/file).

**Sintaxis**

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

**Argumentos**

* `path` — La ruta del archivo relativa a `user_files_path`. Admite comodines `*`, `**`, `?`, `{abc,def}` y `{N..M}`, donde `N` y `M` son números y `'abc'` y `'def'` son cadenas. [`String`](/es/reference/data-types/string)
* `default` — El valor que se devuelve si el archivo no existe o no se puede acceder a él. [`String`](/es/reference/data-types/string) o [`NULL`](/es/reference/syntax#null)

**Valor devuelto**

Devuelve el contenido del archivo como una cadena. [`String`](/es/reference/data-types/string)

**Ejemplos**

**Insertar archivos en una tabla**

```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>

Introducido en: v20.1.0

Devuelve la cantidad de espacio libre en el sistema de archivos que aloja la persistencia de la base de datos.
El valor devuelto siempre es inferior al espacio libre total ([`filesystemUnreserved`](/es/reference/functions/regular-functions/other-functions#filesystemUnreserved)) porque parte del espacio está reservado para el sistema operativo.

**Sintaxis**

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

**Argumentos**

* `disk_name` — Opcional. El nombre del disco del que se quiere obtener la cantidad de espacio libre. Si se omite, se usa el disco predeterminado. [`String`](/es/reference/data-types/string) o [`FixedString`](/es/reference/data-types/fixedstring)

**Valor devuelto**

Devuelve la cantidad de espacio libre restante en bytes. [`UInt64`](/es/reference/data-types/int-uint)

**Ejemplos**

**Ejemplo de uso**

```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>

Introducido en: v20.1.0

Devuelve la capacidad del sistema de archivos en bytes.
Requiere que se configure la [path](/es/reference/settings/server-settings/settings#path) del directorio de datos.

**Sintaxis**

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

**Argumentos**

* `disk_name` — Opcional. El nombre del disco cuya capacidad se quiere obtener. Si se omite, se usa el disco predeterminado. [`String`](/es/reference/data-types/string) o [`FixedString`](/es/reference/data-types/fixedstring)

**Valor devuelto**

Devuelve la capacidad del sistema de archivos en bytes. [`UInt64`](/es/reference/data-types/int-uint)

**Ejemplos**

**Ejemplo de uso**

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

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

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

Introducido en: v22.12.0

Devuelve la cantidad total de espacio libre en el sistema de archivos que hospeda la persistencia de la base de datos (anteriormente `filesystemFree`).
Véase también [`filesystemAvailable`](#filesystemAvailable).

**Sintaxis**

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

**Argumentos**

* `disk_name` — Opcional. El nombre del disco cuyo espacio libre total se debe obtener. Si se omite, se usa el disco predeterminado. [`String`](/es/reference/data-types/string) o [`FixedString`](/es/reference/data-types/fixedstring)

**Valor devuelto**

Devuelve la cantidad de espacio libre en bytes. [`UInt64`](/es/reference/data-types/int-uint)

**Ejemplos**

**Ejemplo de uso**

```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>

Introducido en: v1.1.0

Dado un estado de agregación, esta función devuelve el resultado de la agregación (o el estado final cuando se utiliza un combinador [-State](/es/reference/functions/aggregate-functions/combinators#-state)).

**Sintaxis**

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

**Argumentos**

* `state` — Estado de agregación. [`AggregateFunction`](/es/reference/data-types/aggregatefunction)

**Valor devuelto**

Devuelve el resultado final de la agregación. [`Any`](/es/reference/data-types/index)

**Ejemplos**

**Ejemplo de uso**

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

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

**En combinación con 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>

Introducido en: v25.11.0

Invierte las coordenadas x e y de los objetos geométricos. Esta operación intercambia la latitud y la longitud, lo que resulta útil para convertir entre distintos sistemas de coordenadas o corregir el orden de las coordenadas.

En un Point, intercambia las coordenadas x e y. En las geometrías complejas (LineString, Polygon, MultiPolygon, Ring, MultiLineString), aplica la transformación de forma recursiva a cada par de coordenadas.

La función admite tanto tipos de geometría individuales (Point, Ring, Polygon, MultiPolygon, LineString, MultiLineString) como el tipo variante Geometry.

**Sintaxis**

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

**Argumentos**

* `geometry` — La geometría que se va a transformar. Tipos admitidos: Point (Tuple(Float64, Float64)), Ring (Array(Point)), Polygon (Array(Ring)), MultiPolygon (Array(Polygon)), LineString (Array(Point)), MultiLineString (Array(LineString)) o Geometry (una variante que contiene cualquiera de estos tipos).

**Valor devuelto**

La geometría con las coordenadas invertidas. El tipo devuelto coincide con el tipo de entrada. [`Point`](/es/reference/data-types/geo#point) o [`Ring`](/es/reference/data-types/geo#ring) o [`Polygon`](/es/reference/data-types/geo#polygon) o [`MultiPolygon`](/es/reference/data-types/geo#multipolygon) o [`LineString`](/es/reference/data-types/geo#linestring) o [`MultiLineString`](/es/reference/data-types/geo#multilinestring) o [`Geometry`](/es/reference/data-types/geo)

**Ejemplos**

**basic\_point**

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

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

**anillo**

```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)]
```

**polígono**

```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>

Introducido en: v23.10.0

Devuelve una versión con formato, posiblemente de varias líneas, de la consulta SQL dada. Genera una excepción en caso de error de análisis sintáctico.
\[example:multiline]

**Sintaxis**

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

**Argumentos**

* `query` — La consulta SQL que se va a formatear. [String](/es/reference/data-types/string)

**Valor devuelto**

La consulta formateada [`String`](/es/reference/data-types/string)

**Ejemplos**

**multiline**

```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>

Introducido en: v23.11.0

Devuelve una versión formateada, posiblemente de varias líneas, de la consulta SQL proporcionada. Devuelve NULL en caso de error de análisis sintáctico.
\[example:multiline]

**Sintaxis**

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

**Argumentos**

* `query` — La consulta SQL que se va a formatear. [String](/es/reference/data-types/string)

**Valor devuelto**

La consulta formateada [`String`](/es/reference/data-types/string)

**Ejemplos**

**multilínea**

```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>

Introducido en: v23.10.0

Como formatQuery(), pero la cadena formateada que se devuelve no contiene saltos de línea. Genera una excepción en caso de error de análisis sintáctico.
\[example:multiline]

**Sintaxis**

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

**Argumentos**

* `query` — La consulta SQL que se va a formatear. [String](/es/reference/data-types/string)

**Valor devuelto**

La consulta formateada [`String`](/es/reference/data-types/string)

**Ejemplos**

**multiline**

```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>

Introducido en: v23.11.0

Como formatQuery(), pero la cadena formateada devuelta no contiene saltos de línea. Devuelve NULL en caso de error de análisis sintáctico.
\[example:multiline]

**Sintaxis**

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

**Argumentos**

* `query` — La consulta SQL que se va a dar formato. [`String`](/es/reference/data-types/string)

**Valor devuelto**

La consulta formateada [`String`](/es/reference/data-types/string)

**Ejemplos**

**multilínea**

```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>

Introducido en: v22.11.0

Dado un tamaño (número de bytes), esta función devuelve un tamaño legible y redondeado con sufijo (KB, MB, etc.) en forma de cadena.

La operación inversa de esta función es [`parseReadableSize`](#parseReadableSize).

**Sintaxis**

```sql theme={null}
formatReadableDecimalSize(value[, precision])
```

**Argumentos**

* `value` — Tamaño en bytes. [`Int8`](/es/reference/data-types/int-uint) o [`Int16`](/es/reference/data-types/int-uint) o [`Int32`](/es/reference/data-types/int-uint) o [`Int64`](/es/reference/data-types/int-uint) o [`UInt8`](/es/reference/data-types/int-uint) o [`UInt16`](/es/reference/data-types/int-uint) o [`UInt32`](/es/reference/data-types/int-uint) o [`UInt64`](/es/reference/data-types/int-uint) o [`Float32`](/es/reference/data-types/float) o [`Float64`](/es/reference/data-types/float) o [`Decimal`](/es/reference/data-types/decimal)
* `precision` — Opcional. Número de dígitos después del punto decimal. El valor predeterminado es 2. [`const UInt8`](/es/reference/data-types/int-uint)

**Valor devuelto**

Devuelve un tamaño redondeado y legible con sufijo, como una cadena. [`String`](/es/reference/data-types/string)

**Ejemplos**

**Formatear tamaños de archivo**

```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  │
└────────────────┴────────────┘
```

**Con precisión explícita**

```sql title=Query theme={null}
SELECT
    formatReadableDecimalSize(192851925, 0) AS no_decimals,
    formatReadableDecimalSize(192851925, 4) AS four_decimals
```

```response title=Response theme={null}
┌─no_decimals─┬─four_decimals─┐
│ 193 MB      │ 192.8519 MB   │
└─────────────┴───────────────┘
```

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

Introducido en: v20.10.0

Dado un número, esta función devuelve una cadena con el número redondeado y un sufijo (mil, millón, mil millones, etc.).

Esta función acepta cualquier tipo numérico como entrada, pero internamente lo convierte a `Float64`.
Los resultados pueden no ser óptimos con valores grandes.

**Sintaxis**

```sql theme={null}
formatReadableQuantity(value[, precision])
```

**Argumentos**

* `value` — Un número para formatear. [`Int8`](/es/reference/data-types/int-uint) o [`Int16`](/es/reference/data-types/int-uint) o [`Int32`](/es/reference/data-types/int-uint) o [`Int64`](/es/reference/data-types/int-uint) o [`UInt8`](/es/reference/data-types/int-uint) o [`UInt16`](/es/reference/data-types/int-uint) o [`UInt32`](/es/reference/data-types/int-uint) o [`UInt64`](/es/reference/data-types/int-uint) o [`Float32`](/es/reference/data-types/float) o [`Float64`](/es/reference/data-types/float) o [`Decimal`](/es/reference/data-types/decimal)
* `precision` — Opcional. Número de dígitos después del punto decimal. El valor predeterminado es 2. [`const UInt8`](/es/reference/data-types/int-uint)

**Valor devuelto**

Devuelve un número redondeado con sufijo, en forma de cadena. [`String`](/es/reference/data-types/string)

**Ejemplos**

**Dar formato a números con sufijos**

```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    │
└────────────────┴───────────────────┘
```

**Con precisión especificada**

```sql title=Query theme={null}
SELECT
    formatReadableQuantity(98765432101234, 0) AS no_decimals,
    formatReadableQuantity(98765432101234, 4) AS four_decimals
```

```response title=Response theme={null}
┌─no_decimals──┬─four_decimals─────┐
│ 99 trillion  │ 98.7654 trillion  │
└──────────────┴───────────────────┘
```

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

Introducido en: v1.1.0

Dado un tamaño (número de bytes), esta función devuelve un tamaño legible y redondeado con sufijo (KiB, MiB, etc.) en forma de cadena.

Las operaciones opuestas de esta función son [`parseReadableSize`](#parseReadableSize), [`parseReadableSizeOrZero`](#parseReadableSizeOrZero) y [`parseReadableSizeOrNull`](#parseReadableSizeOrNull).
Esta función acepta cualquier tipo numérico como entrada, pero internamente lo convierte a `Float64`. Los resultados pueden no ser óptimos con valores grandes.

**Sintaxis**

```sql theme={null}
formatReadableSize(value[, precision])
```

**Alias**: `FORMAT_BYTES`

**Argumentos**

* `value` — Tamaño en bytes. [`Int8`](/es/reference/data-types/int-uint) o [`Int16`](/es/reference/data-types/int-uint) o [`Int32`](/es/reference/data-types/int-uint) o [`Int64`](/es/reference/data-types/int-uint) o [`UInt8`](/es/reference/data-types/int-uint) o [`UInt16`](/es/reference/data-types/int-uint) o [`UInt32`](/es/reference/data-types/int-uint) o [`UInt64`](/es/reference/data-types/int-uint) o [`Float32`](/es/reference/data-types/float) o [`Float64`](/es/reference/data-types/float) o [`Decimal`](/es/reference/data-types/decimal)
* `precision` — Opcional. Número de dígitos después del punto decimal. El valor predeterminado es 2. [`const UInt8`](/es/reference/data-types/int-uint)

**Valor devuelto**

Devuelve un tamaño legible y redondeado con sufijo en forma de cadena. [`String`](/es/reference/data-types/string)

**Ejemplos**

**Formatear tamaños de archivo**

```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 │
└────────────────┴────────────┘
```

**Con precisión explícita**

```sql title=Query theme={null}
SELECT
    formatReadableSize(192851925, 0) AS no_decimals,
    formatReadableSize(192851925, 4) AS four_decimals
```

```response title=Response theme={null}
┌─no_decimals─┬─four_decimals──┐
│ 184 MiB     │ 183.9179 MiB   │
└─────────────┴────────────────┘
```

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

Introducido en: v20.12.0

Dado un intervalo de tiempo (delta) en segundos o una expresión `INTERVAL`, esta función devuelve dicho delta como una cadena con años/meses/días/horas/minutos/segundos/milisegundos/microsegundos/nanosegundos.

Esta función acepta cualquier tipo numérico como entrada, pero internamente lo convierte a `Float64`. Los resultados pueden no ser óptimos con valores grandes.

Cuando se pasa una expresión `INTERVAL`, su valor se convierte a segundos. No se admiten las unidades de intervalo `MONTH` y superiores (`MONTH`, `QUARTER`, `YEAR`), ya que no representan un intervalo de duración fija en segundos.

**Sintaxis**

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

**Argumentos**

* `column` — Una columna con una diferencia de tiempo numérica, o una expresión `INTERVAL`. No se admiten unidades de intervalo de `MONTH` en adelante. [`Float64`](/es/reference/data-types/float) o [`Interval`](/es/reference/data-types/int-uint)
* `maximum_unit` — Opcional. La unidad máxima que se mostrará. Valores aceptables: `nanoseconds`, `microseconds`, `milliseconds`, `seconds`, `minutes`, `hours`, `days`, `months`, `years`. Valor predeterminado: `years`. [`const String`](/es/reference/data-types/string)
* `minimum_unit` — Opcional. La unidad mínima que se mostrará. Todas las unidades más pequeñas se truncan. Valores aceptables: `nanoseconds`, `microseconds`, `milliseconds`, `seconds`, `minutes`, `hours`, `days`, `months`, `years`. Si el valor especificado explícitamente es mayor que `maximum_unit`, se lanzará una excepción. Valor predeterminado: `seconds` si `maximum_unit` es `seconds` o una unidad mayor; `nanoseconds` en caso contrario. [`const String`](/es/reference/data-types/string)

**Valor devuelto**

Devuelve una diferencia de tiempo en forma de cadena. [`String`](/es/reference/data-types/string)

**Ejemplos**

**Ejemplo de uso**

```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│
└────────────┴────────────────────────────────────────────────────────────────┘
```

**Con la unidad máxima**

```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                                  │
└────────────┴─────────────────────────────────────────────────────────────────┘
```

**Con una expresión INTERVAL**

```sql title=Query theme={null}
SELECT formatReadableTimeDelta(INTERVAL 12345 SECOND) AS time_delta
```

```response title=Response theme={null}
┌─time_delta─────────────────────────┐
│ 3 hours, 25 minutes and 45 seconds │
└────────────────────────────────────┘
```

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

Introducido en: v26.2.0

Analiza la cadena de consulta proporcionada y le aplica mutaciones aleatorias del AST (fuzzing). Devuelve la consulta modificada mediante fuzzing como una cadena. No determinista: cada llamada puede producir un resultado diferente. Requiere `allow_fuzz_query_functions = 1`.

**Sintaxis**

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

**Argumentos**

* `query` — La consulta SQL a la que se aplicará fuzzing. [String](/es/reference/data-types/string)

**Valor devuelto**

La cadena de consulta resultante del fuzzing [`String`](/es/reference/data-types/string)

**Ejemplos**

**básico**

```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>

Introducido en: v23.5.0

Genera una estructura aleatoria de la tabla con el formato `column1_name column1_type, column2_name column2_type, ...`.

**Sintaxis**

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

**Argumentos**

* `number_of_columns` — El número deseado de columnas en la estructura de la tabla resultante. Si se establece en 0 o `Null`, el número de columnas será aleatorio, entre 1 y 128. Valor predeterminado: `Null`. [`UInt64`](/es/reference/data-types/int-uint)
* `seed` — Semilla aleatoria para producir resultados estables. Si no se especifica o se establece en `Null`, se genera aleatoriamente. [`UInt64`](/es/reference/data-types/int-uint)

**Valor devuelto**

Estructura de tabla generada aleatoriamente. [`String`](/es/reference/data-types/string)

**Ejemplos**

**Ejemplo de uso**

```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
```

**con el número de columnas especificado**

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

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

**con la semilla especificada**

```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>

Introducido en: v25.1.0

Genera y devuelve números secuenciales a partir del valor anterior del contador.
Esta función acepta un argumento de cadena: un identificador de serie, y un valor inicial opcional.
El servidor debe estar configurado con Keeper.
Las series se almacenan en nodos de Keeper en la ruta, que puede configurarse en [`series_keeper_path`](/es/reference/settings/server-settings/settings#series_keeper_path) en la configuración del servidor.

**Sintaxis**

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

**Argumentos**

* `series_identifier` — Identificador de la serie [`const String`](/es/reference/data-types/string)
* `start_value` — Opcional. Valor inicial del contador. El valor predeterminado es 0. Nota: este valor solo se usa al crear una serie nueva y se ignora si la serie ya existe [`UInt*`](/es/reference/data-types/int-uint)

**Valor devuelto**

Devuelve números consecutivos a partir del valor anterior del contador. [`UInt64`](/es/reference/data-types/int-uint)

**Ejemplos**

**primera llamada**

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

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

**segunda llamada**

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

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

**llamada a columna**

```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 │
└───────────┴────────┴─────┴──────────────────────────┘
```

**con valor inicial**

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

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

**con valor inicial en la segunda llamada**

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

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

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

Introducido en: v24.5.0

Obtiene el valor de una cabecera HTTP.
Si no existe esa cabecera o la solicitud actual no se realiza a través de la interfaz HTTP, la función devuelve una cadena vacía.
Algunas cabeceras HTTP (por ejemplo, `Authentication` y `X-ClickHouse-*`) están restringidas.

<Info>
  **Se requiere la configuración `allow_get_client_http_header`**

  La función requiere que la configuración `allow_get_client_http_header` esté habilitada.
  Esta configuración no está habilitada de forma predeterminada por motivos de seguridad, ya que algunas cabeceras, como `Cookie`, podrían contener información confidencial.
</Info>

Para esta función, las cabeceras HTTP distinguen entre mayúsculas y minúsculas.
Si la función se usa en el contexto de una consulta distribuida, solo devuelve un resultado no vacío en el nodo iniciador.

**Sintaxis**

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

**Argumentos**

* `name` — El nombre de la cabecera HTTP. [`String`](/es/reference/data-types/string)

**Valor devuelto**

Devuelve el valor de la cabecera. [`String`](/es/reference/data-types/string)

**Ejemplos**

**Ejemplo de uso**

```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>

Introducido en: v20.1.0

Devuelve el valor de una macro del archivo de configuración del servidor.
Las macros se definen en la sección [`<macros>`](/es/reference/settings/server-settings/settings#macros) del archivo de configuración y pueden utilizarse para distinguir servidores mediante nombres fáciles de identificar, incluso si tienen nombres de host complejos.
Si la función se ejecuta en el contexto de una tabla distribuida, genera una columna normal con valores correspondientes a cada segmento.

**Sintaxis**

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

**Argumentos**

* `name` — El nombre de la macro que se va a obtener. [`const String`](/es/reference/data-types/string)

**Valor devuelto**

Devuelve el valor de la macro especificada. [`String`](/es/reference/data-types/string)

**Ejemplos**

**Uso básico**

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

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

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

Introducido en: v25.1.0

Devuelve la longitud máxima del nombre de una tabla en la base de datos especificada.

**Sintaxis**

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

**Argumentos**

* `database_name` — El nombre de la base de datos especificada. [`String`](/es/reference/data-types/string)

**Valor devuelto**

Devuelve la longitud del nombre de tabla más largo, un entero

**Ejemplos**

**típico**

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

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

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

Introducido en: v25.6.0

Devuelve el valor actual de un SETTING de MergeTree.

**Sintaxis**

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

**Argumentos**

* `setting_name` — El nombre del SETTING. [`String`](/es/reference/data-types/string)

**Valor devuelto**

Devuelve el valor actual del SETTING de MergeTree.

**Ejemplos**

**Ejemplo de uso**

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

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

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

Introducido en: v21.11.0

Devuelve una cadena con la versión del kernel del sistema operativo.

**Sintaxis**

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

**Argumentos**

* Ninguno.

**Valor devuelto**

Devuelve la versión actual del kernel del sistema operativo. [`String`](/es/reference/data-types/string)

**Ejemplos**

**Ejemplo de uso**

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

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

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

Introducido en: v21.10.0

Devuelve el número de puerto del servidor para un protocolo dado.

**Sintaxis**

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

**Argumentos**

* `port_name` — Nombre del puerto. [`String`](/es/reference/data-types/string)

**Valor devuelto**

Devuelve el número de puerto del servidor. [`UInt16`](/es/reference/data-types/int-uint)

**Ejemplos**

**Ejemplo de uso**

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

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

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

Introducido en: v25.6.0

Devuelve el valor establecido actualmente a partir del nombre de un SETTING del servidor.

**Sintaxis**

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

**Argumentos**

* `setting_name` — El nombre del SETTING del servidor. [`String`](/es/reference/data-types/string)

**Valor devuelto**

Devuelve el valor actual del SETTING del servidor. [`Any`](/es/reference/data-types/index)

**Ejemplos**

**Ejemplo de uso**

```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>

Introducido en: v20.7.0

Devuelve el valor actual de un SETTING.

**Sintaxis**

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

**Argumentos**

* `setting_Name` — El nombre del SETTING. [`const String`](/es/reference/data-types/string)

**Valor devuelto**

Devuelve el valor actual del SETTING. [`Any`](/es/reference/data-types/index)

**Ejemplos**

**Ejemplo de uso**

```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>

Introducido en: v24.10.0

Devuelve el valor actual de un SETTING, o el valor predeterminado especificado en el segundo argumento si el SETTING no está definido en el perfil actual.

**Sintaxis**

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

**Argumentos**

* `setting_name` — El nombre del SETTING. [`String`](/es/reference/data-types/string)
* `default_value` — Valor que se devolverá si no se ha establecido custom\_setting. El valor puede ser de cualquier tipo de dato o NULL.

**Valor devuelto**

Devuelve el valor actual del SETTING especificado o `default_value` si el SETTING no se ha establecido.

**Ejemplos**

**Ejemplo de uso**

```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>

Introducido en: v1.1.0

Devuelve el número de campos del [`Enum`](/es/reference/data-types/enum) proporcionado.

**Sintaxis**

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

**Argumentos**

* `x` — Valor de tipo `Enum`. [`Enum`](/es/reference/data-types/enum)

**Valor devuelto**

Devuelve el número de campos con valores de entrada de tipo `Enum`. [`UInt8/16`](/es/reference/data-types/int-uint)

**Ejemplos**

**Ejemplo de uso**

```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>

Introducido en: v23.3.0

Recibe una expresión o un identificador, y una cadena constante con el nombre de la subcolumna.

Devuelve la subcolumna solicitada extraída de la expresión.

**Sintaxis**

```sql theme={null}
getSubcolumn(nested_value, subcolumn_name)
```

**Argumentos**

* Ninguno.

**Valor devuelto**

**Ejemplos**

**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>

Introducido en: v22.6.0

Enumera las rutas de los streams de serialización de un tipo de dato.
Esta función está pensada para fines de desarrollo.

**Sintaxis**

```sql theme={null}
getTypeSerializationStreams(col)
```

**Argumentos**

* `col` — Columna o representación en cadena de un tipo de dato a partir de la cual se detectará el tipo de dato. [`Any`](/es/reference/data-types/index)

**Valor devuelto**

Devuelve un array con todas las rutas de los subflujos de serialización. [`Array(String)`](/es/reference/data-types/array)

**Ejemplos**

**tupla**

```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>

Introducido en: v20.5.0

Toma un argumento de tipo cadena constante y devuelve el valor de la variable global con ese nombre. Esta función está pensada para mantener la compatibilidad con MySQL y no es necesaria ni útil para el funcionamiento normal de ClickHouse. Solo hay definidas unas pocas variables globales ficticias.

**Sintaxis**

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

**Argumentos**

* `name` — Nombre de la variable global. [`String`](/es/reference/data-types/string)

**Valor devuelto**

Devuelve el valor de la variable `name`. [`Any`](/es/reference/data-types/index)

**Ejemplos**

**globalVariable**

```sql title=Query theme={null}
SELECT globalVariable('max_allowed_packet')
```

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

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

Introducido en: v1.1.0

Comprueba si una columna específica existe en una tabla de una base de datos.
En el caso de los elementos de una estructura de datos anidada, la función comprueba si existe una columna.
En el caso de la propia estructura de datos anidada, la función devuelve `0`.

**Sintaxis**

```sql theme={null}
hasColumnInTable([hostname[, username[, password]],]database, table, column)
```

**Argumentos**

* `database` — Nombre de la base de datos. [`const String`](/es/reference/data-types/string)
* `table` — Nombre de la tabla. [`const String`](/es/reference/data-types/string)
* `column` — Nombre de la columna. [`const String`](/es/reference/data-types/string)
* `hostname` — Opcional. Nombre del servidor remoto en el que realizar la comprobación. [`const String`](/es/reference/data-types/string)
* `username` — Opcional. Nombre de usuario del servidor remoto. [`const String`](/es/reference/data-types/string)
* `password` — Opcional. Contraseña del servidor remoto. [`const String`](/es/reference/data-types/string)

**Valor devuelto**

Devuelve `1` si la columna indicada existe; en caso contrario, `0`. [`UInt8`](/es/reference/data-types/int-uint)

**Ejemplos**

**Comprobar si existe una columna**

```sql title=Query theme={null}
SELECT hasColumnInTable('system','metrics','metric')
```

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

**Comprobar una columna que no existe**

```sql title=Query theme={null}
SELECT hasColumnInTable('system','metrics','non-existing_column')
```

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

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

Introducido en: v20.6.0

Devuelve si el thread fuzzer está habilitado.
Esta función solo es útil para pruebas y depuración.

**Sintaxis**

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

**Argumentos**

* Ninguno.

**Valor devuelto**

Indica si Thread Fuzzer está activo. [`UInt8`](/es/reference/data-types/int-uint)

**Ejemplos**

**Comprobar el estado de Thread Fuzzer**

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

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

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

Introducido en: v26.5.0

Analiza una cadena con una consulta de ClickHouse SQL y devuelve un array de rangos destacados para el resaltado de sintaxis.
Cada rango es una tupla con nombre con la posición inicial (en bytes), la posición final y el tipo de resaltado.
Los tipos de resaltado describen el papel sintáctico del fragmento (palabra clave, identificador, función, etc.)
y pueden usarse para asignar colores en una UI. Dentro de los patrones de cadena de LIKE y REGEXP, los metacaracteres
y los caracteres de escape se resaltan por separado.

**Sintaxis**

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

**Argumentos**

* `query` — Una cadena de consulta de ClickHouse SQL. String.

**Valor devuelto**

Un array de tuplas con nombre `(begin UInt64, end UInt64, type Enum8(...))` que representa rangos resaltados. [`Array(Tuple(begin UInt64, end UInt64, type Enum8(...)))`](/es/reference/data-types/array)

**Ejemplos**

**simple**

```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>

Introducido en: v20.5.0

Devuelve el nombre del host en el que se ejecutó esta función.
Si la función se ejecuta en un servidor remoto (procesamiento distribuido), se devuelve el nombre de ese servidor.
Si la función se ejecuta en el contexto de una tabla distribuida, genera una columna normal con valores correspondientes a cada segmento.
De lo contrario, produce un valor constante.

**Sintaxis**

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

**Alias**: `hostname`

**Argumentos**

* Ninguno.

**Valor devuelto**

Devuelve el nombre del host. [`String`](/es/reference/data-types/string)

**Ejemplos**

**Ejemplo de uso**

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

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

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

Introducido en: v25.5.0

Implementa la lógica de la [transformación bucket de Iceberg](https://iceberg.apache.org/spec/#bucket-transform-details.)

**Sintaxis**

```sql theme={null}
icebergBucket(N, value)
```

**Argumentos**

* `N` — El número de buckets; módulo. [`const (U)Int*`](/es/reference/data-types/int-uint)
* `value` — El valor de entrada que se va a transformar. [`(U)Int*`](/es/reference/data-types/int-uint) o [`Bool`](/es/reference/data-types/boolean) o [`Decimal`](/es/reference/data-types/decimal) o [`Float*`](/es/reference/data-types/float) o [`String`](/es/reference/data-types/string) o [`FixedString`](/es/reference/data-types/fixedstring) o [`UUID`](/es/reference/data-types/uuid) o [`Date`](/es/reference/data-types/date) o [`Time`](/es/reference/data-types/time) o [`DateTime`](/es/reference/data-types/datetime)

**Valor devuelto**

Devuelve un hash de 32 bits del valor de entrada. [`Int32`](/es/reference/data-types/int-uint)

**Ejemplos**

**Ejemplo**

```sql title=Query theme={null}
SELECT icebergBucket(5, 1.0 :: Float32)
```

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

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

Introducido en: v25.3.0

Implementa la lógica de la transformación `truncate` de Iceberg: [https://iceberg.apache.org/spec/#truncate-transform-details](https://iceberg.apache.org/spec/#truncate-transform-details).

**Sintaxis**

```sql theme={null}
icebergTruncate(N, value)
```

**Argumentos**

* `value` — El valor que se va a transformar. [`String`](/es/reference/data-types/string) o [`(U)Int*`](/es/reference/data-types/int-uint) o [`Decimal`](/es/reference/data-types/decimal)

**Valor devuelto**

El mismo tipo que el del argumento

**Ejemplos**

**Ejemplo**

```sql title=Query theme={null}
SELECT icebergTruncate(3, 'iceberg')
```

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

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

Introducido en: v1.1.0

Esta función devuelve el argumento que se le pasa, lo que resulta útil para la depuración y las pruebas. Permite omitir el uso de índices para ver, en su lugar, el rendimiento de un escaneo completo. El analizador de consultas ignora todo lo que haya dentro de las funciones identity al buscar índices que usar, y también desactiva el plegado de constantes.

**Sintaxis**

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

**Argumentos**

* `x` — Valor de entrada. [`Any`](/es/reference/data-types/index)

**Valor devuelto**

Devuelve el valor de entrada sin modificar. [`Any`](/es/reference/data-types/index)

**Ejemplos**

**Ejemplo de uso**

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

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

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

Introducido en: v1.1.0

Acepta cualquier argumento y siempre devuelve `0`.

**Sintaxis**

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

**Argumentos**

* `x` — Un valor de entrada que no se utiliza y se pasa únicamente para evitar un error de sintaxis. [`Any`](/es/reference/data-types/index)

**Valor devuelto**

Siempre devuelve `0`. [`UInt8`](/es/reference/data-types/int-uint)

**Ejemplos**

**Ejemplo de uso**

```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>

Introducido en: v1.1.0

Esta función está pensada para depuración e introspección.
Ignora su argumento y siempre devuelve 1.
Los argumentos no se evalúan.

Durante el análisis del índice, se asume que el argumento de esta función no está envuelto en `indexHint`.
Esto le permite seleccionar datos en rangos del índice mediante la condición correspondiente, pero sin aplicar después un filtrado por esa condición.
El índice de ClickHouse es disperso, y usar `indexHint` devolverá más datos que especificar directamente la misma condición.

<Accordion title="Explicación">
  Cuando ejecuta:

  ```sql theme={null}
  SELECT * FROM test WHERE key = 123;
  ```

  ClickHouse hace dos cosas:

  1. Usa el índice para encontrar qué gránulos (bloques de \~8192 filas) podrían contener `key = 123`
  2. Lee esos gránulos y los filtra fila por fila para devolver solo las filas donde `key = 123`

  Así que, aunque lea 8192 filas del disco, solo devuelve la única fila que realmente coincide.

  Con `indexHint`, cuando ejecuta:

  ```sql theme={null}
  SELECT * FROM test WHERE indexHint(key = 123);
  ```

  ClickHouse hace solo una cosa:

  1. Usa el índice para encontrar qué gránulos podrían contener `key = 123` y devuelve todas las filas de esos gránulos **sin** filtrarlas.

  Devuelve las 8192 filas, incluidas las filas donde `key = 456`, `key = 789`, etc. (Todo lo que haya quedado almacenado en el mismo gránulo).
  `indexHint()` no sirve para mejorar el rendimiento. Sirve para depurar y entender cómo funciona el índice de ClickHouse:

  * ¿Qué gránulos selecciona mi condición?
  * ¿Cuántas filas hay en esos gránulos?
  * ¿Se está usando mi índice de forma eficaz?
</Accordion>

Nota: No es posible optimizar una consulta con la función `indexHint`. La función `indexHint` no optimiza la consulta, ya que no proporciona ninguna información adicional para el análisis de la consulta. Tener una expresión dentro de la función `indexHint` no es en modo alguno mejor que no usar la función `indexHint`. La función `indexHint` solo puede usarse con fines de introspección y depuración, y no mejora el rendimiento. Si ve que alguien que no sea colaborador de ClickHouse usa `indexHint`, probablemente sea un error y debería eliminarlo.

**Sintaxis**

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

**Argumentos**

* `expression` — Cualquier expresión para la selección del rango del índice. [`Expression`](/es/reference/data-types/special-data-types/expression)

**Valor devuelto**

Devuelve `1` en todos los casos. [`UInt8`](/es/reference/data-types/int-uint)

**Ejemplos**

**Ejemplo de uso con filtro por fecha**

```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>

Introducido en: v1.1.0

Devuelve el ID de la consulta inicial de la consulta actual.
Otros parámetros de una consulta pueden extraerse del campo `initial_query_id` en [`system.query_log`](/es/reference/system-tables/query_log).

A diferencia de la función [`queryID`](/es/reference/functions/regular-functions/other-functions#queryID), `initialQueryID` devuelve los mismos resultados en diferentes segmentos.

**Sintaxis**

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

**Aliases**: `initial_query_id`

**Argumentos**

* Ninguno.

**Valor devuelto**

Devuelve el ID de la consulta inicial asociada a la consulta actual. [`String`](/es/reference/data-types/string)

**Ejemplos**

**Ejemplo de uso**

```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>

Introducido en: v25.4.0

Devuelve la hora de inicio de la consulta actual original.
`initialQueryStartTime` devuelve los mismos resultados en diferentes segmentos.

**Sintaxis**

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

**Alias**: `initial_query_start_time`

**Argumentos**

* Ninguno.

**Valor devuelto**

Devuelve la hora de inicio de la consulta inicial de la consulta actual. [`DateTime`](/es/reference/data-types/datetime)

**Ejemplos**

**Ejemplo de uso**

```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>

Introducido en: v20.6.0

Calcula el resultado de una función de agregación a partir de un único valor.
Esta función puede utilizarse para inicializar funciones de agregación con el combinador [-State](/es/reference/functions/aggregate-functions/combinators#-state).
Puede crear estados de funciones de agregación e insertarlos en columnas de tipo [`AggregateFunction`](/es/reference/data-types/aggregatefunction), o usar agregados inicializados como valores por defecto.

**Sintaxis**

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

**Argumentos**

* `aggregate_function` — Nombre de la función de agregación que se va a inicializar. [`String`](/es/reference/data-types/string)
* `arg1[, arg2, ...]` — Argumentos de la función de agregación. [`Any`](/es/reference/data-types/index)

**Valor devuelto**

Devuelve el resultado de la agregación para cada fila que se pasa a la función. El tipo de retorno es el mismo que el de la función que `initializeAggregation` recibe como primer argumento. [`Any`](/es/reference/data-types/index)

**Ejemplos**

**Uso básico con 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 │
└──────────────────┘
```

**Uso de sumState y 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>

Introducido en: v20.3.0

Indica si el argumento es una expresión constante.
Una expresión constante es una expresión cuyo resultado se conoce durante el análisis de la consulta, es decir, antes de la ejecución.
Por ejemplo, las expresiones sobre [literales](/es/reference/syntax#literals) son expresiones constantes.
Esta función está pensada principalmente para desarrollo, depuración y demostración.

**Sintaxis**

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

**Argumentos**

* `x` — Una expresión que se debe comprobar. [`Any`](/es/reference/data-types/index)

**Valor devuelto**

Devuelve `1` si `x` es constante y `0` si `x` no es constante. [`UInt8`](/es/reference/data-types/int-uint)

**Ejemplos**

**Expresión constante**

```sql title=Query theme={null}
SELECT isConstant(x + 1)
FROM (SELECT 43 AS x)
```

```response title=Response theme={null}
┌─isConstant(plus(x, 1))─┐
│                      1 │
└────────────────────────┘
```

**Constante con una función**

```sql title=Query theme={null}
WITH 3.14 AS pi
SELECT isConstant(cos(pi))
```

```response title=Response theme={null}
┌─isConstant(cos(pi))─┐
│                   1 │
└─────────────────────┘
```

**Expresión no constante**

```sql title=Query theme={null}
SELECT isConstant(number)
FROM numbers(1)
```

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

**Comportamiento de la función now()**

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

```response title=Response theme={null}
┌─isConstant(now())─┐
│                 1 │
└───────────────────┘
```

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

Introducido en: v20.8.0

Comprueba si un número decimal tiene demasiados dígitos para caber correctamente en un tipo de dato Decimal con la precisión indicada.

**Sintaxis**

```sql theme={null}
isDecimalOverflow(value[, precision])
```

**Argumentos**

* `value` — Valor `Decimal` que se va a comprobar. [`Decimal`](/es/reference/data-types/decimal)
* `precision` — Opcional. La precisión del tipo `Decimal`. Si se omite, se usa la precisión inicial del primer argumento. [`UInt8`](/es/reference/data-types/int-uint)

**Valor devuelto**

Devuelve `1` si el valor decimal tiene más dígitos de los permitidos por su precisión, y `0` si el valor decimal cumple la precisión especificada. [`UInt8`](/es/reference/data-types/int-uint)

**Ejemplos**

**Ejemplo de uso**

```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>

Introducido en: v18.16.0

Permite extraer datos de una tabla de la misma manera que de un diccionario.
Obtiene datos de tablas Join usando la clave de join especificada.

<Note>
  Solo admite tablas creadas con la instrucción `ENGINE = Join(ANY, LEFT, <join_keys>)` [sentencia](/es/reference/engines/table-engines/special/join).
</Note>

**Sintaxis**

```sql theme={null}
joinGet(join_storage_table_name, value_column, join_keys)
```

**Argumentos**

* `join_storage_table_name` — Un identificador que indica dónde realizar la búsqueda. El identificador se busca en la base de datos predeterminada (consulte el parámetro `default_database` en el archivo de configuración). Para anular la base de datos predeterminada, use la consulta `USE database_name` o especifique la base de datos y la tabla mediante un punto, como `database_name.table_name`. [`String`](/es/reference/data-types/string)
* `value_column` — El nombre de la columna de la tabla que contiene los datos necesarios. [`const String`](/es/reference/data-types/string)
* `join_keys` — Una lista de claves de join. [`Any`](/es/reference/data-types/index)

**Valor devuelto**

Devuelve una lista de valores correspondientes a la lista de claves. [`Any`](/es/reference/data-types/index)

**Ejemplos**

**Ejemplo de uso**

```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 │
└─────────────────────────────────────────────┘
```

**Uso con una tabla de la base de datos actual**

```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 │
└─────────────────────────────────────┘
```

**Uso de arrays como claves de 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>

Introducido en: v20.4.0

Permite extraer datos de una tabla de la misma forma que de un diccionario.
Obtiene datos de tablas Join mediante la clave de join especificada.
A diferencia de [`joinGet`](#joinGet), devuelve `NULL` cuando la clave no existe.

<Note>
  Solo admite tablas creadas con la `ENGINE = Join(ANY, LEFT, <join_keys>)` [sentencia](/es/reference/engines/table-engines/special/join).
</Note>

**Sintaxis**

```sql theme={null}
joinGetOrNull(join_storage_table_name, value_column, join_keys)
```

**Argumentos**

* `join_storage_table_name` — Un identificador que indica dónde realizar la búsqueda. El identificador se busca en la base de datos predeterminada (consulte el parámetro default\_database en el archivo de configuración). Para usar otra base de datos distinta de la predeterminada, utilice la consulta `USE database_name` o especifique la base de datos y la tabla separadas por un punto, como en `database_name.table_name`. [`String`](/es/reference/data-types/string)
* `value_column` — El nombre de la columna de la tabla que contiene los datos necesarios. [`const String`](/es/reference/data-types/string)
* `join_keys` — Una lista de claves de join. [`Any`](/es/reference/data-types/index)

**Valor devuelto**

Devuelve una lista de valores correspondientes a la lista de claves, o `NULL` si no se encuentra una clave. [`Any`](/es/reference/data-types/index)

**Ejemplos**

**Ejemplo de uso**

```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>

Introducido en: v18.12.0

Devuelve la posición de un valor en el diccionario de una columna [LowCardinality](/es/reference/data-types/lowcardinality). Las posiciones empiezan en 1. Como LowCardinality tiene diccionarios por cada parte, esta función puede devolver posiciones distintas para el mismo valor en diferentes partes.

**Sintaxis**

```sql theme={null}
lowCardinalityIndices(col)
```

**Argumentos**

* `col` — Una columna de baja cardinalidad. [`LowCardinality`](/es/reference/data-types/lowcardinality)

**Valor devuelto**

La posición del valor en el diccionario de la parte actual. [`UInt64`](/es/reference/data-types/int-uint)

**Ejemplos**

**Ejemplos de uso**

```sql title=Query theme={null}
DROP TABLE IF EXISTS test;
CREATE TABLE test (s LowCardinality(String)) ENGINE = Memory;

-- crear dos partes:

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>

Introducido en: v18.12.0

Devuelve los valores del diccionario de una columna [LowCardinality](/es/reference/data-types/lowcardinality).
Si el bloque es más pequeño o más grande que el tamaño del diccionario, el resultado se truncará o se completará con valores predeterminados.
Dado que LowCardinality tiene diccionarios por parte, esta función puede devolver valores de diccionario diferentes en distintas partes.

**Sintaxis**

```sql theme={null}
lowCardinalityKeys(col)
```

**Argumentos**

* `col` — Una columna de baja cardinalidad. [`LowCardinality`](/es/reference/data-types/lowcardinality)

**Valor devuelto**

Devuelve las claves del diccionario. [`UInt64`](/es/reference/data-types/int-uint)

**Ejemplos**

**lowCardinalityKeys**

```sql title=Query theme={null}
DROP TABLE IF EXISTS test;
CREATE TABLE test (s LowCardinality(String)) ENGINE = Memory;

-- crear dos partes:

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>

Introducido en: v1.1.0

Convierte una constante en una columna completa que contiene un solo valor.
Las columnas completas y las constantes se representan de forma diferente en memoria.
Las funciones suelen ejecutar código diferente para los argumentos normales y los constantes, aunque por lo general el resultado debería ser el mismo.
Esta función puede utilizarse para depurar este comportamiento.

**Sintaxis**

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

**Argumentos**

* `x` — Una constante. [`Any`](/es/reference/data-types/index)

**Valor devuelto**

Devuelve una columna completa con el valor constante. [`Any`](/es/reference/data-types/index)

**Ejemplos**

**Ejemplo de uso**

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

SELECT countMatches('foobarfoo', 'foo');
SELECT countMatches('foobarfoo', materialize('foo'));
```

```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>

Introducido en: v23.10.0

Calcula el tamaño mínimo de muestra necesario para una prueba A/B que compara las medias de una métrica continua en dos muestras.

Usa la fórmula descrita en [este artículo](https://towardsdatascience.com/required-sample-size-for-a-b-testing-6f6608dd330a).
Asume tamaños iguales para los grupos de tratamiento y de control.
Devuelve el tamaño de muestra necesario para un grupo (es decir, el tamaño de muestra necesario para todo el experimento es el doble del valor devuelto).
También asume una varianza igual de la métrica evaluada en los grupos de tratamiento y de control.

**Sintaxis**

```sql theme={null}
minSampleSizeContinuous(baseline, sigma, mde, power, alpha)
```

**Alias**: `minSampleSizeContinous`

**Argumentos**

* `baseline` — Valor de referencia de una métrica. [`(U)Int*`](/es/reference/data-types/int-uint) o [`Float*`](/es/reference/data-types/float)
* `sigma` — Desviación estándar de referencia de una métrica. [`(U)Int*`](/es/reference/data-types/int-uint) o [`Float*`](/es/reference/data-types/float)
* `mde` — Efecto mínimo detectable (MDE) como porcentaje del valor de referencia (p. ej., para un valor de referencia de 112.25, un MDE de 0.03 significa un cambio esperado a 112.25 ± 112.25\*0.03). [`(U)Int*`](/es/reference/data-types/int-uint) o [`Float*`](/es/reference/data-types/float)
* `power` — Potencia estadística requerida de una prueba (1 - probabilidad de error de tipo II). [`(U)Int*`](/es/reference/data-types/int-uint) o [`Float*`](/es/reference/data-types/float)
* `alpha` — Nivel de significación requerido de una prueba (probabilidad de error de tipo I). [`(U)Int*`](/es/reference/data-types/int-uint) o [`Float*`](/es/reference/data-types/float)

**Valor devuelto**

Devuelve un Tuple con nombre con 3 elementos: `minimum_sample_size`, `detect_range_lower` y `detect_range_upper`. Estos corresponden, respectivamente, al tamaño de muestra requerido, al límite inferior del rango de valores no detectables con el tamaño de muestra requerido devuelto, calculado como `baseline * (1 - mde)`, y al límite superior del rango de valores no detectables con el tamaño de muestra requerido devuelto, calculado como `baseline * (1 + mde)` (Float64). [`Tuple(Float64, Float64, Float64)`](/es/reference/data-types/tuple)

**Ejemplos**

**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>

Introducido en: v22.6.0

Calcula el tamaño mínimo de muestra necesario para una prueba A/B que compara conversiones (proporciones) en dos muestras.

Utiliza la fórmula descrita en [este artículo](https://towardsdatascience.com/required-sample-size-for-a-b-testing-6f6608dd330a). Asume tamaños iguales para los grupos de tratamiento y de control. Devuelve el tamaño de muestra necesario para un grupo (es decir, el tamaño de muestra necesario para todo el experimento es el doble del valor devuelto).

**Sintaxis**

```sql theme={null}
minSampleSizeConversion(baseline, mde, power, alpha)
```

**Argumentos**

* `baseline` — Tasa de conversión de referencia. [`Float*`](/es/reference/data-types/float)
* `mde` — Efecto mínimo detectable (MDE), en puntos porcentuales (p. ej., para una tasa de conversión de referencia de 0.25, un MDE de 0.03 significa un cambio esperado a 0.25 ± 0.03). [`Float*`](/es/reference/data-types/float)
* `power` — Potencia estadística requerida de una prueba (1 - probabilidad de error de tipo II). [`Float*`](/es/reference/data-types/float)
* `alpha` — Nivel de significación requerido de una prueba (probabilidad de error de tipo I). [`Float*`](/es/reference/data-types/float)

**Valor devuelto**

Devuelve un Tuple con nombre con 3 elementos: `minimum_sample_size`, `detect_range_lower`, `detect_range_upper`. Estos son, respectivamente: el tamaño de muestra requerido, el límite inferior del intervalo de valores no detectables con el tamaño de muestra requerido devuelto, calculado como `baseline - mde`, y el límite superior del intervalo de valores no detectables con el tamaño de muestra requerido devuelto, calculado como `baseline + mde`. [`Tuple(Float64, Float64, Float64)`](/es/reference/data-types/tuple)

**Ejemplos**

**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>

Introducido en: v20.1.0

Devuelve un valor de una columna con un desplazamiento especificado respecto de la fila actual.
Esta función está obsoleta y es propensa a errores porque opera sobre el orden físico de los bloques de datos, que puede no corresponderse con el orden lógico que esperan los usuarios.
Considere usar funciones de ventana adecuadas en su lugar.

La función puede habilitarse estableciendo `allow_deprecated_error_prone_window_functions = 1`.

**Sintaxis**

```sql theme={null}
neighbor(column, offset[, default_value])
```

**Argumentos**

* `column` — La columna de origen. [`Any`](/es/reference/data-types/index)
* `offset` — El desplazamiento con respecto a la fila actual. Los valores positivos avanzan y los valores negativos retroceden. [`Integer`](/es/reference/data-types/int-uint)
* `default_value` — Opcional. El valor que se devuelve si el desplazamiento queda fuera de los límites de los datos. Si no se especifica, se usa el valor predeterminado del tipo de columna. [`Any`](/es/reference/data-types/index)

**Valor devuelto**

Devuelve un valor en el desplazamiento especificado o el valor predeterminado si queda fuera de los límites. [`Any`](/es/reference/data-types/index)

**Ejemplos**

**Ejemplo de uso**

```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 │
└────────┴─────────────────────┘
```

**Con valor predeterminado**

```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>

Introducido en: v20.8.0

Sustituye los literales, las secuencias de literales y los alias complejos (que contienen espacios en blanco, más de dos dígitos o tienen una longitud de al menos 36 bytes, como los UUID) por el marcador de posición `?`.

**Sintaxis**

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

**Argumentos**

* `x` — Secuencia de caracteres. [`String`](/es/reference/data-types/string)

**Valor devuelto**

Devuelve la secuencia de caracteres proporcionada con marcadores de posición. [`String`](/es/reference/data-types/string)

**Ejemplos**

**Ejemplo de uso**

```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>

Introducido en: v21.2.0

Reemplaza los literales y las secuencias de literales por el marcador de posición `?`, pero no reemplaza los alias complejos (que contienen espacios en blanco, más de dos dígitos o tienen una longitud de al menos 36 bytes, como los UUID).
Esto ayuda a analizar mejor los logs de consultas complejas.

**Sintaxis**

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

**Argumentos**

* `x` — Secuencia de caracteres. [`String`](/es/reference/data-types/string)

**Valor devuelto**

Devuelve la secuencia de caracteres proporcionada con marcadores de posición. [`String`](/es/reference/data-types/string)

**Ejemplos**

**Ejemplo de uso**

```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>

Introducido en: v20.8.0

Devuelve valores hash idénticos de 64 bits para consultas similares, sin tener en cuenta los valores de los literales.
Puede ser útil para analizar los logs de consultas.

**Sintaxis**

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

**Argumentos**

* `x` — Secuencia de caracteres. [`String`](/es/reference/data-types/string)

**Valor devuelto**

Devuelve un valor hash de 64 bits. [`UInt64`](/es/reference/data-types/int-uint)

**Ejemplos**

**Ejemplo de uso**

```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>

Introducido en la versión v21.2.0

Al igual que [`normalizedQueryHash`](#normalizedQueryHash), devuelve valores hash idénticos de 64 bits para consultas similares sin incluir los valores de los literales, pero no reemplaza los alias complejos (que contienen espacios en blanco, más de dos dígitos o tienen una longitud mínima de 36 bytes, como los UUID) por un marcador de posición antes de calcular el hash.
Puede ser útil para analizar el log de consulta.

**Sintaxis**

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

**Argumentos**

* `x` — Secuencia de caracteres. [`String`](/es/reference/data-types/string)

**Valor devuelto**

Devuelve un valor hash de 64 bits. [`UInt64`](/es/reference/data-types/int-uint)

**Ejemplos**

**Ejemplo de uso**

```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>

Introducido en: v26.4.0

Ofusca una consulta SQL sustituyendo los identificadores por palabras aleatorias y los literales por valores aleatorios, a la vez que conserva la estructura de la consulta.

Esta función es útil para anonimizar consultas antes de registrarlas o compartirlas con fines de depuración.
Distintas filas producirán resultados ofuscados diferentes incluso para la misma consulta de entrada, lo que ayuda
a mantener la privacidad al trabajar con múltiples consultas.

El parámetro opcional `tag` evita la eliminación de subexpresiones comunes cuando la misma llamada a la función
se usa varias veces en una consulta. Esto garantiza que cada invocación produzca un resultado ofuscado diferente.

Características:

* Sustituye los nombres de tabla, los nombres de columna y los alias por palabras aleatorias
* Sustituye los literales numéricos y de texto por valores aleatorios
* Conserva la estructura general de la consulta y la sintaxis SQL
* Produce resultados diferentes para distintas filas

**Sintaxis**

```sql theme={null}
obfuscateQuery(query[, tag])
```

**Argumentos**

* `query` — La consulta SQL que se va a ofuscar. [`String`](/es/reference/data-types/string)
* `tag` — Opcional. Un valor para evitar la eliminación de subexpresiones comunes cuando la misma llamada a función se utiliza varias veces.

**Valor devuelto**

La consulta ofuscada, con los identificadores y literales reemplazados, conservando la estructura original de la consulta. [`String`](/es/reference/data-types/string)

**Ejemplos**

**Uso básico**

```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
```

**Con una etiqueta para evitar la eliminación de subexpresiones comunes**

```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
```

**Filas distintas producen resultados diferentes**

```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>

Introducido en: v26.4.0

Ofusca una consulta SQL usando una semilla específica para obtener resultados deterministas.

A diferencia de `obfuscateQuery()`, esta función produce resultados deterministas cuando se le proporciona la misma semilla.
Esto resulta útil cuando necesitas una ofuscación coherente en varias ejecuciones o cuando quieres
reproducir la misma consulta ofuscada para fines de prueba o depuración.

Características:

* Ofuscación determinista basada en la semilla proporcionada
* La misma semilla siempre produce el mismo resultado ofuscado
* Semillas diferentes producen resultados diferentes
* Conserva la estructura de la consulta, igual que obfuscateQuery()

Casos de uso:

* Casos de prueba reproducibles
* Anonimización coherente en varias ejecuciones
* Depuración con consultas ofuscadas coherentes

**Sintaxis**

```sql theme={null}
obfuscateQueryWithSeed(query, seed)
```

**Argumentos**

* `query` — La consulta SQL que se va a ofuscar. [`String`](/es/reference/data-types/string)
* `seed` — La semilla de la ofuscación. La misma semilla produce resultados deterministas. [`Integer`](/es/reference/data-types/int-uint) o [`String`](/es/reference/data-types/string)

**Valor devuelto**

La consulta ofuscada, generada de forma determinista a partir de la semilla proporcionada. [`String`](/es/reference/data-types/string)

**Ejemplos**

**Ofuscación determinista con una semilla entera**

```sql title=Query theme={null}
SELECT obfuscateQueryWithSeed('SELECT name FROM users', 42)
```

```response title=Response theme={null}
SELECT fruit FROM table
```

**Ofuscación determinista con una semilla de texto**

```sql title=Query theme={null}
SELECT obfuscateQueryWithSeed('SELECT id, value FROM data', 'myseed')
```

```response title=Response theme={null}
SELECT a, b FROM c
```

**La misma semilla da el mismo resultado**

```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>

Introducido en: v24.6.0

Dada una cadena que contiene un tamaño en bytes y `B`, `KiB`, `KB`, `MiB`, `MB`, etc. como unidad (es decir, [ISO/IEC 80000-13](https://en.wikipedia.org/wiki/ISO/IEC_80000) o una unidad decimal de bytes), esta función devuelve el número de bytes correspondiente.
Si la función no puede interpretar el valor de entrada, lanza una excepción.

Las operaciones inversas de esta función son [`formatReadableSize`](#formatReadableSize) y [`formatReadableDecimalSize`](#formatReadableDecimalSize).

**Sintaxis**

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

**Argumentos**

* `x` — Tamaño legible con una unidad de bytes ISO/IEC 80000-13 o decimal. [`String`](/es/reference/data-types/string)

**Valor devuelto**

Devuelve el número de bytes, redondeado hacia arriba al entero más cercano. [`UInt64`](/es/reference/data-types/int-uint)

**Ejemplos**

**Ejemplo de uso**

```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>

Introducido en: v24.6.0

Dada una cadena que contiene un tamaño de bytes y `B`, `KiB`, `KB`, `MiB`, `MB`, etc. como unidad (es decir, [ISO/IEC 80000-13](https://en.wikipedia.org/wiki/ISO/IEC_80000) o una unidad decimal de bytes), esta función devuelve el número de bytes correspondiente.
Si la función no puede interpretar el valor de entrada, devuelve `NULL`.

Las operaciones inversas de esta función son [`formatReadableSize`](#formatReadableSize) y [`formatReadableDecimalSize`](#formatReadableDecimalSize).

**Sintaxis**

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

**Argumentos**

* `x` — Tamaño en formato legible con una unidad de bytes ISO/IEC 80000-13 o decimal. [`String`](/es/reference/data-types/string)

**Valor devuelto**

Devuelve el número de bytes, redondeado hacia arriba al entero más cercano, o `NULL` si no se puede interpretar la entrada [`Nullable(UInt64)`](/es/reference/data-types/nullable)

**Ejemplos**

**Ejemplo de uso**

```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>

Introducido en: v24.6.0

Dada una cadena que contiene un tamaño en bytes y `B`, `KiB`, `KB`, `MiB`, `MB`, etc. como unidad (es decir, [ISO/IEC 80000-13](https://en.wikipedia.org/wiki/ISO/IEC_80000) o una unidad decimal de bytes), esta función devuelve el número de bytes correspondiente.
Si la función no puede interpretar el valor de entrada, devuelve `0`.

Las operaciones inversas de esta función son [`formatReadableSize`](#formatReadableSize) y [`formatReadableDecimalSize`](#formatReadableDecimalSize).

**Sintaxis**

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

**Argumentos**

* `x` — Tamaño legible con una unidad de bytes según ISO/IEC 80000-13 o decimal. [`String`](/es/reference/data-types/string)

**Valor devuelto**

Devuelve el número de bytes, redondeado hacia arriba al entero más cercano, o `0` si no es posible analizar la entrada. [`UInt64`](/es/reference/data-types/int-uint)

**Ejemplos**

**Ejemplo de uso**

```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>

Introducido en: v22.7.0

Analiza una secuencia de números seguida de algo que se asemeja a una unidad de tiempo.

La cadena de intervalo de tiempo usa estas especificaciones de unidades de tiempo:

* `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`

Se pueden combinar varias unidades de tiempo con separadores (espacio, `;`, `-`, `+`, `,`, `:`).

La duración de los años y los meses es aproximada: un año equivale a 365 días y un mes a 30.5 días.

**Sintaxis**

```sql theme={null}
parseTimeDelta(timestr)
```

**Argumentos**

* `timestr` — Una secuencia de números seguida de algo parecido a una unidad de tiempo. [`String`](/es/reference/data-types/string)

**Valor devuelto**

El número de segundos. [`Float64`](/es/reference/data-types/float)

**Ejemplos**

**Ejemplo de uso**

```sql title=Query theme={null}
SELECT parseTimeDelta('11s+22min')
```

```response title=Response theme={null}
┌─parseTimeDelta('11s+22min')─┐
│                        1331 │
└─────────────────────────────┘
```

**Unidades de tiempo complejas**

```sql title=Query theme={null}
SELECT parseTimeDelta('1yr2mo')
```

```response title=Response theme={null}
┌─parseTimeDelta('1yr2mo')─┐
│                 36806400 │
└──────────────────────────┘
```

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

Introducido en: v21.4.0

Calcula el [ID de la partición](/es/reference/engines/table-engines/mergetree-family/custom-partitioning-key).

<Note>
  Esta función es lenta y no debe utilizarse con grandes cantidades de filas.
</Note>

**Sintaxis**

```sql theme={null}
partitionId(column1[, column2, ...])
```

**Alias**: `partitionID`

**Argumentos**

* `column1, column2, ...` — Columna cuyo ID de partición se devuelve.

**Valor devuelto**

Devuelve el ID de partición al que pertenece la fila. [`String`](/es/reference/data-types/string)

**Ejemplos**

**Ejemplo de uso**

```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>

Introducido en: v21.9.0

Devuelve el ID de la consulta actual.
Se pueden extraer otros parámetros de la consulta del campo `query_id` de la tabla [`system.query_log`](/es/reference/system-tables/query_log).

A diferencia de la función [`initialQueryID`](#initialQueryID), `queryID` puede devolver resultados diferentes en distintos segmentos.

**Sintaxis**

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

**Alias**: `query_id`

**Argumentos**

* Ninguno.

**Valor devuelto**

Devuelve el ID de la consulta actual. [`String`](/es/reference/data-types/string)

**Ejemplos**

**Ejemplo de uso**

```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>

Introducido en: v22.7.0

Devuelve la revisión actual del servidor de ClickHouse.

**Sintaxis**

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

**Argumentos**

* Ninguno.

**Valor devuelto**

Devuelve la revisión actual del servidor de ClickHouse. [`UInt32`](/es/reference/data-types/int-uint)

**Ejemplos**

**Ejemplo de uso**

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

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

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

Introducido en: v1.1.0

Devuelve un número de fila único para cada fila que se procesa.

**Sintaxis**

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

**Argumentos**

* Ninguno.

**Valor devuelto**

Devuelve el número ordinal de la fila en el bloque de datos, начиная desde `0`. [`UInt64`](/es/reference/data-types/int-uint)

**Ejemplos**

**Ejemplo de uso**

```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>

Introducido en: v1.1.0

Para cada [bloque](/es/resources/develop-contribute/introduction/architecture#block) procesado por `rowNumberInBlock`, devuelve el número de la fila actual.

El número devuelto comienza en 0 en cada bloque.

**Sintaxis**

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

**Argumentos**

* Ninguno.

**Valor devuelto**

Devuelve el número ordinal de la fila del bloque de datos a partir de `0`. [`UInt64`](/es/reference/data-types/int-uint)

**Ejemplos**

**Ejemplo de uso**

```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>

Introducido en: v1.1.0

Acumula los estados de una función de agregación para cada fila de un bloque de datos.

<Warning>
  **Obsoleto**

  El estado se restablece con cada nuevo bloque de datos.
  Debido a este comportamiento propenso a errores, la función ha quedado obsoleta, y se recomienda usar [funciones de ventana](/es/reference/functions/window-functions/index) en su lugar.
  Puede usar la configuración [`allow_deprecated_error_prone_window_functions`](/es/reference/settings/session-settings#allow_deprecated_error_prone_window_functions) para permitir el uso de esta función.
</Warning>

**Sintaxis**

```sql theme={null}
runningAccumulate(agg_state[, grouping])
```

**Argumentos**

* `agg_state` — Estado de la función de agregación. [`AggregateFunction`](/es/reference/data-types/aggregatefunction)
* `grouping` — Opcional. Clave de agrupación. El estado de la función se restablece si cambia el valor de `grouping`. Puede ser cualquiera de los tipos de datos compatibles para los que esté definido el operador de igualdad. [`Any`](/es/reference/data-types/index)

**Valor devuelto**

Devuelve el resultado acumulado para cada fila. [`Any`](/es/reference/data-types/index)

**Ejemplos**

**Ejemplo de uso con 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>

Introducido en: v21.3.0

Calcula el número de eventos concurrentes.
Cada evento tiene una hora de inicio y una hora de finalización.
La hora de inicio se incluye en el evento, mientras que la hora de finalización se excluye.
Las columnas con una hora de inicio y una hora de finalización deben tener el mismo tipo de dato.
La función calcula el número total de eventos activos (concurrentes) para cada hora de inicio de evento.

<Tip>
  **Requisitos**

  Los eventos deben estar ordenados por hora de inicio en orden ascendente.
  Si no se cumple este requisito, la función genera una excepción.
  Cada bloque de datos se procesa por separado.
  Si los eventos de distintos bloques de datos se superponen, no se pueden procesar correctamente.
</Tip>

<Warning>
  **Obsoleto**

  Se recomienda usar [funciones de ventana](/es/reference/functions/window-functions/index) en su lugar.
</Warning>

**Sintaxis**

```sql theme={null}
runningConcurrency(start, end)
```

**Argumentos**

* `start` — Una columna con la hora de inicio de los eventos. [`Date`](/es/reference/data-types/date) o [`DateTime`](/es/reference/data-types/datetime) o [`DateTime64`](/es/reference/data-types/datetime64)
* `end` — Una columna con la hora de finalización de los eventos. [`Date`](/es/reference/data-types/date) o [`DateTime`](/es/reference/data-types/datetime) o [`DateTime64`](/es/reference/data-types/datetime64)

**Valor devuelto**

Devuelve el número de eventos concurrentes en cada hora de inicio de los eventos. [`UInt32`](/es/reference/data-types/int-uint)

**Ejemplos**

**Ejemplo de uso**

```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>

Introducido en: v1.1.0

Calcula la diferencia entre los valores de dos filas consecutivas en el bloque de datos.
Devuelve `0` para la primera fila y, para las siguientes, la diferencia con respecto a la fila anterior.

<Warning>
  **Obsoleto**

  Solo devuelve diferencias dentro del bloque de datos que se está procesando en ese momento.
  Debido a este comportamiento propenso a errores, la función está obsoleta.
  Se recomienda usar [funciones de ventana](/es/reference/functions/window-functions/index) en su lugar.

  Puede usar la configuración [`allow_deprecated_error_prone_window_functions`](/es/reference/settings/session-settings#allow_deprecated_error_prone_window_functions) para permitir el uso de esta función.
</Warning>

El resultado de la función depende de los bloques de datos procesados y del orden de los datos dentro del bloque.
El orden de las filas durante el cálculo de `runningDifference()` puede diferir del orden de las filas que se devuelven al usuario.
Para evitarlo, puede crear una subconsulta con [`ORDER BY`](/es/reference/statements/select/order-by) y llamar a la función fuera de la subconsulta.
Tenga en cuenta que el tamaño del bloque afecta al resultado.
El estado interno de `runningDifference` se restablece con cada bloque nuevo.

**Sintaxis**

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

**Argumentos**

* `x` — Columna para la que se calcula la diferencia entre valores consecutivos. [`Any`](/es/reference/data-types/index)

**Valor devuelto**

Devuelve la diferencia entre valores consecutivos, con 0 en la primera fila.

**Ejemplos**

**Ejemplo de uso**

```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 │
└─────────┴─────────────────────┴───────┘
```

**Ejemplo del impacto del tamaño de bloque**

```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>

Introducido en: v1.1.0

Calcula la diferencia entre los valores de filas consecutivas en un bloque de datos, pero, a diferencia de [`runningDifference`](#runningDifference), devuelve el valor real de la primera fila en lugar de `0`.

<Warning>
  **Obsoleto**

  Solo devuelve las diferencias dentro del bloque de datos que se está procesando en ese momento.
  Debido a este comportamiento propenso a errores, la función está obsoleta.
  Se recomienda usar [funciones de ventana](/es/reference/functions/window-functions/index) en su lugar.

  Puede usar la configuración `allow_deprecated_error_prone_window_functions` para permitir el uso de esta función.
</Warning>

**Sintaxis**

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

**Argumentos**

* `x` — Columna para la que se calcula la diferencia acumulada. [`Any`](/es/reference/data-types/index)

**Valor devuelto**

Devuelve la diferencia entre valores consecutivos; para la primera fila, devuelve el valor de esa misma fila. [`Any`](/es/reference/data-types/index)

**Ejemplos**

**Ejemplo de uso**

```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>

Introducido en: v20.1.0

Devuelve el UUID (v4) aleatorio y único generado cuando el servidor se inicia por primera vez.
El UUID se almacena de forma persistente; es decir, en el segundo, tercer, etc. inicio del servidor se devuelve el mismo UUID.

**Sintaxis**

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

**Argumentos**

* Ninguno.

**Valor devuelto**

Devuelve el UUID aleatorio del servidor. [`UUID`](/es/reference/data-types/uuid)

**Ejemplos**

**Ejemplo de uso**

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

```response title=Response theme={null}
┌─serverUUID()─────────────────────────────┐
│ 7ccc9260-000d-4d5c-a843-5459abaabb5f     │
└──────────────────────────────────────────┘
```

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

Introducido en: v21.9.0

Devuelve el número total de segmentos de una consulta distribuida.
Si la consulta no es distribuida, se devuelve el valor constante `0`.

**Sintaxis**

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

**Argumentos**

* Ninguno.

**Valor devuelto**

Devuelve el número total de segmentos o `0`. [`UInt32`](/es/reference/data-types/int-uint)

**Ejemplos**

**Ejemplo de uso**

```sql title=Query theme={null}
-- Consulta el ejemplo de shardNum() anterior, que también muestra 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>

Introducido en: v21.9.0

Devuelve el índice de un segmento que procesa una parte de los datos en una consulta distribuida.
Los índices comienzan en `1`.
Si una consulta no es distribuida, se devuelve el valor constante `0`.

**Sintaxis**

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

**Argumentos**

* Ninguno.

**Valor devuelto**

Devuelve el índice del segmento o una constante `0`. [`UInt32`](/es/reference/data-types/int-uint)

**Ejemplos**

**Ejemplo de uso**

```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>

Introducido en: v22.6.0

Muestra información sobre el certificado SSL actual del servidor, si se ha configurado.
Consulta [Configuración de TLS](/es/concepts/features/security/tls/configuring-tls) para obtener más información sobre cómo configurar ClickHouse para usar certificados OpenSSL para validar las conexiones.

**Sintaxis**

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

**Argumentos**

* Ninguno.

**Valor devuelto**

Devuelve un mapa de pares clave-valor relacionados con el certificado SSL configurado. [`Map(String, String)`](/es/reference/data-types/map)

**Ejemplos**

**Ejemplo de uso**

```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>

Introducido en: v1.1.0

Pausa la ejecución de una consulta durante el número de segundos especificado.
La función se utiliza principalmente para pruebas y depuración.

Por lo general, la función `sleep()` no debe usarse en entornos de producción, ya que puede afectar negativamente al rendimiento de las consultas y a la capacidad de respuesta del sistema.
Sin embargo, puede resultar útil en los siguientes casos:

1. **Pruebas**: Al probar o ejecutar benchmarks de ClickHouse, es posible que desee simular retrasos o introducir pausas para observar cómo se comporta el sistema en determinadas condiciones.
2. **Depuración**: Si necesita examinar el estado del sistema o la ejecución de una consulta en un momento concreto, puede usar `sleep()` para introducir una pausa, lo que le permitirá inspeccionar o recopilar información relevante.
3. **Simulación**: En algunos casos, es posible que desee simular situaciones reales en las que se producen retrasos o pausas, como la latencia de red o las dependencias de sistemas externos.

<Warning>
  Es importante usar la función `sleep()` con prudencia y solo cuando sea necesario, ya que puede afectar al rendimiento general y a la capacidad de respuesta de su sistema ClickHouse.
</Warning>

Por razones de seguridad, la función solo puede ejecutarse en el perfil de usuario predeterminado (con `allow_sleep` habilitado).

**Sintaxis**

```sql theme={null}
sleep(seconds)
```

**Argumentos**

* `seconds` — El número de segundos durante los que se pausará la ejecución de la consulta, con un máximo de 3 segundos. Puede ser un valor de coma flotante para especificar fracciones de segundo. [`const UInt*`](/es/reference/data-types/int-uint) o [`const Float*`](/es/reference/data-types/float)

**Valor devuelto**

Devuelve `0`. [`UInt8`](/es/reference/data-types/int-uint)

**Ejemplos**

**Ejemplo de uso**

```sql title=Query theme={null}
-- Esta consulta se pausará durante 2 segundos antes de completarse.
-- Durante este tiempo, no se devolverán resultados y la consulta parecerá estar bloqueada o sin respuesta.
SELECT sleep(2);
```

```response title=Response theme={null}
┌─sleep(2)─┐
│        0 │
└──────────┘
1 row in set. Elapsed: 2.012 sec.
```

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

Introducido en: v1.1.0

Pausa la ejecución de una consulta durante un número determinado de segundos por cada fila del conjunto de resultados.

La función `sleepEachRow()` se utiliza principalmente para pruebas y depuración, de forma similar a la función [`sleep()`](#sleep).
Permite simular retrasos o introducir pausas en el procesamiento de cada fila, lo que puede resultar útil en escenarios como los siguientes:

1. **Pruebas**: Al probar o hacer benchmark del rendimiento de ClickHouse en condiciones específicas, puede usar `sleepEachRow()` para simular retrasos o introducir pausas en cada fila procesada.
2. **Depuración**: Si necesita examinar el estado del sistema o la ejecución de una consulta para cada fila procesada, puede usar `sleepEachRow()` para introducir pausas, lo que le permitirá inspeccionar o recopilar información relevante.
3. **Simulación**: En algunos casos, puede que desee simular situaciones del mundo real en las que se producen retrasos o pausas por cada fila procesada, como al trabajar con sistemas externos o con latencias de red.

<Warning>
  Al igual que con la función `sleep()`, es importante usar `sleepEachRow()` con prudencia y solo cuando sea necesario, ya que puede afectar significativamente al rendimiento general y a la capacidad de respuesta de su sistema ClickHouse, especialmente al trabajar con conjuntos de resultados grandes.
</Warning>

**Sintaxis**

```sql theme={null}
sleepEachRow(seconds)
```

**Argumentos**

* `seconds` — Número de segundos durante los que se pausa la ejecución de la consulta para cada fila del conjunto de resultados, con un máximo de 3 segundos. Puede ser un valor de punto flotante para especificar fracciones de segundo. [`const UInt*`](/es/reference/data-types/int-uint) o [`const Float*`](/es/reference/data-types/float)

**Valor devuelto**

Devuelve `0` para cada fila. [`UInt8`](/es/reference/data-types/int-uint)

**Ejemplos**

**Ejemplo de uso**

```sql title=Query theme={null}
-- La salida se retrasará, con una pausa de 0,5 segundos entre cada fila.
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>

Introducido en: v23.8.0

Función que convierte la estructura de una tabla de ClickHouse a un esquema en formato CapnProto

**Sintaxis**

```sql theme={null}
structureToCapnProtoSchema(table_structure, message)
```

**Argumentos**

* Ninguno.

**Valor devuelto**

**Ejemplos**

**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>

Introducido en: v23.8.0

Convierte la estructura de una tabla de ClickHouse en un esquema de formato Protobuf.

Esta función toma la definición de la estructura de una tabla de ClickHouse y la convierte en una definición de esquema de Protocol Buffers (Protobuf) con sintaxis proto3. Esto resulta útil para generar esquemas de Protobuf que coincidan con las estructuras de tus tablas de ClickHouse para el intercambio de datos.

**Sintaxis**

```sql theme={null}
structureToProtobufSchema(structure, message_name)
```

**Argumentos**

* `structure` — Definición de la estructura de la tabla de ClickHouse como una cadena (p. ej., 'column1 Type1, column2 Type2'). [`String`](/es/reference/data-types/string)
* `message_name` — Nombre del tipo de mensaje de Protobuf en el esquema generado. [`String`](/es/reference/data-types/string)

**Valor devuelto**

Devuelve una definición de esquema Protobuf en sintaxis proto3 que corresponde a la estructura de ClickHouse proporcionada. [`String`](/es/reference/data-types/string)

**Ejemplos**

**Conversión de la estructura de ClickHouse a un esquema 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>

Introducido en: v20.12.0

Devuelve el número de puerto TCP en el que escucha el [server nativo](/es/concepts/features/interfaces/tcp).
Si se ejecuta en el contexto de una tabla distribuida, esta función genera una columna normal con valores correspondientes a cada segmento.
De lo contrario, devuelve un valor constante.

**Sintaxis**

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

**Argumentos**

* Ninguno.

**Valor devuelto**

Devuelve el número de puerto TCP. [`UInt16`](/es/reference/data-types/int-uint)

**Ejemplos**

**Ejemplo de uso**

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

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

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

Introducido en: v1.1.0

Lanza una excepción si el argumento `x` es verdadero.
Para usar el argumento `error_code`, el parámetro de configuración `allow_custom_error_code_in_throw` debe estar habilitado.

**Sintaxis**

```sql theme={null}
throwIf(x[, message[, error_code]])
```

**Argumentos**

* `x` — La condición que se debe comprobar. [`Any`](/es/reference/data-types/index)
* `message` — Opcional. Mensaje de error personalizado. [`const String`](/es/reference/data-types/string)
* `error_code` — Opcional. Código de error personalizado. [`const Int8/16/32`](/es/reference/data-types/int-uint)

**Valor devuelto**

Devuelve `0` si la condición es falsa; lanza una excepción si la condición es verdadera. [`UInt8`](/es/reference/data-types/int-uint)

**Ejemplos**

**Ejemplo de uso**

```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>

Introducido en: v1.1.0

Devuelve el nombre interno del tipo de dato del valor dado.
A diferencia de la función [`toTypeName`](#toTypeName), el tipo de dato devuelto puede incluir columnas internas contenedoras como `Const` y `LowCardinality`.

**Sintaxis**

```sql theme={null}
toColumnTypeName(value)
```

**Argumentos**

* `value` — Valor para el que se devuelve el tipo de dato interno. [`Any`](/es/reference/data-types/index)

**Valor devuelto**

Devuelve el tipo de dato interno que se usa para representar el valor. [`String`](/es/reference/data-types/string)

**Ejemplos**

**Ejemplo de uso**

```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>

Introducido en: v1.1.0

Devuelve el nombre del tipo del argumento proporcionado.
Si se pasa `NULL`, la función devuelve el tipo `Nullable(Nothing)`, que corresponde a la representación interna de `NULL` en ClickHouse.

**Sintaxis**

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

**Argumentos**

* `x` — Un valor de tipo arbitrario. [`Any`](/es/reference/data-types/index)

**Valor devuelto**

Devuelve el nombre del tipo de datos del valor de entrada. [`String`](/es/reference/data-types/string)

**Ejemplos**

**Ejemplo de uso**

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

```response title=Response theme={null}
┌─toTypeName(123)─┐
│ UInt8           │
└─────────────────┘
```

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

Introducido en: v26.5.0

Tokeniza una cadena de consulta SQL de ClickHouse y devuelve un array de tokens.
Cada token es una tupla con nombre con la posición inicial (en bytes), la posición final y el tipo de token.

**Sintaxis**

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

**Argumentos**

* `query` — Una cadena con una consulta de ClickHouse SQL. String.

**Valor devuelto**

Un array de tuplas con nombre `(begin UInt64, end UInt64, type Enum8(...))` que representa los tokens de la consulta. [`Array(Tuple(begin UInt64, end UInt64, type Enum8(...)))`](/es/reference/data-types/array)

**Ejemplos**

**simple**

```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>

Introducido en: v22.6.0

Devuelve el ID de una transacción.

<Note>
  Esta función forma parte de un conjunto de funcionalidades experimentales.
  Habilite la compatibilidad experimental con transacciones añadiendo este ajuste a su [configuración](/es/concepts/features/configuration/server-config/configuration-files):

  ```xml theme={null}
  <clickhouse>
      <allow_experimental_transactions>1</allow_experimental_transactions>
  </clickhouse>
  ```

  Para obtener más información, consulte la página [compatibilidad transaccional (ACID)](/es/concepts/features/operations/insert/transactions#transactions-commit-and-rollback).
</Note>

**Sintaxis**

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

**Argumentos**

* Ninguno.

**Valor devuelto**

Devuelve una tupla formada por `start_csn`, `local_tid` y `host_id`.

* `start_csn`: Número secuencial global; la marca temporal de confirmación más reciente observada al iniciarse esta transacción.
* `local_tid`: Número secuencial local, único para cada transacción iniciada por este host dentro de un `start&#95;csn` específico.
* `host_id`: UUID del host que inició esta transacción.
  [`Tuple(UInt64, UInt64, UUID)`](/es/reference/data-types/tuple)

**Ejemplos**

**Ejemplo de uso**

```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>

Introducido en: v22.6.0

Devuelve la instantánea más reciente (Commit Sequence Number) de una [transacción](/es/concepts/features/operations/insert/transactions#transactions-commit-and-rollback) disponible para lectura.

<Note>
  Esta función forma parte de un conjunto de características experimentales. Habilite la compatibilidad experimental con transacciones añadiendo esta configuración a su archivo de configuración:

  ```xml theme={null}
  <clickhouse>
      <allow_experimental_transactions>1</allow_experimental_transactions>
  </clickhouse>
  ```

  Para obtener más información, consulte la página [Compatibilidad transaccional (ACID)](/es/concepts/features/operations/insert/transactions#transactions-commit-and-rollback).
</Note>

**Sintaxis**

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

**Argumentos**

* Ninguno.

**Valor devuelto**

Devuelve la instantánea (CSN) más reciente de una transacción. [`UInt64`](/es/reference/data-types/int-uint)

**Ejemplos**

**Ejemplo de uso**

```sql title=Query theme={null}
BEGIN TRANSACTION;
SELECT transactionLatestSnapshot();
ROLLBACK;
```

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

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

Introducido en: v22.6.0

Devuelve la instantánea más antigua (Commit Sequence Number) visible para alguna [transacción](/es/concepts/features/operations/insert/transactions#transactions-commit-and-rollback) en ejecución.

<Note>
  Esta función forma parte de un conjunto de características experimentales. Habilite la compatibilidad con transacciones experimentales añadiendo esta configuración a su configuración:

  ```xml theme={null}
  <clickhouse>
      <allow_experimental_transactions>1</allow_experimental_transactions>
  </clickhouse>
  ```

  Para obtener más información, consulte la página [Compatibilidad transaccional (ACID)](/es/concepts/features/operations/insert/transactions#transactions-commit-and-rollback).
</Note>

**Sintaxis**

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

**Argumentos**

* Ninguno.

**Valor devuelto**

Devuelve la instantánea (CSN) más antigua de una transacción. [`UInt64`](/es/reference/data-types/int-uint)

**Ejemplos**

**Ejemplo de uso**

```sql title=Query theme={null}
BEGIN TRANSACTION;
SELECT transactionOldestSnapshot();
ROLLBACK;
```

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

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

Introducido en: v1.1.0

Transforma un valor según una asignación definida explícitamente de unos elementos a otros.

Hay dos variantes de esta función:

* `transform(x, array_from, array_to, default)` - transforma `x` mediante arrays de asignación, con un valor predeterminado para los elementos que no coincidan
* `transform(x, array_from, array_to)` - realiza la misma transformación, pero devuelve el `x` original si no se encuentra ninguna coincidencia

La función busca `x` en `array_from` y devuelve el elemento correspondiente de `array_to` en el mismo índice.
Si `x` no se encuentra en `array_from`, devuelve el valor `default` (versión de 4 parámetros) o el `x` original (versión de 3 parámetros).
Si hay varios elementos coincidentes en `array_from`, devuelve el elemento correspondiente a la primera coincidencia.

Requisitos:

* `array_from` y `array_to` deben tener el mismo número de elementos
* Para la versión de 4 parámetros: `transform(T, Array(T), Array(U), U) -> U` donde `T` y `U` pueden ser tipos compatibles distintos
* Para la versión de 3 parámetros: `transform(T, Array(T), Array(T)) -> T` donde todos los tipos deben ser iguales

**Sintaxis**

```sql theme={null}
transform(x, array_from, array_to[, default])
```

**Argumentos**

* `x` — Valor que se va a transformar. [`(U)Int*`](/es/reference/data-types/int-uint) o [`Decimal`](/es/reference/data-types/decimal) o [`Float*`](/es/reference/data-types/float) o [`String`](/es/reference/data-types/string) o [`Date`](/es/reference/data-types/date) o [`DateTime`](/es/reference/data-types/datetime)
* `array_from` — Array constante de valores en el que buscar coincidencias. [`Array((U)Int*)`](/es/reference/data-types/array) o [`Array(Decimal)`](/es/reference/data-types/array) o [`Array(Float*)`](/es/reference/data-types/array) o [`Array(String)`](/es/reference/data-types/array) o [`Array(Date)`](/es/reference/data-types/array) o [`Array(DateTime)`](/es/reference/data-types/array)
* `array_to` — Array constante de valores que se devolverán para las coincidencias correspondientes de `array_from`. [`Array((U)Int*)`](/es/reference/data-types/array) o [`Array(Decimal)`](/es/reference/data-types/array) o [`Array(Float*)`](/es/reference/data-types/array) o [`Array(String)`](/es/reference/data-types/array) o [`Array(Date)`](/es/reference/data-types/array) o [`Array(DateTime)`](/es/reference/data-types/array)
* `default` — Opcional. Valor que se devolverá si `x` no se encuentra en `array_from`. Si se omite, devuelve x sin cambios. [`(U)Int*`](/es/reference/data-types/int-uint) o [`Decimal`](/es/reference/data-types/decimal) o [`Float*`](/es/reference/data-types/float) o [`String`](/es/reference/data-types/string) o [`Date`](/es/reference/data-types/date) o [`DateTime`](/es/reference/data-types/datetime)

**Valor devuelto**

Devuelve el valor correspondiente de `array_to` si x coincide con un elemento de `array_from`; de lo contrario, devuelve default (si se proporciona) o x (si no se proporciona default). [`Any`](/es/reference/data-types/index)

**Ejemplos**

**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>

Introducido en: v22.9.0

Calcula la intersección de dos objetos `uniqThetaSketch` (operación de conjuntos ∩); el resultado es un nuevo `uniqThetaSketch`.

**Sintaxis**

```sql theme={null}
uniqThetaIntersect(uniqThetaSketch,uniqThetaSketch)
```

**Argumentos**

* `uniqThetaSketch` — objeto uniqThetaSketch. [`Tuple`](/es/reference/data-types/tuple) o [`Array`](/es/reference/data-types/array) o [`Date`](/es/reference/data-types/date) o [`DateTime`](/es/reference/data-types/datetime) o [`String`](/es/reference/data-types/string) o [`(U)Int*`](/es/reference/data-types/int-uint) o [`Float*`](/es/reference/data-types/float) o [`Decimal`](/es/reference/data-types/decimal)

**Valor devuelto**

Un nuevo uniqThetaSketch que contiene el resultado de `intersect`. [`UInt64`](/es/reference/data-types/int-uint)

**Ejemplos**

**Ejemplo de uso**

```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>

Introducido en: v22.9.0

Dados dos objetos uniqThetaSketch, realiza el cálculo a\_not\_b (operación de conjuntos ×) y el resultado es un nuevo uniqThetaSketch.

**Sintaxis**

```sql theme={null}
uniqThetaNot(uniqThetaSketch,uniqThetaSketch)
```

**Argumentos**

* `uniqThetaSketch` — objeto uniqThetaSketch. [`Tuple`](/es/reference/data-types/tuple) o [`Array`](/es/reference/data-types/array) o [`Date`](/es/reference/data-types/date) o [`DateTime`](/es/reference/data-types/datetime) o [`String`](/es/reference/data-types/string) o [`(U)Int*`](/es/reference/data-types/int-uint) o [`Float*`](/es/reference/data-types/float) o [`Decimal`](/es/reference/data-types/decimal)

**Valor devuelto**

Devuelve un nuevo uniqThetaSketch que contiene el resultado de a\_not\_b. [`UInt64`](/es/reference/data-types/int-uint)

**Ejemplos**

**Ejemplo de uso**

```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>

Introducido en: v22.9.0

Une dos objetos uniqThetaSketch para realizar el cálculo de unión (operación de conjuntos ∪); el resultado es un nuevo uniqThetaSketch.

**Sintaxis**

```sql theme={null}
uniqThetaUnion(uniqThetaSketch,uniqThetaSketch)
```

**Argumentos**

* `uniqThetaSketch` — objeto uniqThetaSketch. [`Tuple`](/es/reference/data-types/tuple) o [`Array`](/es/reference/data-types/array) o [`Date`](/es/reference/data-types/date) o [`DateTime`](/es/reference/data-types/datetime) o [`String`](/es/reference/data-types/string) o [`(U)Int*`](/es/reference/data-types/int-uint) o [`Float*`](/es/reference/data-types/float) o [`Decimal`](/es/reference/data-types/decimal)

**Valor devuelto**

Devuelve un nuevo uniqThetaSketch con el resultado de la unión. [`UInt64`](/es/reference/data-types/int-uint)

**Ejemplos**

**Ejemplo de uso**

```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>

Introducido en: v1.1.0

Devuelve el tiempo de actividad del servidor en segundos.
Si se ejecuta en el contexto de una tabla distribuida, esta función genera una columna normal con valores correspondientes a cada segmento.
De lo contrario, produce un valor constante.

**Sintaxis**

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

**Argumentos**

* Ninguno.

**Valor devuelto**

Devuelve el tiempo de actividad del servidor en segundos. [`UInt32`](/es/reference/data-types/int-uint)

**Ejemplos**

**Ejemplo de uso**

```sql title=Query theme={null}
SELECT uptime() AS Uptime
```

```response title=Response theme={null}
┌─Uptime─┐
│  55867 │
└────────┘
```

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

Introducido en: v25.2.0

Extrae una columna del tipo especificado de una columna `Variant`.

**Sintaxis**

```sql theme={null}
variantElement(variant, type_name[, default_value])
```

**Argumentos**

* `variant` — columna de tipo Variant. [`Variant`](/es/reference/data-types/variant)
* `type_name` — El nombre del tipo de variante que se va a extraer. [`String`](/es/reference/data-types/string)
* `default_value` — El valor predeterminado que se usará si `variant` no tiene una variante del tipo especificado. Puede ser de cualquier tipo. Opcional. [`Any`](/es/reference/data-types/index)

**Valor devuelto**

Devuelve una columna con el tipo de variante especificado extraído de la columna Variant. [`Any`](/es/reference/data-types/index)

**Ejemplos**

**Ejemplo de uso**

```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>

Introducido en: v24.2.0

Devuelve el nombre del tipo de variante de cada fila de una columna `Variant`. Si una fila contiene NULL, devuelve 'None'.

**Sintaxis**

```sql theme={null}
variantType(variant)
```

**Argumentos**

* `variant` — columna de tipo Variant. [`Variant`](/es/reference/data-types/variant)

**Valor devuelto**

Devuelve una columna Enum con el nombre del tipo de Variant para cada fila. [`Enum`](/es/reference/data-types/enum)

**Ejemplos**

**Ejemplo de uso**

```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>

Introducido en: v1.1.0

Devuelve la versión actual de ClickHouse como una cadena con el formato: `major_version.minor_version.patch_version.number_of_commits_since_the_previous_stable_release`.
Si se ejecuta en el contexto de una tabla distribuida, esta función genera una columna normal con valores correspondientes a cada segmento.
En caso contrario, produce un valor constante.

**Sintaxis**

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

**Argumentos**

* Ninguno.

**Valor devuelto**

Devuelve la versión actual de ClickHouse. [`String`](/es/reference/data-types/string)

**Ejemplos**

**Ejemplo de uso**

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

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

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

Introducido en: v1.1.0

Calcula el ancho aproximado al mostrar valores en la consola en formato de texto (separado por tabulaciones).
El sistema usa esta función para implementar los formatos Pretty.
`NULL` se representa como una cadena correspondiente a `NULL` en los formatos Pretty.

**Sintaxis**

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

**Argumentos**

* `x` — Un valor de cualquier tipo de datos. [`Any`](/es/reference/data-types/index)

**Valor devuelto**

Devuelve el ancho aproximado del valor al mostrarse en formato de texto. [`UInt64`](/es/reference/data-types/int-uint)

**Ejemplos**

**Calcular el ancho visible de NULL**

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

```response title=Response theme={null}
┌─visibleWidth(NULL)─┐
│                  4 │
└────────────────────┘
```

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

Introducido en: v21.11.0

Devuelve el tiempo de actividad de la sesión actual de ZooKeeper en segundos.

**Sintaxis**

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

**Argumentos**

* Ninguno.

**Valor devuelto**

Devuelve el tiempo de actividad de la sesión actual de ZooKeeper en segundos. [`UInt32`](/es/reference/data-types/int-uint)

**Ejemplos**

**Ejemplo de uso**

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

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