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;1108152157446MACStringToOUI
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;20566authenticatedUser
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
x— Tamaño que se va a mostrar.(U)Int*oFloat*oDecimalmin— El valor mínimo.(U)Int*oFloat*oDecimalmax— El valor máximo.(U)Int*oFloat*oDecimalwidth— Opcional. El ancho de la barra en caracteres. El valor predeterminado es80.const (U)Int*oconst Float*oconst Decimal
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
- 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>- 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 directoriouser_files.const Stringfeature— 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 14.695691092573497colorOKLABToSRGB
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:
- Conversión de OKLab a sRGB lineal.
- 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_value/oklab .
Sintaxis
colorOKLABToSRGB(tuple [, gamma])Argumentos
tuple— Una tupla de tres valores numéricosL,a,b, dondeLestá 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)) * 255a cada canalx. El valor predeterminado es2.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:
- OKLCH a OKLab.
- OKLab a sRGB lineal
- 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éricosL,C,H, dondeLestá en el intervalo[0...1],C >= 0yHestá 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)) * 255a cada canalx. El valor predeterminado es2.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:
- sRGB a sRGB lineal
- 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)^gammaa cada canalx. El valor predeterminado es2.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:
- sRGB a sRGB lineal
- sRGB lineal a OKLab
- 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)^gammaa cada canalx. El valor predeterminado es2.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
offsetes0, se genera una excepción, ya queoffsetestá basado en 1. - Si
offsetes negativo, el recuento comienzaoffsetdígitos desde el final del número, en lugar de desde el principio. - Si
offsetes mayor que el número de dígitos den, se devuelve0.
Un argumento opcional length sigue la siguiente lógica:
- Si
lengthes positivo, indica la cantidad de dígitos que se toman desdeoffset - Si
lengthes 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
n— El número a partir del cual se calculan los dígitos.(U)Int8o(U)Int16o(U)Int32o(U)Int64offset— La posición inicial del dígito enn.(U)Int8o(U)Int16o(U)Int32o(U)Int64length— Opcional. La longitud máxima de los dígitos.(U)Int8o(U)Int16o(U)Int32o(U)Int64
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)7890Desplazamiento y longitud positivos
SELECT digits(1234567890, 7, 2)78Un desplazamiento negativo cuenta desde la derecha
SELECT digits(1234567890, -3)890La longitud negativa excluye los dígitos desde la derecha
SELECT digits(1234567890, 3, -2)345678Si el desplazamiento supera el final, devuelve 0
SELECT digits(1234567890, 11)0displayName
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 auser_files_path. Admite comodines*,**,?,{abc,def}y{N..M}, dondeNyMson números y'abc'y'def'son cadenas.Stringdefault— El valor que se devuelve si el archivo no existe o no se puede acceder a él.StringoNULL
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.StringoFixedString
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.StringoFixedString
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.StringoFixedString
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
state— Estado de agregación.AggregateFunction
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.Stringoriginal_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
value— Tamaño en bytes.Int8oInt16oInt32oInt64oUInt8oUInt16oUInt32oUInt64oFloat32oFloat64oDecimalprecision— Opcional. Número de dígitos después del punto decimal. El valor predeterminado es 2.const UInt8
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
value— Un número para formatear.Int8oInt16oInt32oInt64oUInt8oUInt16oUInt32oUInt64oFloat32oFloat64oDecimalprecision— Opcional. Número de dígitos después del punto decimal. El valor predeterminado es 2.const UInt8
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
value— Tamaño en bytes.Int8oInt16oInt32oInt64oUInt8oUInt16oUInt32oUInt64oFloat32oFloat64oDecimalprecision— Opcional. Número de dígitos después del punto decimal. El valor predeterminado es 2.const UInt8
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ónINTERVAL. No se admiten unidades de intervalo deMONTHen adelante.Float64oIntervalmaximum_unit— Opcional. La unidad máxima que se mostrará. Valores aceptables:nanoseconds,microseconds,milliseconds,seconds,minutes,hours,days,months,years. Valor predeterminado:years.const Stringminimum_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 quemaximum_unit, se lanzará una excepción. Valor predeterminado:secondssimaximum_unitessecondso una unidad mayor;nanosecondsen 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 oNull, el número de columnas será aleatorio, entre 1 y 128. Valor predeterminado:Null.UInt64seed— Semilla aleatoria para producir resultados estables. Si no se especifica o se establece enNull, 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 DateTimecon 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 Float64generateSerialID
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 serieconst Stringstart_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 existeUInt*
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 = 1getMacro
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
setting_Name— El nombre del SETTING.const String
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.Stringdefault_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
\NgetSizeOfEnumType
Introducido en: v1.1.0
Devuelve el número de campos del Enum proporcionado.
Sintaxis
getSizeOfEnumType(x)Argumentos
x— Valor de tipoEnum.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')67108864hasColumnInTable
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
database— Nombre de la base de datos.const Stringtable— Nombre de la tabla.const Stringcolumn— Nombre de la columna.const String
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')1Comprobar una columna que no existe
SELECT hasColumnInTable('system','metrics','non-existing_column')0hasThreadFuzzer
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
N— El número de buckets; módulo.const (U)Int*value— El valor de entrada que se va a transformar.(U)Int*oBooloDecimaloFloat*oStringoFixedStringoUUIDoDateoTimeoDateTime
Valor devuelto
Devuelve un hash de 32 bits del valor de entrada. Int32
Ejemplos
Ejemplo
SELECT icebergBucket(5, 1.0 :: Float32)4icebergTruncate
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')iceidentity
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)42ignore
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:
- Usa el índice para encontrar qué gránulos (bloques de ~8192 filas) podrían contener
key = 123 - 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:
- Usa el índice para encontrar qué gránulos podrían contener
key = 123y 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.Stringarg1[, 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— ValorDecimalque se va a comprobar.Decimalprecision— Opcional. La precisión del tipoDecimal. 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ámetrodefault_databaseen el archivo de configuración). Para anular la base de datos predeterminada, use la consultaUSE database_nameo especifique la base de datos y la tabla mediante un punto, comodatabase_name.table_name.Stringvalue_column— El nombre de la columna de la tabla que contiene los datos necesarios.const Stringjoin_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 consultaUSE database_nameo especifique la base de datos y la tabla separadas por un punto, como endatabase_name.table_name.Stringvalue_column— El nombre de la columna de la tabla que contiene los datos necesarios.const Stringjoin_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
col— Una columna de baja cardinalidad.LowCardinality
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
col— Una columna de baja cardinalidad.LowCardinality
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');2Convertir 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*oFloat*sigma— Desviación estándar de referencia de una métrica.(U)Int*oFloat*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*oFloat*power— Potencia estadística requerida de una prueba (1 - probabilidad de error de tipo II).(U)Int*oFloat*alpha— Nivel de significación requerido de una prueba (probabilidad de error de tipo I).(U)Int*oFloat*
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.Anyoffset— El desplazamiento con respecto a la fila actual. Los valores positivos avanzan y los valores negativos retroceden.Integerdefault_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.Stringtag— 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 > 12Con 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 dFilas distintas producen resultados diferentes
SELECT obfuscateQuery('SELECT 1') AS a, obfuscateQuery('SELECT 1') AS bSELECT 1 SELECT 1obfuscateQueryWithSeed
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.Stringseed— La semilla de la ofuscación. La misma semilla produce resultados deterministas.IntegeroString
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 usersOfuscación determinista con una semilla de texto
SELECT obfuscateQueryWithSeed('SELECT id, value FROM data', 'myseed')SELECT id, value FROM dataLa misma semilla da el mismo resultado
SELECT obfuscateQueryWithSeed('SELECT 1', 100) = obfuscateQueryWithSeed('SELECT 1', 100)1parseQueryToJSON
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,ymonths,month,moweeks,week,wdays,day,dhours,hour,hr,hminutes,minute,min,mseconds,second,sec,smilliseconds,millisecond,millisec,msmicroseconds,microsecond,microsec,μs,µs,usnanoseconds,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 vistapg_classemulada. 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.AggregateFunctiongrouping— Opcional. Clave de agrupación. El estado de la función se restablece si cambia el valor degrouping. 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
start— Una columna con la hora de inicio de los eventos.DateoDateTimeoDateTime64end— Una columna con la hora de finalización de los eventos.DateoDateTimeoDateTime64
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 │
└──────────────────────────────────────────┘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 │
└──────────────┘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:
- 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.
- 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. - 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*oconst 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:
- 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. - 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. - 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*oconst 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 TSVRawstruct 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').Stringmessage_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.Anymessage— Opcional. Mensaje de error personalizado.const Stringerror_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 CloudDevuelve 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 unstart_csnespecí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 CloudDevuelve 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 CloudDevuelve 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)- transformaxmediante arrays de asignación, con un valor predeterminado para los elementos que no coincidantransform(x, array_from, array_to)- realiza la misma transformación, pero devuelve elxoriginal 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_fromyarray_todeben tener el mismo número de elementos- Para la versión de 4 parámetros:
transform(T, Array(T), Array(U), U) -> UdondeTyUpueden ser tipos compatibles distintos - Para la versión de 3 parámetros:
transform(T, Array(T), Array(T)) -> Tdonde todos los tipos deben ser iguales
Sintaxis
transform(x, array_from, array_to[, default])Argumentos
x— Valor que se va a transformar.(U)Int*oDecimaloFloat*oStringoDateoDateTimearray_from— Array constante de valores en el que buscar coincidencias.Array((U)Int*)oArray(Decimal)oArray(Float*)oArray(String)oArray(Date)oArray(DateTime)array_to— Array constante de valores que se devolverán para las coincidencias correspondientes dearray_from.Array((U)Int*)oArray(Decimal)oArray(Float*)oArray(String)oArray(Date)oArray(DateTime)default— Opcional. Valor que se devolverá sixno se encuentra enarray_from. Si se omite, devuelve x sin cambios.(U)Int*oDecimaloFloat*oStringoDateoDateTime
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
uniqThetaSketch— objeto uniqThetaSketch.TupleoArrayoDateoDateTimeoStringo(U)Int*oFloat*oDecimal
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
uniqThetaSketch— objeto uniqThetaSketch.TupleoArrayoDateoDateTimeoStringo(U)Int*oFloat*oDecimal
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
uniqThetaSketch— objeto uniqThetaSketch.TupleoArrayoDateoDateTimeoStringo(U)Int*oFloat*oDecimal
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.Varianttype_name— El nombre del tipo de variante que se va a extraer.Stringdefault_value— El valor predeterminado que se usará sivariantno 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 │
└──────────────────────────┘