Saltar al contenido principal
En este tutorial, insertarás 28 millones de filas de datos de Hacker News en una tabla de ClickHouse desde archivos CSV y Parquet, y ejecutarás algunas consultas sencillas para explorar los datos.

CSV

1

Descargar CSV

Se puede descargar una versión en CSV del conjunto de datos desde nuestro bucket público de S3, o ejecutando este comando:
Con 4,6 GB y 28 millones de filas, este archivo comprimido debería tardar entre 5 y 10 minutos en descargarse.
2

Tomar una muestra de los datos

clickhouse-local permite procesar rápidamente archivos locales sin tener que desplegar y configurar el servidor de ClickHouse.Antes de almacenar datos en ClickHouse, tomemos una muestra del archivo con clickhouse-local. En la consola, ejecute:
A continuación, ejecute este comando para explorar los datos:
Query
Response
Este comando tiene muchas funciones sutiles. El operador file le permite leer el archivo desde un disco local, especificando solo el formato CSVWithNames. Lo más importante es que el esquema se infiere automáticamente a partir del contenido del archivo. Observe también cómo clickhouse-local puede leer el archivo comprimido, infiriendo el formato gzip a partir de la extensión. El formato Vertical se utiliza para ver más fácilmente los datos de cada columna.
3

Cargar los datos con inferencia de esquema

La herramienta más sencilla y potente para cargar datos es clickhouse-client: un cliente nativo de línea de comandos con numerosas funciones. Para cargar datos, también puedes aprovechar la inferencia de esquema y dejar que ClickHouse determine los tipos de las columnas.Ejecuta el siguiente comando para crear una tabla e insertar los datos directamente desde el archivo CSV remoto, accediendo al contenido mediante la función url. El esquema se infiere automáticamente:
Esto crea una tabla vacía usando el esquema inferido a partir de los datos. El comando DESCRIBE TABLE nos permite ver los tipos asignados.
Query
Response
Para insertar los datos en esta tabla, use el comando INSERT INTO, SELECT. Con la función url, los datos se transmitirán directamente desde la URL:
¡Has insertado 28 millones de filas en ClickHouse con un solo comando!
4

Explorar los datos

Obtenga una muestra de las historias de Hacker News y de columnas concretas ejecutando la siguiente consulta:
Query
Response
Aunque la inferencia de esquemas es una excelente herramienta para la exploración inicial de datos, funciona con un criterio de «mejor esfuerzo» y no sustituye a largo plazo la definición de un esquema óptimo para sus datos.
5

Definir un esquema

Una optimización inmediata y evidente es definir un tipo para cada campo. Además de declarar el campo de tiempo como de tipo DateTime, definimos un tipo adecuado para cada uno de los campos siguientes después de eliminar el dataset existente. En ClickHouse, el id de la clave primaria de los datos se define mediante la cláusula ORDER BY.Seleccionar los tipos adecuados y elegir qué columnas incluir en la cláusula ORDER BY ayudará a mejorar la velocidad de las consultas y la compresión.Ejecute la consulta siguiente para eliminar el esquema anterior y crear el esquema mejorado:
Query
Con un esquema optimizado, ahora puedes insertar los datos desde el sistema de archivos local. Una vez más, con clickhouse-client, inserta el archivo mediante la cláusula INFILE con un INSERT INTO explícito.
Query
6

Ejecutar consultas de muestra

A continuación se presentan algunas consultas de ejemplo para que puedas inspirarte al escribir tus propias consultas.

¿Con qué frecuencia aparece el tema “ClickHouse” en Hacker News?

El campo score proporciona una métrica de popularidad para las historias, mientras que el campo id y el operador de concatenación || pueden usarse para generar un enlace a la publicación original.
Query
Response
¿Está ClickHouse generando más ruido con el tiempo? Aquí se muestra la utilidad de definir el campo time como DateTime, ya que usar un tipo de dato adecuado permite utilizar la función toYYYYMM():
Query
Response
Parece que “ClickHouse” está ganando popularidad con el paso del tiempo.

¿Quiénes son los principales comentaristas en los artículos relacionados con ClickHouse?

Query
Response

¿Qué comentarios generan más interés?

Query
Response

Parquet

Uno de los puntos fuertes de ClickHouse es su capacidad para manejar todo tipo de formatos. CSV representa un caso de uso bastante ideal, pero no es el más eficiente para el intercambio de datos. A continuación, cargarás los datos desde un archivo Parquet, que es un formato eficiente orientado a columna. Parquet tiene un conjunto mínimo de tipos, que ClickHouse debe respetar, y esta información de tipos está codificada en el propio formato. La inferencia de tipos a partir de un archivo Parquet conducirá invariablemente a un esquema ligeramente distinto del archivo CSV.
1

Insertar los datos

Ejecuta la siguiente consulta para leer los mismos datos en formato Parquet, de nuevo con la función url para leer los datos remotos:
Claves nulas en ParquetComo requisito del formato Parquet, tenemos que aceptar que las claves puedan ser NULL, aunque no lo sean en los datos.
Ejecuta el siguiente comando para ver el esquema inferido:
Response
Al igual que con el archivo CSV, puede especificar manualmente el esquema para tener un mayor control sobre los tipos elegidos e insertar los datos directamente desde S3:
2

Añade un índice de descarte para acelerar las consultas

Para averiguar cuántos comentarios mencionan “ClickHouse”, ejecuta la siguiente consulta:
Query
Response
A continuación, crearás un índice invertido en la columna “comment” para acelerar esta consulta. Ten en cuenta que se indexarán los comentarios en minúsculas para encontrar términos sin distinguir entre mayúsculas y minúsculas.Ejecuta los siguientes comandos para crear el índice:
La materialización del índice tarda un poco (para comprobar si el índice se ha creado, usa la tabla del sistema system.data_skipping_indices).Vuelve a ejecutar la consulta una vez que se haya creado el índice:
Query
Observa cómo la consulta ahora tarda solo 0.248 segundos con el índice, frente a los 0.843 segundos anteriores sin él:
Response
La cláusula EXPLAIN puede usarse para entender por qué la incorporación de este índice mejoró la consulta aproximadamente 3,4 veces.
Response
Observa cómo el índice permitió omitir una cantidad considerable de gránulos para acelerar la consulta.Ahora también es posible buscar de forma eficiente uno o varios términos, o todos ellos:
Query
Response
Query
Response
Última modificación el 1 de julio de 2026