Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

Otras funciones

FQDN

Introducido en: v20.1.0

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

Sintaxis

FQDN()

Alias: fullHostName

Argumentos

  • Ninguno.

Valor devuelto

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

Ejemplos

Ejemplo de uso

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

MACNumToString

Introducido en: v1.1.0

Interpreta un número UInt64 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

MACNumToString(num)

Argumentos

  • num — Número de tipo UInt64. UInt64

Valor devuelto

Devuelve una dirección MAC en formato AA:BB:CC:DD:EE:FF. String

Ejemplos

Ejemplo de uso

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

MACStringToNum

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

MACStringToNum(s)

Argumentos

  • s — Cadena con la dirección MAC. String

Valor devuelto

Devuelve un número UInt64. UInt64

Ejemplos

Ejemplo de uso

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

MACStringToOUI

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

MACStringToOUI(s)

Argumentos

  • s — Cadena con la dirección MAC. String

Valor devuelto

Los tres primeros octetos como número UInt64. UInt64

Ejemplos

Ejemplo de uso

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

authenticatedUser

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

authenticatedUser()

Alias: authUser

Argumentos

  • Ninguno.

Valor devuelto

El nombre del usuario autenticado. String

Ejemplos

Ejemplo de uso

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

bar

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

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

Argumentos

Valor devuelto

Devuelve una cadena que representa una barra de arte Unicode. String

Ejemplos

Ejemplo de uso

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

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

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

blockNumber

Introducido en: v1.1.0

Devuelve un número de secuencia del bloque 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

blockNumber()

Argumentos

  • Ninguno.

Valor devuelto

Número de secuencia del bloque de datos en el que se encuentra la fila. UInt64

Ejemplos

Uso básico

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

blockSerializedSize

Introducido en: v20.3.0

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

Sintaxis

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

Argumentos

  • x1[, x2, ...] — Cualquier cantidad de valores para los que se obtiene el tamaño sin comprimir del bloque. Any

Valor devuelto

Devuelve la cantidad de bytes que se escribirán en disco para un bloque de valores sin compresión. UInt64

Ejemplos

Ejemplo de uso

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

blockSize

Introducido en: v1.1.0

En ClickHouse, las consultas se procesan en bloques (fragmentos). Esta función devuelve el tamaño (número de filas) del bloque sobre el que se invoca.

Sintaxis

blockSize()

Argumentos

  • Ninguno.

Valor devuelto

Devuelve el número de filas del bloque actual. UInt64

Ejemplos

Ejemplo de uso

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

buildId

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

buildId()

Argumentos

  • Ninguno.

Valor devuelto

Devuelve el ID de compilación. String

Ejemplos

Ejemplo de uso

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

byteSize

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

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

Argumentos

  • arg1[, arg2, ...] — Valores de cualquier tipo de dato cuyo tamaño en bytes sin comprimir se desea estimar. Any

Valor devuelto

Devuelve una estimación del tamaño en bytes de los argumentos en memoria. UInt64

Ejemplos

Ejemplo de uso

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

Varios argumentos

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

catboostEvaluate

Introducido en: v22.9.0

Evalúa un modelo externo de catboost. CatBoost 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 para ver cómo compilarla.

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

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

<library_bridge>
    <port>9019</port>
</library_bridge>
  1. Entrene un modelo catboost con libcatboost

Consulte Training and applying models para saber cómo entrenar modelos catboost a partir de un conjunto de datos de entrenamiento.

El archivo del modelo debe estar ubicado dentro del directorio user_files, como ocurre con la función file.

Sintaxis

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

Argumentos

  • path_to_model — Ruta al modelo de CatBoost, ubicado dentro del directorio user_files. const String
  • feature — Una o más características/argumentos del modelo. Float*

Valor devuelto

Devuelve el resultado de la evaluación del modelo. Float64

Ejemplos

catboostEvaluate

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

colorOKLABToSRGB

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 .

Sintaxis

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)
  • 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

Valor devuelto

Devuelve una tupla (R, G, B) que representa valores de color sRGB. Tuple(Float64, Float64, Float64)

Ejemplos

Convertir OKLAB a sRGB (Float)

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

Convertir OKLAB a sRGB (UInt8)

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

colorOKLCHToSRGB

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.

La conversión es la inversa de 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 consultar referencias de colores en el espacio OKLCH y cómo se corresponden con los colores sRGB, consulta https://oklch.com/.

Sintaxis

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)
  • 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

Valor devuelto

Devuelve una tupla (R, G, B) que representa los valores de color sRGB. Tuple(Float64, Float64, Float64)

Ejemplos

Convertir OKLCH a sRGB

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

Convertir de OKLCH a sRGB (UInt8)

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

colorSRGBToOKLAB

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.

La conversión consta de dos etapas:

  1. sRGB a sRGB lineal
  2. sRGB lineal a OKLab

Sintaxis

colorSRGBToOKLAB(tuple[, gamma])

Argumentos

  • tuple — Tupla de tres valores R, G y B en el rango [0...255]. Tuple(UInt8, UInt8, UInt8)
  • 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

Valor devuelto

Devuelve una tupla (L, a, b) que representa los valores del espacio de color OKLAB. Tuple(Float64, Float64, Float64)

Ejemplos

Convertir sRGB a OKLAB

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

colorSRGBToOKLCH

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.

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

Sintaxis

colorSRGBToOKLCH(tuple[, gamma])

Argumentos

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

Valor devuelto

Devuelve una tupla (L, C, H) que representa los valores del espacio de color OKLCH. Tuple(Float64, Float64, Float64)

Ejemplos

Convertir sRGB a OKLCH

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

connectionId

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

connectionId()

Argumentos

  • Ninguno.

Valor devuelto

Devuelve el ID de la conexión del cliente actual. UInt64

Ejemplos

Ejemplo de uso

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

countDigits

Introducido en: v20.8.0

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

Sintaxis

countDigits(x)

Argumentos

Valor devuelto

Devuelve el número de dígitos necesarios para representar x. UInt8

Ejemplos

Ejemplo de uso

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

currentDatabase

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.

Sintaxis

currentDatabase()

Alias: current_database, DATABASE, SCHEMA

Argumentos

  • Ninguno.

Valor devuelto

Devuelve el nombre de la base de datos actual. String

Ejemplos

Ejemplo de uso

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

Sintaxis SQL estándar sin paréntesis

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

currentHandler

Introducida en: v26.6.0

Devuelve el nombre del handler HTTP definido en SQL (creado con CREATE HANDLER) que invocó la consulta. Devuelve una cadena vacía si la consulta no se invocó mediante dicho handler.

Resulta útil para personalizar el comportamiento de la consulta según el handler invocado.

Sintaxis

currentHandler()

Argumentos

  • Ninguno.

Valor devuelto

Devuelve el nombre del handler actual. String

Ejemplos

Ejemplo de uso

SELECT currentHandler()

currentProfiles

Introducido en: v21.9.0

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

Sintaxis

currentProfiles()

Argumentos

  • Ninguno.

Valor devuelto

