Tipos de funciones JSON
simpleJSON*(visitParam*), diseñadas para parsear un subconjunto limitado de JSON con gran rapidez.JSONExtract*, diseñadas para parsear JSON normal.
funciones simpleJSON (visitParam)
- El nombre del campo (argumento de la función) debe ser una constante.
- El nombre del campo está codificado de forma canónica en JSON. Por ejemplo:
simpleJSONHas('{"abc":"def"}', 'abc') = 1, perosimpleJSONHas('{"\\u0061\\u0062\\u0063":"def"}', 'abc') = 0 - Los campos se buscan en cualquier nivel de anidamiento, sin distinción. Si hay varios campos coincidentes, se usa la primera aparición.
- El JSON no tiene caracteres de espacio fuera de los literales de cadena.
Funciones JSONExtract
Funciones JSONExtract sin distinción entre mayúsculas y minúsculas
Estas funciones pueden tener un rendimiento inferior al de sus equivalentes sensibles a mayúsculas y minúsculas, así que use las funciones JSONExtract habituales siempre que sea posible.
JSONAllPaths
json— columna JSON.JSON
Array(String)
Ejemplos
Ejemplo de uso
Query
Response
JSONAllPathsWithTypes
json— columna JSON.JSON
Map(String, String)
Ejemplos
Ejemplo de uso
Query
Response
JSONAllValues
json— columna JSON.JSON
Array(String)
Ejemplos
Ejemplo de uso
Query
Response
JSONArrayLength
NULL si la cadena JSON de entrada no es válida.
Sintaxis
JSON_ARRAY_LENGTH
Argumentos
json— String con JSON válido.String
json es una cadena JSON válida que contiene un array; de lo contrario, devuelve NULL. Nullable(UInt64)
Ejemplos
Ejemplo de uso
Query
Response
JSONDynamicPaths
json— columna JSON.JSON
Array(String)
Ejemplos
Ejemplo de uso
Query
Response
JSONDynamicPathsWithTypes
json— columna JSON.JSON
Map(String, String)
Ejemplos
Ejemplo de uso
Query
Response
JSONExtract
json— Cadena JSON para analizar.Stringindices_or_keys— Una lista de cero o más argumentos, cada uno de los cuales puede ser una cadena o un entero.Stringo(U)Int*return_type— Tipo de dato de ClickHouse que se va a devolver.String
Query
Response
JSONExtractArrayRaw
json— Cadena JSON que se va a analizar.Stringindices_or_keys— Una lista de cero o más argumentos, cada uno de los cuales puede ser una cadena o un entero.Stringo(U)Int*
Array(String)
Ejemplos
Ejemplo de uso
Query
Response
JSONExtractArrayRawCaseInsensitive
JSONExtractArrayRaw.
Sintaxis
json— Cadena JSON que se va a analizarStringindices_or_keys— Opcional. Índices o claves para desplazarse por el array. Las claves usan coincidencia sin distinción entre mayúsculas y minúsculasStringo(U)Int*
Array(String)
Ejemplos
básico
Query
Response
JSONExtractBool
json— Cadena JSON que se va a analizar.Stringindices_or_keys— Una lista de cero o más argumentos, cada uno de los cuales puede ser una cadena o un entero.Stringo(U)Int*
0. Bool
Ejemplos
Ejemplo de uso
Query
Response
JSONExtractBoolCaseInsensitive
JSONExtractBool.
Sintaxis
json— Cadena JSON para analizarStringindices_or_keys— Opcional. Índices o claves para llegar al campo. Las claves usan coincidencia sin distinción entre mayúsculas y minúsculasStringo(U)Int*
UInt8
Ejemplos
básico
Query
Response
JSONExtractCaseInsensitive
JSONExtract.
Sintaxis
json— Cadena JSON que se va a analizarStringindices_or_keys— Opcional. Índices o claves para navegar hasta el campo. Las claves usan coincidencia sin distinción entre mayúsculas y minúsculasStringo(U)Int*return_type— El tipo de dato de ClickHouse que se va a extraerString
Any
Ejemplos
int_type
Query
Response
Query
Response
JSONExtractFloat
json— Cadena JSON que se va a analizar.Stringindices_or_keys— Una lista de cero o más argumentos, cada uno de los cuales puede ser una cadena o un entero.Stringo(U)Int*
0. Float64
Ejemplos
Ejemplo de uso
Query
Response
JSONExtractFloatCaseInsensitive
JSONExtractFloat.
Sintaxis
json— Cadena JSON para analizarStringindices_or_keys— Opcional. Índices o claves para llegar al campo. Las claves usan coincidencia sin distinción entre mayúsculas y minúsculasStringo(U)Int*
Float64
Ejemplos
básico
Query
Response
JSONExtractInt
json— Cadena JSON que se debe analizar.Stringindices_or_keys— Una lista de cero o más argumentos, cada uno de los cuales puede ser una cadena o un entero.Stringo(U)Int*
0. Int64
Ejemplos
Ejemplo de uso
Query
Response
JSONExtractIntCaseInsensitive
JSONExtractInt.
Sintaxis
json— Cadena JSON para analizarStringindices_or_keys— Opcional. Índices o claves para llegar al campo. Las claves usan coincidencia sin distinción entre mayúsculas y minúsculasStringo(U)Int*
Int64
Ejemplos
básico
Query
Response
Query
Response
JSONExtractKeys
json— Cadena JSON para analizar.Stringindices_or_keys— Una lista de cero o más argumentos, cada uno de los cuales puede ser una cadena o un entero.Stringo(U)Int*
Array(String)
Ejemplos
Ejemplo de uso
Query
Response
JSONExtractKeysAndValues
json— Cadena JSON que se va a analizar.Stringindices_or_keys— Una lista de cero o más argumentos, cada uno de los cuales puede ser una cadena o un entero.Stringo(U)Int*value_type— Tipo de dato de ClickHouse de los valores.String
Array(Tuple(String, value_type))
Ejemplos
Ejemplo de uso
Query
Response
JSONExtractKeysAndValuesCaseInsensitive
JSONExtractKeysAndValues.
Sintaxis
json— Cadena JSON que se va a analizarStringindices_or_keys— Opcional. Índices o claves para acceder al objeto. Las claves usan coincidencia sin distinción entre mayúsculas y minúsculasStringo(U)Int*value_type— El tipo de dato de ClickHouse de los valoresString
Array(Tuple(String, T))
Ejemplos
básico
Query
Response
JSONExtractKeysAndValuesRaw
json— Cadena JSON para analizar.Stringindices_or_keys— Una lista de cero o más argumentos, cada uno de los cuales puede ser una cadena o un entero.Stringo(U)Int*
Array(Tuple(String, String))
Ejemplos
Ejemplo de uso
Query
Response
JSONExtractKeysAndValuesRawCaseInsensitive
JSONExtractKeysAndValuesRaw.
Sintaxis
json— cadena JSON para analizarStringindices_or_keys— Opcional. Índices o claves para navegar por el objeto. Las claves usan coincidencia sin distinción entre mayúsculas y minúsculasStringo(U)Int*
Array(Tuple(String, String))
Ejemplos
básico
Query
Response
JSONExtractKeysCaseInsensitive
JSONExtractKeys.
Sintaxis
json— Cadena JSON para analizarStringindices_or_keys— Opcional. Índices o claves para navegar hasta el objeto. Las claves se comparan sin distinguir entre mayúsculas y minúsculasStringo(U)Int*
Array(String)
Ejemplos
básico
Query
Response
Query
Response
JSONExtractRaw
json— Cadena JSON que se va a parsear.Stringindices_or_keys— Lista de cero o más argumentos, cada uno de los cuales puede ser una cadena o un entero.Stringo(U)Int*
String
Ejemplos
Ejemplo de uso
Query
Response
JSONExtractRawCaseInsensitive
JSONExtractRaw.
Sintaxis
json— Cadena JSON que se va a analizarStringindices_or_keys— Opcional. Índices o claves para navegar hasta el campo. Las claves usan una coincidencia sin distinguir mayúsculas de minúsculasStringo(U)Int*
String
Ejemplos
objeto
Query
Response
JSONExtractString
json— Cadena JSON para analizar.Stringindices_or_keys— Una lista de cero o más argumentos, cada uno de los cuales puede ser una cadena o un entero.Stringo(U)Int*
String
Ejemplos
Ejemplo de uso
Query
Response
JSONExtractStringCaseInsensitive
JSONExtractString.
Sintaxis
json— Cadena JSON que se va a analizarStringindices_or_keys— Opcional. Índices o claves para navegar hasta el campo. Las claves usan coincidencia sin distinguir entre mayúsculas y minúsculasStringo(U)Int*
String
Ejemplos
básico
Query
Response
Query
Response
JSONExtractUInt
json— Cadena JSON que se va a analizar.Stringindices_or_keys— Una lista de cero o más argumentos, cada uno de los cuales puede ser una cadena o un entero.Stringo(U)Int*
0. UInt64
Ejemplos
Ejemplo de uso
Query
Response
JSONExtractUIntCaseInsensitive
JSONExtractUInt.
Sintaxis
json— Cadena JSON para analizarStringindices_or_keys— Opcional. Índices o claves para navegar hasta el campo. Las claves usan coincidencia sin distinguir entre mayúsculas y minúsculasStringo(U)Int*
UInt64
Ejemplos
básico
Query
Response
JSONHas
json— Cadena JSON que se va a analizarString[ ,indices_or_keys, ...]— Una lista de cero o más argumentos.Stringo(U)Int*
1 si el valor existe en json; en caso contrario, 0 UInt8
Ejemplos
Ejemplo de uso
Query
Response
JSONKey
json— Cadena JSON que se va a analizar.Stringindices_or_keys— Lista opcional de índices o claves que especifican una ruta hacia un elemento anidado. Cada argumento puede ser una cadena (acceso por clave) o un entero (acceso por índice a partir de 1).StringoInt*
String
Ejemplos
Ejemplo de uso
Query
Response
JSONLength
0.
Sintaxis
json— Cadena JSON para analizarString[, indices_or_keys, ...]— Opcional. Una lista de cero o más argumentos.Stringo(U)Int8/16/32/64
0 si el valor no existe o es de un tipo incorrecto. UInt64
Ejemplos
Ejemplo de uso
Query
Response
JSONMergePatch
jsonMergePatch
Argumentos
json1[, json2, ...]— Una o más cadenas con JSON válido.String
String
Ejemplos
Ejemplo de uso
Query
Response
json— columna JSON.JSON
Array(String)
Ejemplos
Ejemplo de uso
Query
Response
json— columna JSON.JSON
Map(String, String)
Ejemplos
Ejemplo de uso
Query
Response
JSONType
Null=0.
Sintaxis
json— cadena JSON que se va a analizarStringjson[, indices_or_keys, ...]— Una lista de cero o más argumentos, cada uno de los cuales puede ser una cadena o un entero.Stringo(U)Int8/16/32/64
Null=0 Enum
Ejemplos
Ejemplo de uso
Query
Response
JSON_EXISTS
1.
Si el valor no existe, se devuelve 0.
Sintaxis
1 si el valor existe en el documento JSON; en caso contrario, 0. UInt8
Ejemplos
Ejemplo de uso
Query
Response
JSON_QUERY
String
Ejemplos
Ejemplo de uso
Query
Response
JSON_VALUE
- con SET
function_json_value_return_type_allow_nullable=true, se devolveráNULL. Si el valor es de tipo complejo (como: struct, array, map), de forma predeterminada se devolverá una cadena vacía. - con SET
function_json_value_return_type_allow_complex=true, se devolverá el valor complejo.
String
Ejemplos
Ejemplo de uso
Query
Response
dynamicElement
Dynamic.
Esta función permite extraer valores de un tipo específico de una columna Dynamic. Si una fila contiene un valor
del tipo solicitado, devuelve ese valor. Si la fila contiene un tipo distinto o NULL, devuelve NULL
para los tipos escalares o un array vacío para los tipos Array.
Sintaxis
dynamic— Columna Dynamic de la que extraer.Dynamictype_name— Nombre del tipo variante que se va a extraer (p. ej., ‘String’, ‘Int64’, ‘Array(Int64)’).
Any
Ejemplos
Extracción de distintos tipos de una columna Dynamic
Query
Response
dynamicType
Dynamic.
Para las filas que contienen NULL, la función devuelve ‘None’. Para todas las demás filas, devuelve el nombre del tipo de datos real
almacenado en esa fila de la columna Dynamic (p. ej., ‘Int64’, ‘String’, ‘Array(Int64)’).
Sintaxis
dynamic— columna Dynamic que se desea inspeccionar.Dynamic
String
Ejemplos
Inspección de tipos en una columna Dynamic
Query
Response
max_types, los valores que superan ese límite se almacenan en un formato binario compartido
en lugar de separarse en subcolumnas tipadas individuales. Esta función identifica qué filas se almacenan en ese formato compartido.
Sintaxis
dynamic— columna Dynamic que se va a inspeccionar.Dynamic
Bool
Ejemplos
Comprobación del formato de almacenamiento en una columna Dynamic con el límite max_types
Query
Response
isValidJSON
json— Cadena JSON que se debe validarString
1 si la cadena es un JSON válido; en caso contrario, 0. UInt8
Ejemplos
Ejemplo de uso
Query
Response
Query
Response
simpleJSONExtractBool
true/false a partir del valor del campo llamado field_name.
El resultado es UInt8.
Sintaxis
visitParamExtractBool
Argumentos
json— El JSON en el que se busca el campo.Stringfield_name— El nombre del campo que se busca.const String
1 si el valor del campo es true; 0 en caso contrario. Esto significa que esta función también devolverá 0 (y no solo) en los siguientes casos:
- Si el campo no existe.
- Si el campo contiene
truecomo cadena, por ejemplo:{"field":"true"}. - Si el campo contiene
1como valor numérico.UInt8
Query
Response
simpleJSONExtractFloat
Float64 a partir del valor del campo llamado field_name.
Si field_name es un campo de cadena, intenta analizar un número desde el inicio de la cadena.
Si el campo no existe, o existe pero no contiene un número, devuelve 0.
Sintaxis
visitParamExtractFloat
Argumentos
json— El JSON en el que se busca el campo.Stringfield_name— El nombre del campo que se busca.const String
0. Float64
Ejemplos
Ejemplo de uso
Query
Response
simpleJSONExtractInt
Int64 del valor del campo llamado field_name.
Si field_name es un campo de tipo cadena, intenta analizar un número desde el comienzo de la cadena.
Si el campo no existe, o existe pero no contiene un número, devuelve 0.
Sintaxis
visitParamExtractInt
Argumentos
json— El JSON en el que se busca el campo.Stringfield_name— El nombre del campo que se debe buscar.const String
0 Int64
Ejemplos
Ejemplo de uso
Query
Response
simpleJSONExtractRaw
field_name como un String, incluidos los separadores.
Sintaxis
visitParamExtractRaw
Argumentos
json— El JSON en el que se busca el campo.Stringfield_name— El nombre del campo que se debe buscar.const String
String
Ejemplos
Ejemplo de uso
Query
Response
simpleJSONExtractString
String entre comillas dobles del valor del campo llamado field_name.
Detalles de implementación
Actualmente no hay compatibilidad con puntos de código en el formato \uXXXX\uYYYY que no pertenezcan al plano multilingüe básico (se convierten a CESU-8 en lugar de UTF-8).
Sintaxis
visitParamExtractString
Argumentos
json— El JSON en el que se busca el campo.Stringfield_name— El nombre del campo que se busca.const String
String
Ejemplos
Ejemplo de uso
Query
Response
simpleJSONExtractUInt
UInt64 del valor del campo llamado field_name.
Si field_name es un campo de tipo cadena, intenta analizar un número desde el inicio de la cadena.
Si el campo no existe, o existe pero no contiene un número, devuelve 0.
Sintaxis
visitParamExtractUInt
Argumentos
json— El JSON en el que se busca el campo.Stringfield_name— El nombre del campo que se debe buscar.const String
0 UInt64
Ejemplos
Ejemplo de uso
Query
Response
simpleJSONHas
field_name.
Sintaxis
visitParamHas
Argumentos
json— El JSON en el que se busca el campo.Stringfield_name— El nombre del campo que se busca.const String
1 si el campo existe y 0 en caso contrario UInt8
Ejemplos
Ejemplo de uso
Query
Response
toJSONString
UInt64 o Int128) se encierran entre comillas de forma predeterminada. output_format_json_quote_64bit_integers controla este comportamiento.
Los valores especiales NaN e inf se sustituyen por null. Active la configuración output_format_json_quote_denormals para mostrarlos.
Al serializar un valor Enum, la función genera su nombre.
Véase también:
Sintaxis
value— Valor que se va a serializar. El valor puede ser de cualquier tipo de dato.Any
String
Ejemplos
Serialización de Map
Query
Response
Query
Response