Skip to main content
La selección dinámica de columnas es una funcionalidad potente, aunque poco utilizada, de ClickHouse que permite seleccionar columnas mediante expresiones regulares en lugar de nombrar cada columna individualmente. También se pueden aplicar funciones a las columnas coincidentes con el modificador APPLY, lo que la hace especialmente útil para tareas de análisis y transformación de datos. Aprenderemos a usar esta funcionalidad con ayuda del conjunto de datos de taxis de Nueva York, que también puede encontrarse en el Playground de ClickHouse SQL.

Selección de columnas que coinciden con un patrón

Empecemos con un caso habitual: seleccionar solo las columnas que contienen _amount del conjunto de datos de taxis de NYC. En lugar de escribir manualmente el nombre de cada columna, podemos usar la expresión COLUMNS con una expresión regular:
Prueba esta consulta en el Playground de SQL
Esta consulta devuelve las 10 primeras filas, pero solo de las columnas cuyos nombres coinciden con el patrón .*_amount (cualquier carácter seguido de “_amount”).
Supongamos que también queremos devolver columnas que contengan los términos fee o tax. Podemos actualizar la expresión regular para incluirlos:
Prueba esta consulta en el playground de SQL

Seleccionar varios patrones

Podemos combinar varios patrones de columnas en una sola consulta:
Prueba esta consulta en el Playground de SQL

Aplicar funciones a todas las columnas

También podemos usar el modificador APPLY para aplicar funciones a todas las columnas. Por ejemplo, si quisiéramos encontrar el valor máximo de cada una de esas columnas, podríamos ejecutar la siguiente consulta:
Prueba esta consulta en el Playground de SQL
O quizá prefiramos ver el promedio:
Prueba esta consulta en el Playground de SQL
Esos valores tienen demasiadas cifras decimales, pero por suerte podemos solucionarlo encadenando funciones. En este caso, aplicaremos la función avg, seguida de la función round:
Pruebe esta consulta en el playground de SQL
Pero eso redondea los promedios a números enteros. Si queremos redondearlos a, por ejemplo, 2 decimales, también podemos hacerlo. Además de aceptar funciones, el modificador APPLY acepta una lambda, lo que nos da la flexibilidad de hacer que la función round redondee nuestros valores medios a 2 decimales:
Pruebe esta consulta en el playground de SQL

Reemplazar columnas

Hasta aquí, todo bien. Pero supongamos que queremos ajustar uno de los valores y dejar los demás tal como están. Por ejemplo, quizá queramos duplicar el importe total y dividir el impuesto MTA entre 1.1. Podemos hacerlo con el modificador REPLACE, que sustituye una columna sin modificar las demás.
Pruebe esta consulta en el Playground de SQL

Excluir columnas

También podemos excluir un campo con el modificador EXCEPT. Por ejemplo, para quitar la columna tolls_amount, escribiríamos la siguiente consulta:
Prueba esta consulta en el Playground de SQL
Última modificación el 3 de julio de 2026