Devuelve un array de perfiles de configuración del usuario actual. Array(String)

Ejemplos

Ejemplo de uso

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

currentQueryID

Introducido en: v25.2.0

Devuelve el id de consulta actual.

Sintaxis

currentQueryID()

Alias: current_query_id

Argumentos

  • Ninguno.

Valor devuelto

Ejemplos

Ejemplo

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

currentRequestURL

Introducido en: v26.6.0

Devuelve la URL de la solicitud HTTP (la ruta y la cadena de consulta) que invocó la consulta. Devuelve una cadena vacía si la consulta no se invocó mediante HTTP.

Resulta útil, en combinación con handlers HTTP definidos en SQL (CREATE HANDLER), para extraer parámetros incluidos en la ruta de la solicitud.

Sintaxis

currentRequestURL()

Argumentos

  • Ninguno.

Valor devuelto

Devuelve la URL de la solicitud HTTP actual. String

Ejemplos

Ejemplo de uso

SELECT currentRequestURL()

currentRoles

Introducido en: v21.9.0

Devuelve un array con los roles asignados al usuario actual.

Sintaxis

currentRoles()

Argumentos

  • Ninguno.

Valor devuelto

Devuelve un array con los roles asignados al usuario actual. Array(String)

Ejemplos

Ejemplo de uso

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

currentSchemas

Introducido en: v23.7.0

Igual que la función 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.

Sintaxis

currentSchemas(bool)

Alias: current_schemas

Argumentos

  • bool — Un valor booleano que se ignora. Bool

Valor devuelto

Devuelve un array de un solo elemento con el nombre de la base de datos actual. Array(String)

Ejemplos

Ejemplo de uso

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

currentUser

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

currentUser()

Alias: session_user, current_user, user

Argumentos

  • Ninguno.

Valor devuelto

Devuelve el nombre del usuario actual o, en caso contrario, el inicio de sesión del usuario que inició la consulta. String

Ejemplos

Ejemplo de uso

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

Sintaxis estándar de SQL sin paréntesis

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

defaultProfiles

Introducido en: v21.9.0

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

Sintaxis

defaultProfiles()

Argumentos

  • Ninguno.

Valor devuelto

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

Ejemplos

Ejemplo de uso

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

defaultRoles

Introducido en: v21.9.0

Devuelve un array de roles predeterminados para el usuario actual.

Sintaxis

defaultRoles()

Argumentos

  • Ninguno.

Valor devuelto

Devuelve un array de roles predeterminados del usuario actual. Array(String)

Ejemplos

Ejemplo de uso

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

defaultValueOfArgumentType

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

defaultValueOfArgumentType(expression)

Argumentos

  • expression — Un valor de tipo arbitrario o una expresión cuyo resultado es un valor de tipo arbitrario. Any

Valor devuelto

Devuelve 0 para números, una cadena vacía para cadenas o NULL para tipos Nullable. UInt8 o String o NULL

Ejemplos

Ejemplo de uso

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

Ejemplo de Nullable

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

defaultValueOfTypeName

Introducido en: v1.1.0

Devuelve el valor predeterminado del nombre de tipo especificado.

Sintaxis

defaultValueOfTypeName(type)

Argumentos

  • type — Una cadena que representa un nombre de tipo. 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 o String o NULL

Ejemplos

Ejemplo de uso

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

Ejemplo de Nullable

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

digits

Introducido en: v26.7.0

Devuelve los dígitos de un número n a partir del offset especificado. El recuento comienza en 1 con la siguiente lógica:

  • Si offset es 0, se genera una excepción, ya que offset está basado en 1.
  • Si offset es negativo, el recuento comienza offset dígitos desde el final del número, en lugar de desde el principio.
  • Si offset es mayor que el número de dígitos de n, se devuelve 0.

Un argumento opcional length sigue la siguiente lógica:

  • Si length es positivo, indica la cantidad de dígitos que se toman desde offset
  • Si length es negativo, indica la cantidad de dígitos que se excluyen desde la derecha del número

Véase también la función substring, que realiza la operación análoga sobre cadenas.

Sintaxis

digits(n, offset[, length])

Argumentos

Valor devuelto

Los dígitos seleccionados de n, interpretados como un UInt64. Devuelve 0 si el rango seleccionado está vacío. Los ceros a la izquierda no se conservan. UInt64

Ejemplos

Desplazamiento positivo

SELECT digits(1234567890, 7)
7890

Desplazamiento y longitud positivos

SELECT digits(1234567890, 7, 2)
78

Un desplazamiento negativo cuenta desde la derecha

SELECT digits(1234567890, -3)
890

La longitud negativa excluye los dígitos desde la derecha

SELECT digits(1234567890, 3, -2)
345678

Si el desplazamiento supera el final, devuelve 0

SELECT digits(1234567890, 11)
0

displayName

Introducido en: v22.11.0

Devuelve el valor de display_name de configuración o el nombre de dominio completo (FQDN) del servidor si no está configurado.

Sintaxis

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

Ejemplos

Ejemplo de uso

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

dumpColumnStructure

Introducido en: v1.1.0

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

Sintaxis

dumpColumnStructure(x)

Argumentos

  • x — Valor cuya descripción se quiere obtener. Any

Valor devuelto

Devuelve una descripción de la estructura de la columna utilizada para representar el valor. String

Ejemplos

Ejemplo de uso

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

enabledProfiles

Introducido en: v21.9.0

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

Sintaxis

enabledProfiles()

Argumentos

  • Ninguno.

Valor devuelto

Devuelve un array con los nombres de los perfiles de configuración habilitados para el usuario actual. Array(String)

Ejemplos

Ejemplo de uso

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

enabledRoles

Introducido en: v21.9.0

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

Sintaxis

enabledRoles()

Argumentos

  • Ninguno.

Valor devuelto

Devuelve un array con los nombres de los roles habilitados para el usuario actual. Array(String)

Ejemplos

Ejemplo de uso

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

errorCodeToName

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

Sintaxis

errorCodeToName(error_code)

Argumentos

Valor devuelto

Devuelve el nombre en texto de error_code. String

Ejemplos

Ejemplo de uso

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

file

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.

Sintaxis

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
  • default — El valor que se devuelve si el archivo no existe o no se puede acceder a él. String o NULL

Valor devuelto

Devuelve el contenido del archivo como una cadena. String

Ejemplos

Insertar archivos en una tabla

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

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

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

filesystemAvailable

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) porque parte del espacio está reservado para el sistema operativo.

Sintaxis

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 o FixedString

Valor devuelto

Devuelve la cantidad de espacio libre restante en bytes. UInt64

Ejemplos

Ejemplo de uso

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

filesystemCapacity

Introducido en: v20.1.0

Devuelve la capacidad del sistema de archivos en bytes. Requiere que se configure la path del directorio de datos.

Sintaxis

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 o FixedString

Valor devuelto

Devuelve la capacidad del sistema de archivos en bytes. UInt64

Ejemplos

Ejemplo de uso

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

filesystemUnreserved

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.

