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

# Registro de cambios de Cloud para la versión v24.10

> Registro de cambios de la versión rápida v24.10

Cambios relevantes para los servicios de ClickHouse Cloud correspondientes a la versión v24.10.

<div id="backward-incompatible-change">
  ## Cambio incompatible con versiones anteriores
</div>

* Ahora se permite escribir `SETTINGS` antes de `FORMAT` en una cadena de consultas con `UNION` cuando las subconsultas están entre paréntesis. Esto cierra [#39712](https://github.com/ClickHouse/ClickHouse/issues/39712). También cambia el comportamiento cuando una consulta tiene la cláusula `SETTINGS` especificada dos veces en una secuencia. La cláusula `SETTINGS` más cercana tendrá prioridad para la subconsulta correspondiente. En versiones anteriores, la cláusula `SETTINGS` más externa podía tener prioridad sobre la interna. [#60197](https://github.com/ClickHouse/ClickHouse/pull/60197)[#68614](https://github.com/ClickHouse/ClickHouse/pull/68614) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se reimplementa el tipo Dynamic. Ahora, cuando se alcanza el límite de tipos de datos dinámicos, los tipos nuevos no se convierten a String, sino que se almacenan en una estructura de datos especial en formato binario, con el tipo de dato codificado en binario. Ahora, cualquier tipo que se haya insertado alguna vez en una columna Dynamic puede leerse desde ella como subcolumna. [#68132](https://github.com/ClickHouse/ClickHouse/pull/68132) ([Pavel Kruglov](https://github.com/Avogar)).
* Se admiten expresiones como `a[b].c` para las tuplas con nombre, así como subíndices con nombre en expresiones arbitrarias, por ejemplo, `expr().name`. Esto es útil para procesar JSON. Esto cierra [#54965](https://github.com/ClickHouse/ClickHouse/issues/54965). En versiones anteriores, una expresión con la forma `expr().name` se interpretaba como `tupleElement(expr(), name)`, y el analizador de consultas buscaba una columna `name` en lugar del elemento de tupla correspondiente; en la nueva versión, en cambio, pasa a interpretarse como `tupleElement(expr(), 'name')`. En la mayoría de los casos, la versión anterior no funcionaba, pero es posible imaginar un escenario muy poco habitual en el que este cambio pudiera provocar incompatibilidades: si almacenabas nombres de elementos de tupla en una columna o alias cuyo nombre era distinto del nombre del elemento de la tupla: `SELECT 'b' AS a, CAST([tuple(123)] AS 'Array(Tuple(b UInt8))') AS t, t[1].a`. Es muy poco probable que hayas usado consultas de este tipo, pero aun así tenemos que marcar este cambio como potencialmente incompatible con versiones anteriores. [#68435](https://github.com/ClickHouse/ClickHouse/pull/68435) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Cuando la configuración `print_pretty_type_names` está habilitada, el tipo de dato `Tuple` se imprimirá en formato Pretty en las sentencias `SHOW CREATE TABLE`, en la función `formatQuery` y en el modo interactivo de `clickhouse-client` y `clickhouse-local`. En versiones anteriores, esta configuración solo se aplicaba a las consultas `DESCRIBE` y a `toTypeName`. Esto cierra [#65753](https://github.com/ClickHouse/ClickHouse/issues/65753). [#68492](https://github.com/ClickHouse/ClickHouse/pull/68492) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Ahora se permite, de forma predeterminada, reordenar las condiciones de filtro de la cláusula `[PRE]WHERE`. Puede deshabilitarse estableciendo `allow_reorder_prewhere_conditions` en `false`. [#70657](https://github.com/ClickHouse/ClickHouse/pull/70657) ([Nikita Taranov](https://github.com/nickitat)).
* Se corrige la optimización `optimize_functions_to_subcolumns` (antes podía provocar el error `Invalid column type for ColumnUnique::insertRangeFrom. Expected String, got LowCardinality(String)`), preservando el tipo `LowCardinality` en `mapKeys`/`mapValues`. [#70716](https://github.com/ClickHouse/ClickHouse/pull/70716) ([Azat Khuzhin](https://github.com/azat)).

<div id="new-feature">
  ## Nueva funcionalidad
</div>

* Las vistas materializadas actualizables están listas para su uso en producción. [#70550](https://github.com/ClickHouse/ClickHouse/pull/70550) ([Michael Kolupaev](https://github.com/al13n321)). Las vistas materializadas actualizables ahora son compatibles con bases de datos Replicated. [#60669](https://github.com/ClickHouse/ClickHouse/pull/60669) ([Michael Kolupaev](https://github.com/al13n321)).
* La función `toStartOfInterval()` ahora tiene una nueva sobrecarga que emula la función `time_bucket()` de TimescaleDB y la función `date_bin()` de PostgreSQL, respectivamente. ([#55619](https://github.com/ClickHouse/ClickHouse/issues/55619)). Permite alinear valores de fecha o `timestamp` con múltiplos de un intervalo dado a partir de un origen *arbitrario* (en lugar de 0000-01-01 00:00:00.000 como origen *fijo*). Por ejemplo, `SELECT toStartOfInterval(toDateTime('2023-01-01 14:45:00'), INTERVAL 1 MINUTE, toDateTime('2023-01-01 14:35:30'));` devuelve `2023-01-01 14:44:30`, que es un múltiplo de intervalos de 1 minuto a partir del origen `2023-01-01 14:35:30`. [#56738](https://github.com/ClickHouse/ClickHouse/pull/56738) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* Integración con MongoDB refactorizada: migración al nuevo driver mongocxx desde el obsoleto Poco::MongoDB, eliminación de la compatibilidad con el antiguo protocolo obsoleto, compatibilidad con conexiones mediante URI, compatibilidad con todos los tipos de MongoDB, compatibilidad con las sentencias WHERE y ORDER BY del lado de MongoDB, restricción de expresiones no compatibles con MongoDB. [#63279](https://github.com/ClickHouse/ClickHouse/pull/63279) ([Kirill Nikiforov](https://github.com/allmazz)).
* Una nueva opción `--progress-table` en clickhouse-client imprime una tabla con métricas que cambian durante la ejecución de la consulta; la nueva opción `--enable-progress-table-toggle` está asociada con `--progress-table` y permite alternar la visualización de la tabla de progreso pulsando la tecla Espacio. [#63689](https://github.com/ClickHouse/ClickHouse/pull/63689) ([Maria Khristenko](https://github.com/mariaKhr)).
* Esto permite conceder acceso a prefijos con comodines. `GRANT SELECT ON db.table_pefix_* TO user`. [#65311](https://github.com/ClickHouse/ClickHouse/pull/65311) ([pufit](https://github.com/pufit)).
* Se introdujo el formato JSONCompactWithProgress, en el que ClickHouse devuelve cada fila como un objeto JSON delimitado por saltos de línea, incluidos metadatos, datos, progreso, totales y estadísticas. [#66205](https://github.com/ClickHouse/ClickHouse/pull/66205) ([Alexey Korepanov](https://github.com/alexkorep)).
* Se añade system.query\_metric\_log, que contiene el historial de los valores de memoria y de las métricas de la tabla system.events para consultas individuales, volcados periódicamente a disco. [#66532](https://github.com/ClickHouse/ClickHouse/pull/66532) ([Pablo Marcos](https://github.com/pamarcos)).
* Añade la configuración `input_format_json_empty_as_default`, que, cuando está activada, trata los campos vacíos de las entradas JSON como valores predeterminados. Cierra [#59339](https://github.com/ClickHouse/ClickHouse/issues/59339). [#66782](https://github.com/ClickHouse/ClickHouse/pull/66782) ([Alexis Arnaud](https://github.com/a-a-f)).
* Se añadieron las funciones `overlay` y `overlayUTF8`, que sustituyen partes de una cadena por otra. Ejemplo: `SELECT overlay('Hello New York', 'Jersey', 11)` devuelve `Hello New Jersey`. [#66933](https://github.com/ClickHouse/ClickHouse/pull/66933) ([李扬](https://github.com/taiyang-li)).
* Se agrega un nuevo comando, eliminación ligera en partición `DELETE FROM [db.]table [ON CLUSTER cluster] [IN PARTITION partition_expr] WHERE expr;` \`\`\` VM-114-29-tos :) select \* from ads\_app\_poster\_ip\_source\_channel\_di\_replicated\_local;. [#67805](https://github.com/ClickHouse/ClickHouse/pull/67805) ([sunny](https://github.com/sunny19930321)).
* Se implementó la comparación de los valores del tipo de datos `Interval`, de modo que ahora se convierten al menor supertipo. [#68057](https://github.com/ClickHouse/ClickHouse/pull/68057) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
* Añadir la configuración create\_if\_not\_exists para que el comportamiento predeterminado en las sentencias CREATE sea IF NOT EXISTS. [#68164](https://github.com/ClickHouse/ClickHouse/pull/68164) ([Peter Nguyen](https://github.com/petern48)).
* Permite leer tablas Iceberg en Azure y localmente. [#68210](https://github.com/ClickHouse/ClickHouse/pull/68210) ([Daniil Ivanik](https://github.com/divanik)).
* Se añaden las funciones de agregación distinctDynamicTypes/distinctJSONPaths/distinctJSONPathsAndTypes para facilitar la introspección del contenido del tipo de columna JSON. [#68463](https://github.com/ClickHouse/ClickHouse/pull/68463) ([Pavel Kruglov](https://github.com/Avogar)).
* Ahora se pueden eliminar las entradas de la caché de consultas por etiqueta. Por ejemplo, la entrada de la caché de consultas creada por `SELECT 1 SETTINGS use_query_cache = true, query_cache_tag = 'abc'` ahora puede eliminarse con `SYSTEM DROP QUERY CACHE TAG 'abc'` (o, por supuesto, simplemente con `SYSTEM DROP QUERY CACHE`, que borrará toda la caché de consultas). [#68477](https://github.com/ClickHouse/ClickHouse/pull/68477) ([Michał Tabaszewski](https://github.com/pinsvin00)).
* Se puede escribir una consulta SELECT simple usando SELECT implícito para habilitar expresiones tipo calculadora; por ejemplo, `ch "1 + 2"`. Esto se controla mediante una nueva configuración, `implicit_select`. [#68502](https://github.com/ClickHouse/ClickHouse/pull/68502) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
* Se añade compatibilidad con el modo --copy para clickhouse local como acceso directo para la conversión de formato [#68503](https://github.com/ClickHouse/ClickHouse/issues/68503). [#68583](https://github.com/ClickHouse/ClickHouse/pull/68583) ([Denis Hananein](https://github.com/denis-hananein)).
* Se añadió la función `ripeMD160`, que calcula el hash criptográfico RIPEMD-160 de una cadena de texto. Ejemplo: `SELECT hex(ripeMD160('The quick brown fox jumps over the lazy dog'))` devuelve `37F332F68DB77BD9D7EDD4969571AD671CF9DD3B`. [#68639](https://github.com/ClickHouse/ClickHouse/pull/68639) ([Dergousov Maxim](https://github.com/m7kss1)).
* Se añade la columna virtual \_headers para el motor de tabla URL. Cierra [#65026](https://github.com/ClickHouse/ClickHouse/issues/65026). [#68867](https://github.com/ClickHouse/ClickHouse/pull/68867) ([flynn](https://github.com/ucasfl)).
* Se añade la tabla `system.projections` para hacer seguimiento de las proyecciones disponibles. [#68901](https://github.com/ClickHouse/ClickHouse/pull/68901) ([Jordi Villar](https://github.com/jrdi)).
* Se añade compatibilidad con la función `arrayUnion`. [#68989](https://github.com/ClickHouse/ClickHouse/pull/68989) ([Peter Nguyen](https://github.com/petern48)).
* Se añade la nueva función `arrayZipUnaligned` para compatibilidad con Spark(arrays\_zip), que permite arrays no alineados basados en la `arrayZip` original. \`\`\` sql SELECT arrayZipUnaligned(\[1], \[1, 2, 3]). [#69030](https://github.com/ClickHouse/ClickHouse/pull/69030) ([李扬](https://github.com/taiyang-li)).
* Se admite la función de agregado `quantileExactWeightedInterpolated`, que es una versión interpolada basada en `quantileExactWeighted`. Algunas personas pueden preguntarse por qué necesitamos una nueva `quantileExactWeightedInterpolated` si ya existe `quantileExactInterpolatedWeighted`. La razón es que la nueva es más precisa que la anterior. Además, sirve para la compatibilidad con Spark en Apache Gluten. [#69619](https://github.com/ClickHouse/ClickHouse/pull/69619) ([李扬](https://github.com/taiyang-li)).
* Se añadió compatibilidad con la función arrayElementOrNull. Devuelve null si el índice del array está fuera de rango o no se encuentra la clave del mapa. [#69646](https://github.com/ClickHouse/ClickHouse/pull/69646) ([李扬](https://github.com/taiyang-li)).
* Compatibilidad con el tipo Dynamic en la mayoría de las funciones al ejecutarlas sobre los tipos internos dentro de Dynamic. [#69691](https://github.com/ClickHouse/ClickHouse/pull/69691) ([Pavel Kruglov](https://github.com/Avogar)).
* Añade el argumento `scale` (valor predeterminado: `true`) a la función `arrayAUC`, lo que permite omitir el paso de normalización (issue [#69609](https://github.com/ClickHouse/ClickHouse/issues/69609)). [#69717](https://github.com/ClickHouse/ClickHouse/pull/69717) ([gabrielmcg44](https://github.com/gabrielmcg44)).
* Se ha vuelto a añadir la función `RIPEMD160`, que calcula el hash criptográfico RIPEMD-160 de una cadena. Ejemplo: `SELECT HEX(RIPEMD160('The quick brown fox jumps over the lazy dog'))` devuelve `37F332F68DB77BD9D7EDD4969571AD671CF9DD3B`. [#70087](https://github.com/ClickHouse/ClickHouse/pull/70087) ([Dergousov Maxim](https://github.com/m7kss1)).
* Permite almacenar en caché los archivos leídos en motores de tabla de almacenamiento de objetos y lagos de datos usando el hash de ETag + la ruta del archivo como clave de caché. [#70135](https://github.com/ClickHouse/ClickHouse/pull/70135) ([Kseniia Sumarokova](https://github.com/kssenii)).
* Se admite la lectura de tablas Iceberg en HDFS. [#70268](https://github.com/ClickHouse/ClickHouse/pull/70268) ([flynn](https://github.com/ucasfl)).
* Permite leer y escribir el tipo JSON como cadena binaria en formato RowBinary mediante las configuraciones `input_format_binary_read_json_as_string/output_format_binary_write_json_as_string`. [#70288](https://github.com/ClickHouse/ClickHouse/pull/70288) ([Pavel Kruglov](https://github.com/Avogar)).
* Permite serializar/deserializar una columna JSON como una sola columna String en Native format. Para la salida, use la configuración `output_format_native_write_json_as_string`. Para la entrada, use la versión de serialización `1` antes de los datos de la columna. [#70312](https://github.com/ClickHouse/ClickHouse/pull/70312) ([Pavel Kruglov](https://github.com/Avogar)).
* Admite CTE estándar y `with insert`, ya que anteriormente solo admitía `insert ... with ...`. [#70593](https://github.com/ClickHouse/ClickHouse/pull/70593) ([Shichao Jin](https://github.com/jsc0218)).