Sintaxis

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 o FixedString

Valor devuelto

Devuelve la cantidad de espacio libre en bytes. UInt64

Ejemplos

Ejemplo de uso

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

finalizeAggregation

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

Sintaxis

finalizeAggregation(state)

Argumentos

Valor devuelto

Devuelve el resultado final de la agregación. Any

Ejemplos

Ejemplo de uso

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

En combinación con initializeAggregation

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

flipCoordinates

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 (MultiPoint, 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, MultiPoint, Ring, Polygon, MultiPolygon, LineString, MultiLineString) como el tipo variante Geometry.

Sintaxis

flipCoordinates(geometry)

Argumentos

  • geometry — La geometría que se va a transformar. Tipos admitidos: Point (Tuple(Float64, Float64)), MultiPoint (Array(Point)), 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 o MultiPoint o Ring o Polygon o MultiPolygon o LineString o MultiLineString o Geometry

Ejemplos

basic_point

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

Ring

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

Polygon

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

geometry_wkt

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

geometry_polygon_wkt

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

formatQuery

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

formatQuery(query)

Argumentos

  • query — La consulta SQL que se va a formatear. String

Valor devuelto

La consulta formateada String

Ejemplos

multiline

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

formatQueryFromJSON

Introducido en: v26.8.0

Toma una representación JSON de un AST de SQL (generada por parseQueryToJSON) y la convierte de nuevo en una cadena de consulta SQL.

Con un argumento, genera SQL con formato canónico. Con dos argumentos (json, original_query), conserva, en la medida de lo posible, los comentarios, los espacios en blanco y la sangría de la consulta original.

El AST deserializado está limitado por la configuración max_ast_depth y max_ast_elements de la sesión actual. Junto con parseQueryToJSON, esta función permite inspeccionar y transformar consultas mediante programación a través de su representación de AST en JSON.

Sintaxis

formatQueryFromJSON(json[, original_query])

Argumentos

  • json — Una cadena JSON que representa un AST de SQL. String
  • original_query — Opcional. La consulta SQL original cuyo formato se conservará. String

Valor devuelto

Una cadena de consulta SQL. String

Ejemplos

Ida y vuelta

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

Conservar el formato

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

formatQueryOrNull

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

formatQueryOrNull(query)

Argumentos

  • query — La consulta SQL que se va a formatear. String

Valor devuelto

La consulta formateada String

Ejemplos

multilínea

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

formatQuerySingleLine

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

formatQuerySingleLine(query)

Argumentos

  • query — La consulta SQL que se va a formatear. String

Valor devuelto

La consulta formateada String

Ejemplos

multiline

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

formatQuerySingleLineOrNull

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

formatQuerySingleLineOrNull(query)

Argumentos

  • query — La consulta SQL que se va a dar formato. String

Valor devuelto

La consulta formateada String

Ejemplos

multilínea

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

formatReadableDecimalSize

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.

Sintaxis

formatReadableDecimalSize(value[, precision])

Argumentos

Valor devuelto

Devuelve un tamaño redondeado y legible con sufijo, como una cadena. String

Ejemplos

Formatear tamaños de archivo

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

Con precisión explícita

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

formatReadableQuantity

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

formatReadableQuantity(value[, precision])

Argumentos

Valor devuelto

Devuelve un número redondeado con sufijo, en forma de cadena. String

Ejemplos

Dar formato a números con sufijos

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

Con precisión especificada

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

formatReadableSize

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, parseReadableSizeOrZero y 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

formatReadableSize(value[, precision])

Alias: FORMAT_BYTES

Argumentos

Valor devuelto

Devuelve un tamaño legible y redondeado con sufijo en forma de cadena. String

Ejemplos

Formatear tamaños de archivo

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

Con precisión explícita

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

formatReadableTimeDelta

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

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 o Interval
  • 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
  • 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

Valor devuelto

Devuelve una diferencia de tiempo en forma de cadena. String

Ejemplos

Ejemplo de uso

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

Con la unidad máxima

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

Con una expresión INTERVAL

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

fuzzQuery

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

fuzzQuery(query)

Argumentos

  • query — La consulta SQL a la que se aplicará fuzzing. String

Valor devuelto

La cadena de consulta resultante del fuzzing String

Ejemplos

básico

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

generateRandomStructure

Introducido en: v23.5.0

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

Sintaxis

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
  • seed — Semilla aleatoria para producir resultados estables. Si no se especifica o se establece en Null, se genera aleatoriamente. UInt64

Valor devuelto

Estructura de tabla generada aleatoriamente. String

Ejemplos

Ejemplo de uso

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

con el número de columnas especificado

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

con la semilla especificada

SELECT generateRandomStructure(NULL, 33)
c1 DateTime, c2 Enum8(\'c2V0\' = -123, \'c2V1\' = 94, \'c2V2\' = -105, \'c2V3\' = 67), c3 Nullable(UInt8), c4 String, c5 Nested(e1 IPv4, e2 UInt8, e3 UInt16, e4 UInt16, e5 Int32, e6 Map(Date, Decimal256(71))), c6 UInt32, c7 Bool, c8 Float64

generateSerialID

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 en la configuración del servidor.

Sintaxis

generateSerialID(series_identifier[, start_value])

Argumentos

  • series_identifier — Identificador de la serie const 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*

Valor devuelto

Devuelve números consecutivos a partir del valor anterior del contador. UInt64

Ejemplos

primera llamada

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

segunda llamada

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

llamada a columna

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

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

con valor inicial

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

con valor inicial en la segunda llamada

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

getClientHTTPHeader

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, Authorization, Authentication y X-ClickHouse-*) están restringidas.

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

getClientHTTPHeader lee las cabeceras de la solicitud actual, por lo que solo devuelve un valor no vacío cuando la consulta se envía a través de la interfaz HTTP. Por ejemplo, envíe la cabecera con la solicitud y léala de nuevo a través de HTTP:

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

El comando anterior devuelve application/x-www-form-urlencoded.

Sintaxis

getClientHTTPHeader(name)

Argumentos

  • name — El nombre de la cabecera HTTP. String

Valor devuelto

Devuelve el valor de la cabecera. String

Ejemplos

Ejemplo de uso

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

getMacro

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

getMacro(name)

Argumentos

  • name — El nombre de la macro que se va a obtener. const String

Valor devuelto

Devuelve el valor de la macro especificada. String

Ejemplos

Uso básico

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

getMaxTableNameLengthForDatabase

Introducido en: v25.1.0

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

Sintaxis

getMaxTableNameLengthForDatabase(database_name)

Argumentos

  • database_name — El nombre de la base de datos especificada. String

Valor devuelto

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

Ejemplos

típico

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

getMergeTreeSetting

Introducido en: v25.6.0

Devuelve el valor actual de un SETTING de MergeTree.

Sintaxis

getMergeTreeSetting(setting_name)

Argumentos

  • setting_name — El nombre del SETTING. String

Valor devuelto

Devuelve el valor actual del SETTING de MergeTree.

Ejemplos

Ejemplo de uso

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

getOSKernelVersion

Introducido en: v21.11.0

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

Sintaxis

getOSKernelVersion()

Argumentos

  • Ninguno.

Valor devuelto

Devuelve la versión actual del kernel del sistema operativo. String

Ejemplos

Ejemplo de uso

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

getServerPort

Introducido en: v21.10.0

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

Sintaxis

getServerPort(port_name)

Argumentos

  • port_name — Nombre del puerto. String

Valor devuelto

Devuelve el número de puerto del servidor. UInt16

Ejemplos

Ejemplo de uso

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

getServerSetting

Introducido en: v25.6.0

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

Sintaxis

getServerSetting(setting_name')

Argumentos

  • setting_name — El nombre del SETTING del servidor. String

Valor devuelto

Devuelve el valor actual del SETTING del servidor. Any

Ejemplos

Ejemplo de uso

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

getSetting

Introducido en: v20.7.0

Devuelve el valor actual de un SETTING.

Sintaxis

getSetting(setting_name)

Argumentos

Valor devuelto

Devuelve el valor actual del SETTING. Any

Ejemplos

Ejemplo de uso

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

getSettingOrDefault

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

getSettingOrDefault(setting_name, default_value)

Argumentos

  • setting_name — El nombre del SETTING. 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

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

getSizeOfEnumType

Introducido en: v1.1.0

Devuelve el número de campos del Enum proporcionado.

Sintaxis

getSizeOfEnumType(x)

Argumentos

  • x — Valor de tipo Enum. Enum

Valor devuelto

Devuelve el número de campos con valores de entrada de tipo Enum. UInt8/16

Ejemplos

Ejemplo de uso

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

getSubcolumn

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

getSubcolumn(nested_value, subcolumn_name)

Argumentos

  • Ninguno.

Valor devuelto

Ejemplos

getSubcolumn

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

getTypeSerializationStreams

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

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

Valor devuelto

Devuelve un array con todas las rutas de los subflujos de serialización. Array(String)

Ejemplos

tupla

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

map

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

globalVariable

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

globalVariable(name)

Argumentos

  • name — Nombre de la variable global. String

Valor devuelto

Devuelve el valor de la variable name. Any

Ejemplos

globalVariable

SELECT globalVariable('max_allowed_packet')
67108864

hasColumnInTable

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

hasColumnInTable(database, table, column)

Argumentos

Valor devuelto

Devuelve 1 si la columna indicada existe; en caso contrario, 0. UInt8

Ejemplos

Comprobar si existe una columna

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

Comprobar una columna que no existe

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

hasThreadFuzzer

Introducido en: v20.6.0

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

Sintaxis

hasThreadFuzzer()

Argumentos

  • Ninguno.

Valor devuelto

Indica si Thread Fuzzer está activo. UInt8

Ejemplos

Comprobar el estado de Thread Fuzzer

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

highlightQuery

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

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(...)))

Ejemplos

simple

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

hostName

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

hostName()

Alias: hostname

Argumentos

  • Ninguno.

Valor devuelto

Devuelve el nombre del host. String

Ejemplos

Ejemplo de uso

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

icebergBucket

Introducido en: v25.5.0

Implementa la lógica de la transformación bucket de Iceberg

Sintaxis

icebergBucket(N, value)

Argumentos

Valor devuelto

Devuelve un hash de 32 bits del valor de entrada. Int32

Ejemplos

Ejemplo

SELECT icebergBucket(5, 1.0 :: Float32)
4

icebergTruncate

Introducido en: v25.3.0

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

Sintaxis

icebergTruncate(N, value)

Argumentos

Valor devuelto

El mismo tipo que el del argumento

Ejemplos

Ejemplo

SELECT icebergTruncate(3, 'iceberg')
ice

identity

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

identity(x)

Argumentos

  • x — Valor de entrada. Any

Valor devuelto

Devuelve el valor de entrada sin modificar. Any

Ejemplos

Ejemplo de uso

SELECT identity(42)
42

ignore

Introducido en: v1.1.0

Acepta cualquier argumento y siempre devuelve 0.

Sintaxis

ignore(x)

Argumentos

  • x — Un valor de entrada que no se utiliza y se pasa únicamente para evitar un error de sintaxis. Any

Valor devuelto

Siempre devuelve 0. UInt8

Ejemplos

Ejemplo de uso

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

indexHint

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.

Explicación

Cuando ejecuta:

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:

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?

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

indexHint(expression)

Argumentos

  • expression — Cualquier expresión para la selección del rango del índice. Expression

Valor devuelto

Devuelve 1 en todos los casos. UInt8

Ejemplos

Ejemplo de uso con filtro por fecha

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

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

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

initialQueryID

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.

A diferencia de la función queryID, initialQueryID devuelve los mismos resultados en diferentes segmentos.

Sintaxis

initialQueryID()

Alias: initial_query_id

Argumentos

  • Ninguno.

Valor devuelto

Devuelve el ID de la consulta inicial de la consulta actual. String

Ejemplos

Ejemplo de uso

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

initialQueryStartTime

Introducido en: v25.4.0

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

Sintaxis

initialQueryStartTime()

Alias: initial_query_start_time

Argumentos

  • Ninguno.

Valor devuelto

Devuelve la hora de inicio de la consulta inicial de la consulta actual. DateTime

Ejemplos

Ejemplo de uso

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

initializeAggregation

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. Puede crear estados de funciones de agregación e insertarlos en columnas de tipo AggregateFunction, o usar agregados inicializados como valores por defecto.

Sintaxis

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

Argumentos

  • aggregate_function — Nombre de la función de agregación que se va a inicializar. String
  • arg1[, arg2, ...] — Argumentos de la función de agregación. Any

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

Ejemplos

Uso básico con uniqState

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

Uso de sumState y finalizeAggregation

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

isConstant

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 son expresiones constantes. Esta función está pensada principalmente para desarrollo, depuración y demostración.

Sintaxis

isConstant(x)

Argumentos

  • x — Una expresión que se debe comprobar. Any

Valor devuelto

Devuelve 1 si x es constante y 0 si x no es constante. UInt8

Ejemplos

Expresión constante

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

Constante con una función

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

Expresión no constante

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

Comportamiento de la función now()

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

isDecimalOverflow

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

isDecimalOverflow(value[, precision])

Argumentos

  • value — Valor Decimal que se va a comprobar. Decimal
  • precision — Opcional. La precisión del tipo Decimal. Si se omite, se usa la precisión inicial del primer argumento. UInt8

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

Ejemplos

Ejemplo de uso

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

joinGet

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.

Sintaxis

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
  • value_column — El nombre de la columna de la tabla que contiene los datos necesarios. const String
  • join_keys — Una lista de claves de join. Any

Valor devuelto

Devuelve una lista de valores correspondientes a la lista de claves. Any

Ejemplos

Ejemplo de uso

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

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

Uso con una tabla de la base de datos actual

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

Uso de arrays como claves de JOIN

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

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

joinGetOrNull

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, devuelve NULL cuando la clave no existe.

Sintaxis

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
  • value_column — El nombre de la columna de la tabla que contiene los datos necesarios. const String
  • join_keys — Una lista de claves de join. Any

Valor devuelto

Devuelve una lista de valores correspondientes a la lista de claves, o NULL si no se encuentra una clave. Any

Ejemplos

Ejemplo de uso

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

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

lowCardinalityIndices

Introducido en: v18.12.0

Devuelve la posición de un valor en el diccionario de una columna 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

lowCardinalityIndices(col)

Argumentos

Valor devuelto

La posición del valor en el diccionario de la parte actual. UInt64

Ejemplos

Ejemplos de uso

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

-- create two parts:

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

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

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

lowCardinalityKeys

Introducido en: v18.12.0

Devuelve los valores del diccionario de una columna 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

lowCardinalityKeys(col)

Argumentos

Valor devuelto

Devuelve las claves del diccionario. UInt64

Ejemplos

lowCardinalityKeys

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

-- create two parts:

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

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

materialize

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

materialize(x)

Argumentos

  • x — Una constante. Any

Valor devuelto

Devuelve una columna completa con el valor constante. Any

Ejemplos

Ejemplo de uso

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

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

Convertir una constante en una columna completa

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

minSampleSizeContinuous

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

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

Alias: minSampleSizeContinous

Argumentos

  • baseline — Valor de referencia de una métrica. (U)Int* o Float*
  • sigma — Desviación estándar de referencia de una métrica. (U)Int* o 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* o Float*
  • power — Potencia estadística requerida de una prueba (1 - probabilidad de error de tipo II). (U)Int* o Float*
  • alpha — Nivel de significación requerido de una prueba (probabilidad de error de tipo I). (U)Int* o 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)

Ejemplos

minSampleSizeContinuous

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

minSampleSizeConversion

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

minSampleSizeConversion(baseline, mde, power, alpha)

Argumentos

  • baseline — Tasa de conversión de referencia. 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*
  • power — Potencia estadística requerida de una prueba (1 - probabilidad de error de tipo II). Float*
  • alpha — Nivel de significación requerido de una prueba (probabilidad de error de tipo I). 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)

Ejemplos

minSampleSizeConversion

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

neighbor

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

neighbor(column, offset[, default_value])

Argumentos

  • column — La columna de origen. Any
  • offset — El desplazamiento con respecto a la fila actual. Los valores positivos avanzan y los valores negativos retroceden. Integer
  • 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

Valor devuelto

Devuelve un valor en el desplazamiento especificado o el valor predeterminado si queda fuera de los límites. Any

Ejemplos

Ejemplo de uso

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

Con valor predeterminado

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

normalizeQuery

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

normalizeQuery(x)

Argumentos

  • x — Secuencia de caracteres. String

Valor devuelto

Devuelve la secuencia de caracteres proporcionada con marcadores de posición. String

Ejemplos

Ejemplo de uso

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

normalizeQueryKeepNames

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

normalizeQueryKeepNames(x)

Argumentos

  • x — Secuencia de caracteres. String

Valor devuelto

Devuelve la secuencia de caracteres proporcionada con marcadores de posición. String

Ejemplos

Ejemplo de uso

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

normalizedQueryHash

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

normalizedQueryHash(x)

Argumentos

  • x — Secuencia de caracteres. String

Valor devuelto

Devuelve un valor hash de 64 bits. UInt64

Ejemplos

Ejemplo de uso

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

normalizedQueryHashKeepNames

Introducido en la versión v21.2.0

Al igual que 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

normalizedQueryHashKeepNames(x)

Argumentos

  • x — Secuencia de caracteres. String

Valor devuelto

Devuelve un valor hash de 64 bits. UInt64

Ejemplos

Ejemplo de uso

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

obfuscateQuery

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

obfuscateQuery(query[, tag])

Argumentos

  • query — La consulta SQL que se va a ofuscar. 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

Ejemplos

Uso básico

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

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

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

Filas distintas producen resultados diferentes

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

obfuscateQueryWithSeed

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

obfuscateQueryWithSeed(query, seed)

Argumentos

  • query — La consulta SQL que se va a ofuscar. String
  • seed — La semilla de la ofuscación. La misma semilla produce resultados deterministas. Integer o String

Valor devuelto

La consulta ofuscada, generada de forma determinista a partir de la semilla proporcionada. String

Ejemplos

Ofuscación determinista con una semilla entera

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

Ofuscación determinista con una semilla de texto

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

La misma semilla da el mismo resultado

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

parseQueryToJSON

Introducido en: v26.8.0

Analiza una cadena de consulta SQL y la convierte en su AST (árbol de sintaxis abstracta); devuelve una representación JSON de dicho árbol. El JSON resultante se puede pasar a formatQueryFromJSON para reconstruir la consulta SQL o enviar directamente al servidor mediante el valor clickhouse_json de la configuración dialect (controlado por enable_json_ast_dialect).

Resulta útil para herramientas que quieran inspeccionar o transformar consultas mediante programación sin tener que pasar por la gramática SQL.

No todas las consultas SQL tienen una representación JSON fiel. Las consultas que contienen datos que el formato JSON no puede reproducir (por ejemplo, datos insertados en línea mediante INSERT ... VALUES / INSERT ... FORMAT) y los tipos de nodos AST que aún no implementan la serialización JSON se rechazan con BAD_ARGUMENTS, en lugar de generar JSON que formatQueryFromJSON no podría volver a leer.

Los límites de análisis (max_query_size, max_parser_depth, max_parser_backtracks) se toman de la configuración de la sesión actual.

Sintaxis

parseQueryToJSON(sql)

Argumentos

  • sql — Cadena de consulta SQL que se va a analizar. String

Valor devuelto

Cadena JSON que representa el AST. String

Ejemplos

SELECT simple

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

parseReadableSize

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 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 y formatReadableDecimalSize.

Sintaxis

parseReadableSize(x)

Argumentos

  • x — Tamaño legible con una unidad de bytes ISO/IEC 80000-13 o decimal. String

Valor devuelto

Devuelve el número de bytes, redondeado hacia arriba al entero más cercano. UInt64

Ejemplos

Ejemplo de uso

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

parseReadableSizeOrNull

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 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 y formatReadableDecimalSize.

Sintaxis

parseReadableSizeOrNull(x)

Argumentos

  • x — Tamaño en formato legible con una unidad de bytes ISO/IEC 80000-13 o decimal. 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)

Ejemplos

Ejemplo de uso

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

parseReadableSizeOrZero

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 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 y formatReadableDecimalSize.

Sintaxis

parseReadableSizeOrZero(x)

Argumentos

  • x — Tamaño legible con una unidad de bytes según ISO/IEC 80000-13 o decimal. 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

Ejemplos

Ejemplo de uso

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

parseTimeDelta

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

parseTimeDelta(timestr)

Argumentos

  • timestr — Una secuencia de números seguida de algo parecido a una unidad de tiempo. String

Valor devuelto

El número de segundos. Float64

Ejemplos

Ejemplo de uso

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

Unidades de tiempo complejas

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

partitionId

Introducido en: v21.4.0

Calcula el ID de la partición.

Sintaxis

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

Ejemplos

Ejemplo de uso

DROP TABLE IF EXISTS tab;

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

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

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

pgGetUserById

Introducida en: v26.8.0

Función de compatibilidad con el protocolo wire de PostgreSQL, equivalente a pg_catalog.pg_get_userbyid. Los clientes de PostgreSQL (por ejemplo, el comando \d de psql) la utilizan para mostrar el propietario de una tabla. ClickHouse no realiza un seguimiento de la propiedad de las tablas, por lo que la función ignora el argumento y devuelve el nombre del usuario actual.

Sintaxis

pgGetUserById(oid)

Alias: pg_get_userbyid

Argumentos

  • oid — Identificador de objeto del rol. El valor se ignora. UInt32

Valor devuelto

Devuelve el nombre del usuario actual. String

Ejemplos

Ejemplo de uso

SELECT pg_get_userbyid(10)
┌─pg_get_userbyid(10)─┐
│ default             │
└─────────────────────┘

pgTableIsVisible

Introducida en: v26.8.0

Función de compatibilidad para el protocolo wire de PostgreSQL, análoga a pg_catalog.pg_table_is_visible. Los clientes de PostgreSQL (por ejemplo, el comando \d de psql) la utilizan para filtrar las tablas visibles en la ruta de búsqueda. Dado que la vista pg_class emulada por ClickHouse solo expone las tablas de la base de datos actual, que son todas visibles, la función siempre devuelve 1.

Sintaxis

pgTableIsVisible(oid)

Alias: pg_table_is_visible

Argumentos

  • oid — Identificador de objeto de la tabla, tal como se expone en la vista pg_class emulada. El valor se ignora. UInt32

Valor devuelto

Siempre devuelve 1. UInt8

Ejemplos

Ejemplo de uso

SELECT pg_table_is_visible(0)
┌─pg_table_is_visible(0)─┐
│                      1 │
└────────────────────────┘

queryID

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.

A diferencia de la función initialQueryID, queryID puede devolver resultados diferentes en distintos segmentos.

Sintaxis

queryID()

Alias: query_id

Argumentos

  • Ninguno.

Valor devuelto

Devuelve el ID de la consulta actual. String

Ejemplos

Ejemplo de uso

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

revision

Introducido en: v22.7.0

Devuelve la revisión actual del servidor de ClickHouse.

Sintaxis

revision()

Argumentos

  • Ninguno.

Valor devuelto

Devuelve la revisión actual del servidor de ClickHouse. UInt32

Ejemplos

Ejemplo de uso

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

rowNumberInAllBlocks

Introducido en: v1.1.0

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

Sintaxis

rowNumberInAllBlocks()

Argumentos

  • Ninguno.

Valor devuelto

Devuelve el número ordinal de la fila en el bloque de datos, начиная desde 0. UInt64

Ejemplos

Ejemplo de uso

-- The data is processed in blocks of two rows: rowNumberInBlock restarts from 0 in every block,
-- while rowNumberInAllBlocks keeps counting across them.
SELECT
    number,
    rowNumberInBlock(),
    rowNumberInAllBlocks()
FROM system.numbers
LIMIT 6
SETTINGS max_block_size = 2
┌─number─┬─rowNumberInBlock()─┬─rowNumberInAllBlocks()─┐
│      0 │                  0 │                      0 │
│      1 │                  1 │                      1 │
│      2 │                  0 │                      2 │
│      3 │                  1 │                      3 │
│      4 │                  0 │                      4 │
│      5 │                  1 │                      5 │
└────────┴────────────────────┴────────────────────────┘

rowNumberInBlock

Introducido en: v1.1.0

Para cada bloque procesado por rowNumberInBlock, devuelve el número de la fila actual.

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

Sintaxis

rowNumberInBlock()

Argumentos

  • Ninguno.

Valor devuelto

Devuelve el número ordinal de la fila del bloque de datos a partir de 0. UInt64

Ejemplos

Ejemplo de uso

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

runningAccumulate

Introducido en: v1.1.0

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

Sintaxis

runningAccumulate(agg_state[, grouping])

Argumentos

  • agg_state — Estado de la función de agregación. 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

Valor devuelto

Devuelve el resultado acumulado para cada fila. Any

Ejemplos

Ejemplo de uso con initializeAggregation

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

runningConcurrency

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.

Sintaxis

runningConcurrency(start, end)

Argumentos

Valor devuelto

Devuelve el número de eventos concurrentes en cada hora de inicio de los eventos. UInt32

Ejemplos

Ejemplo de uso

CREATE TABLE example_table (start Date, end Date) ENGINE = Memory;
INSERT INTO example_table VALUES ('2025-03-03', '2025-03-11'), ('2025-03-06', '2025-03-08'), ('2025-03-07', '2025-03-09'), ('2025-03-11', '2025-03-12');

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

runningDifference

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.

El resultado de la función depende de los bloques de datos afectados y del orden de los datos en el 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 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

runningDifference(x)

Argumentos

  • x — Columna para la que se calcula la diferencia acumulada. Any

Valor devuelto

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

Ejemplos

Ejemplo de uso

SET allow_deprecated_error_prone_window_functions = 1;

CREATE TABLE events
(
    EventID UInt32,
    EventDate Date,
    EventTime DateTime
)
ENGINE = Memory;

INSERT INTO events VALUES
    (1106, '2025-11-24', '2025-11-24 00:00:04'),
    (1107, '2025-11-24', '2025-11-24 00:00:05'),
    (1108, '2025-11-24', '2025-11-24 00:00:05'),
    (1109, '2025-11-24', '2025-11-24 00:00:09'),
    (1110, '2025-11-24', '2025-11-24 00:00:10');

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

Ejemplo del impacto del tamaño de bloque

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

runningDifferenceStartingWithFirstValue

Introducido en: v1.1.0

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

Sintaxis

runningDifferenceStartingWithFirstValue(x)

Argumentos

  • x — Columna para la que se calcula la diferencia acumulada. Any

Valor devuelto

Devuelve la diferencia entre valores consecutivos; para la primera fila, devuelve el valor de esa misma fila. Any

Ejemplos

Ejemplo de uso

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

serverUUID

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

serverUUID()

Argumentos

  • Ninguno.

Valor devuelto

Devuelve el UUID aleatorio del servidor. UUID

Ejemplos

Ejemplo de uso

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

shardCount

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

shardCount()

Argumentos

  • Ninguno.

Valor devuelto

Devuelve el número total de segmentos o 0. UInt32

Ejemplos

Ejemplo de uso

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

shardNum

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

shardNum()

Argumentos

  • Ninguno.

Valor devuelto

Devuelve el índice del segmento o una constante 0. UInt32

Ejemplos

Ejemplo de uso

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

showCertificate

Introducido en: v22.6.0

Muestra información sobre el certificado SSL actual del servidor, si se ha configurado. Se devuelve un mapa vacío si el servidor no tiene certificado; por ejemplo, cuando el certificado se aprovisiona con ACME y aún no se ha emitido. Consulta Configuración de TLS para obtener más información sobre cómo configurar ClickHouse para usar certificados OpenSSL para validar las conexiones.

Sintaxis

showCertificate()

Argumentos

  • Ninguno.

Valor devuelto

Devuelve un mapa de pares clave-valor relacionados con el certificado SSL configurado. Map(String, String)

Ejemplos

Ejemplo de uso

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

sleep

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.

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

Sintaxis

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* o const Float*

Valor devuelto

Devuelve 0. UInt8

Ejemplos

Ejemplo de uso

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

sleepEachRow

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(). 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.

Sintaxis

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 coma flotante para especificar fracciones de segundo. const UInt* o const Float*

Valor devuelto

Devuelve 0 para cada fila. UInt8

Ejemplos

Ejemplo de uso

-- The output will be delayed, with a 0.5-second pause between each row.
SELECT number, sleepEachRow(0.5) FROM system.numbers LIMIT 5;
┌─number─┬─sleepEachRow(0.5)─┐
│      0 │                 0 │
│      1 │                 0 │
│      2 │                 0 │
│      3 │                 0 │
│      4 │                 0 │
└────────┴───────────────────┘

structureToCapnProtoSchema

Introducido en: v23.8.0

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

Sintaxis

structureToCapnProtoSchema(table_structure, message)

Argumentos

  • Ninguno.

Valor devuelto

Ejemplos

random

SELECT structureToCapnProtoSchema('s String, x UInt32', 'MessageName') format TSVRaw
struct MessageName
{
    s @0 : Data;
    x @1 : UInt32;
}

structureToProtobufSchema

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

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
  • message_name — Nombre del tipo de mensaje de Protobuf en el esquema generado. String

Valor devuelto

Devuelve una definición de esquema Protobuf en sintaxis proto3 que corresponde a la estructura de ClickHouse proporcionada. String

Ejemplos

Conversión de la estructura de ClickHouse a un esquema Protobuf

SELECT structureToProtobufSchema('s String, x UInt32', 'MessageName') FORMAT TSVRaw;
syntax = "proto3";

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

tcpPort

Introducido en: v20.12.0

Devuelve el número de puerto TCP en el que escucha el server nativo. 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

tcpPort()

Argumentos

  • Ninguno.

Valor devuelto

Devuelve el número de puerto TCP. UInt16

Ejemplos

Ejemplo de uso

SELECT tcpPort()
┌─tcpPort()─┐
│      9000 │
└───────────┘

throwIf

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

throwIf(x[, message[, error_code]])

Argumentos

  • x — La condición que se debe comprobar. Any
  • message — Opcional. Mensaje de error personalizado. const String
  • error_code — Opcional. Código de error personalizado. const Int8/16/32

Valor devuelto

Devuelve 0 si la condición es falsa; lanza una excepción si la condición es verdadera. UInt8

Ejemplos

Ejemplo de uso

SELECT throwIf(number = 3, 'Too many') FROM numbers(10);
Received exception:
Code: 395. DB::Exception: Too many. (FUNCTION_THROW_IF_VALUE_IS_NON_ZERO)

toColumnTypeName

Introducido en: v1.1.0

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

Sintaxis

toColumnTypeName(value)

Argumentos

  • value — Valor para el que se devuelve el tipo de dato interno. Any

Valor devuelto

Devuelve el tipo de dato interno que se usa para representar el valor. String

Ejemplos

Ejemplo de uso

SELECT toColumnTypeName(CAST('2025-01-01 01:02:03' AS DateTime));
┌─toColumnTypeName(CAST('2025-01-01 01:02:03', 'DateTime'))─┐
│ Const(UInt32)                                             │
└───────────────────────────────────────────────────────────┘

toTypeName

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

toTypeName(x)

Argumentos

  • x — Un valor de tipo arbitrario. Any

Valor devuelto

Devuelve el nombre del tipo de datos del valor de entrada. String

Ejemplos

Ejemplo de uso

SELECT toTypeName(123)
┌─toTypeName(123)─┐
│ UInt8           │
└─────────────────┘

tokenizeQuery

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

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(...)))

Ejemplos

simple

SELECT tokenizeQuery('SELECT 1')
[(0,6,'BareWord'),(6,7,'Whitespace'),(7,8,'Number')]

transactionID

Introducido en: v22.6.0

Funcionalidad experimental
No es compatible con ClickHouse Cloud

Devuelve el ID de una transacción.

Sintaxis

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)

Ejemplos

Ejemplo de uso

BEGIN TRANSACTION;
SELECT transactionID();
ROLLBACK;
┌─transactionID()────────────────────────────────┐
│ (32,34,'0ee8b069-f2bb-4748-9eae-069c85b5252b') │
└────────────────────────────────────────────────┘

transactionLatestSnapshot

Introducido en: v22.6.0

Funcionalidad experimental
No es compatible con ClickHouse Cloud

Devuelve la instantánea más reciente (Commit Sequence Number) de una transacción disponible para lectura.

Sintaxis

transactionLatestSnapshot()

Argumentos

  • Ninguno.

Valor devuelto

Devuelve la instantánea (CSN) más reciente de una transacción. UInt64

Ejemplos

Ejemplo de uso

BEGIN TRANSACTION;
SELECT transactionLatestSnapshot();
ROLLBACK;
┌─transactionLatestSnapshot()─┐
│                          32 │
└─────────────────────────────┘

transactionOldestSnapshot

Introducido en: v22.6.0

Funcionalidad experimental
No es compatible con ClickHouse Cloud

Devuelve la instantánea más antigua (Commit Sequence Number) visible para alguna transacción en ejecución.

Sintaxis

transactionOldestSnapshot()

Argumentos

  • Ninguno.

Valor devuelto

Devuelve la instantánea (CSN) más antigua de una transacción. UInt64

Ejemplos

Ejemplo de uso

BEGIN TRANSACTION;
SELECT transactionOldestSnapshot();
ROLLBACK;
┌─transactionOldestSnapshot()─┐
│                          32 │
└─────────────────────────────┘

transform

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

transform(x, array_from, array_to[, default])

Argumentos

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

Ejemplos

transform(T, Array(T), Array(U), U) -> U

CREATE TABLE hits (SearchEngineID UInt8, Referer String) ENGINE = Memory;

INSERT INTO hits VALUES
    (2, 'http://yandex.ru/search'),
    (2, 'http://yandex.ru/news'),
    (2, 'http://mail.yandex.ru/'),
    (3, 'http://google.ru/search'),
    (4, 'http://duckduckgo.com/'),
    (0, 'http://vkontakte.ru/feed'),
    (0, '');

SELECT
transform(SearchEngineID, [2, 3], ['Yandex', 'Google'], 'Other') AS title,
count() AS c
FROM hits
WHERE SearchEngineID != 0
GROUP BY title
ORDER BY c DESC, title
┌─title──┬─c─┐
│ Yandex │ 3 │
│ Google │ 1 │
│ Other  │ 1 │
└────────┴───┘

transform(T, Array(T), Array(T)) -> T

-- Without a default, a domain that is not listed is returned unchanged.
SELECT
transform(domain(Referer), ['yandex.ru', 'google.ru', 'vkontakte.ru'], ['www.yandex', 'example.com', 'vk.com']) AS s, count() AS c
FROM hits
GROUP BY domain(Referer)
ORDER BY count() DESC, s
LIMIT 10
┌─s──────────────┬─c─┐
│ www.yandex     │ 2 │
│                │ 1 │
│ duckduckgo.com │ 1 │
│ example.com    │ 1 │
│ mail.yandex.ru │ 1 │
│ vk.com         │ 1 │
└────────────────┴───┘

uniqThetaIntersect

Introducido en: v22.9.0

Calcula la intersección de dos objetos uniqThetaSketch (operación de conjuntos ∩); el resultado es un nuevo uniqThetaSketch.

Sintaxis

uniqThetaIntersect(uniqThetaSketch,uniqThetaSketch)

Argumentos

Valor devuelto

Un nuevo uniqThetaSketch que contiene el resultado de intersect. UInt64

Ejemplos

Ejemplo de uso

SELECT finalizeAggregation(uniqThetaIntersect(a, b)) AS a_intersect_b, finalizeAggregation(a) AS a_cardinality, finalizeAggregation(b) AS b_cardinality
FROM
(SELECT arrayReduce('uniqThetaState', [1, 2]) AS a, arrayReduce('uniqThetaState', [2, 3, 4]) AS b);
┌─a_intersect_b─┬─a_cardinality─┬─b_cardinality─┐
│             1 │             2 │             3 │
└───────────────┴───────────────┴───────────────┘

uniqThetaNot

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

uniqThetaNot(uniqThetaSketch,uniqThetaSketch)

Argumentos

Valor devuelto

Devuelve un nuevo uniqThetaSketch que contiene el resultado de a_not_b. UInt64

Ejemplos

Ejemplo de uso

SELECT finalizeAggregation(uniqThetaNot(a, b)) AS a_not_b, finalizeAggregation(a) AS a_cardinality, finalizeAggregation(b) AS b_cardinality
FROM
(SELECT arrayReduce('uniqThetaState', [2, 3, 4]) AS a, arrayReduce('uniqThetaState', [1, 2]) AS b);
┌─a_not_b─┬─a_cardinality─┬─b_cardinality─┐
│       2 │             3 │             2 │
└─────────┴───────────────┴───────────────┘

uniqThetaUnion

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

uniqThetaUnion(uniqThetaSketch,uniqThetaSketch)

Argumentos

Valor devuelto

Devuelve un nuevo uniqThetaSketch con el resultado de la unión. UInt64

Ejemplos

Ejemplo de uso

SELECT finalizeAggregation(uniqThetaUnion(a, b)) AS a_union_b, finalizeAggregation(a) AS a_cardinality, finalizeAggregation(b) AS b_cardinality
FROM
(SELECT arrayReduce('uniqThetaState', [1, 2]) AS a, arrayReduce('uniqThetaState', [2, 3, 4]) AS b);
┌─a_union_b─┬─a_cardinality─┬─b_cardinality─┐
│         4 │             2 │             3 │
└───────────┴───────────────┴───────────────┘

uptime

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

uptime()

Argumentos

  • Ninguno.

Valor devuelto

Devuelve el tiempo de actividad del servidor en segundos. UInt32

Ejemplos

Ejemplo de uso

SELECT uptime() AS Uptime
┌─Uptime─┐
│  55867 │
└────────┘

variantElement

Introducido en: v25.2.0

Extrae una columna del tipo especificado de una columna Variant.

Sintaxis

variantElement(variant, type_name[, default_value])

Argumentos

  • variant — columna de tipo Variant. Variant
  • type_name — El nombre del tipo de variante que se va a extraer. 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

Valor devuelto

Devuelve una columna con el tipo de variante especificado extraído de la columna Variant. Any

Ejemplos

Ejemplo de uso

CREATE TABLE test (v Variant(UInt64, String, Array(UInt64))) ENGINE = Memory;
INSERT INTO test VALUES (NULL), (42), ('Hello, World!'), ([1, 2, 3]);
SELECT v, variantElement(v, 'String'), variantElement(v, 'UInt64'), variantElement(v, 'Array(UInt64)') FROM test;
┌─v─────────────┬─variantElement(v, 'String')─┬─variantElement(v, 'UInt64')─┬─variantElement(v, 'Array(UInt64)')─┐
│ ᴺᵁᴸᴸ          │ ᴺᵁᴸᴸ                        │                        ᴺᵁᴸᴸ │ []                                 │
│ 42            │ ᴺᵁᴸᴸ                        │                          42 │ []                                 │
│ Hello, World! │ Hello, World!               │                        ᴺᵁᴸᴸ │ []                                 │
│ [1,2,3]       │ ᴺᵁᴸᴸ                        │                        ᴺᵁᴸᴸ │ [1,2,3]                            │
└───────────────┴─────────────────────────────┴─────────────────────────────┴────────────────────────────────────┘

variantType

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

variantType(variant)

Argumentos

  • variant — columna de tipo Variant. Variant

Valor devuelto

Devuelve una columna Enum con el nombre del tipo de Variant para cada fila. Enum

Ejemplos

Ejemplo de uso

CREATE TABLE test (v Variant(UInt64, String, Array(UInt64))) ENGINE = Memory;
INSERT INTO test VALUES (NULL), (42), ('Hello, World!'), ([1, 2, 3]);
SELECT variantType(v) FROM test;
┌─variantType(v)─┐
│ None           │
│ UInt64         │
│ String         │
│ Array(UInt64)  │
└────────────────┘

version

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

version()

Argumentos

  • Ninguno.

Valor devuelto

Devuelve la versión actual de ClickHouse. String

Ejemplos

Ejemplo de uso

SELECT version()
┌─version()─┐
│ 24.2.1.1  │
└───────────┘

visibleWidth

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

visibleWidth(x)

Argumentos

  • x — Un valor de cualquier tipo de datos. Any

Valor devuelto

Devuelve el ancho aproximado del valor al mostrarse en formato de texto. UInt64

Ejemplos

Calcular el ancho visible de NULL

SELECT visibleWidth(NULL)
┌─visibleWidth(NULL)─┐
│                  4 │
└────────────────────┘

zookeeperSessionUptime

Introducido en: v21.11.0

Devuelve el tiempo de actividad de la sesión actual de ZooKeeper en segundos.

Sintaxis

zookeeperSessionUptime()

Argumentos

  • Ninguno.

Valor devuelto

Devuelve el tiempo de actividad de la sesión actual de ZooKeeper en segundos. UInt32

Ejemplos

Ejemplo de uso

SELECT zookeeperSessionUptime();
┌─zookeeperSessionUptime()─┐
│                        3 │
└──────────────────────────┘
Navigation