Skip to main content
En este tutorial, descubrirá cómo usar ClickHouse para ejecutar consultas analíticas sobre grandes volúmenes de datos. También verá cómo utilizar un diccionario para enriquecer los datos y escribir consultas con JOIN.

Requisitos previos

Para este tutorial, necesitará:
1

Cree la tabla

El conjunto de datos que se utiliza en este tutorial es el de los taxis de la ciudad de Nueva York, que contiene información sobre millones de viajes en taxi, con columnas como el importe de la propina, los peajes, el tipo de pago, entre otras.
  1. Seleccione SQL console en el menú de la izquierda
  2. Haga clic en la pestaña + situada junto al icono de inicio para crear una nueva consulta
  3. En el editor SQL, escriba la siguiente consulta y, a continuación, haga clic en Run:
Expandable
2

Inserte los datos

Ahora que ha creado una tabla, añada los datos de taxis de la ciudad de Nueva York a partir de archivos CSV almacenados en S3.El siguiente comando inserta aproximadamente 2.000.000 de filas en su tabla trips a partir de dos archivos distintos en S3: trips_1.tsv.gz y trips_2.tsv.gz:
Expandable
Espere a que finalice la inserción de los datos. Se descargarán alrededor de 150 MB de datos. Una vez finalizada la inserción, compruebe el número de filas de la tabla trips:
Deberías obtener como resultado 1,999,657 filas
3

Analice los datos

Con los datos ya cargados, puede ejecutar algunas consultas para analizarlos.
  • Calcule el importe medio de las propinas:
  • Calcule el coste medio en función del número de pasajeros:
  • Calcule el número diario de recogidas por barrio:
  • Calcule la duración de cada viaje en minutos y agrupe los resultados según esa duración:
  • Muestre el número de recogidas en cada barrio, desglosado por hora del día:
4

Cree un diccionario

A continuación, creará un diccionario (una correspondencia de pares clave-valor almacenada en memoria) llamado taxi_zone_dictionary que asocia los ID de ubicación con los nombres de los distritos de NYC, a partir de un archivo CSV que contiene todos los barrios de la ciudad de Nueva York. Estos ID corresponden a las columnas pickup_nyct2010_gid y dropoff_nyct2010_gid de la tabla trips.A continuación se muestra, en formato de tabla, un extracto del archivo CSV que va a utilizar. La columna LocationID del archivo se corresponde con las columnas pickup_nyct2010_gid y dropoff_nyct2010_gid de su tabla trips:Ejecute el siguiente comando SQL, que crea un diccionario llamado taxi_zone_dictionary y lo puebla con los datos del archivo CSV almacenado en S3. La URL del archivo es https://datasets-documentation.s3.eu-west-3.amazonaws.com/nyc-taxi/taxi_zone_lookup.csv.
Si se establece LIFETIME en 0, se desactivan las actualizaciones automáticas para evitar tráfico innecesario hacia nuestro bucket de S3. En otros casos, puede que le convenga configurarlo de otra forma. Para obtener más información, consulte Actualización de los datos del diccionario mediante LIFETIME.
Compruebe que ha funcionado. La siguiente consulta debería devolver 265 filas, es decir, una por cada barrio:
5

Ejecutar consultas con el diccionario

Puede usar la función dictGet (o sus variantes) para obtener un valor de un diccionario. Basta con indicar el nombre del diccionario, el valor que desea y la clave (que en nuestro ejemplo es la columna LocationID de taxi_zone_dictionary) para obtener el valor correspondiente. Por ejemplo, la siguiente consulta devuelve el Borough cuyo LocationID es 132 (que corresponde al aeropuerto JFK):
JFK está en Queens. Observe que el tiempo necesario para obtener el valor es prácticamente 0:
Use la función dictHas para comprobar si una clave existe en el diccionario. Por ejemplo, la siguiente consulta devuelve 1 (que en ClickHouse equivale a “true”):
La siguiente consulta devuelve 0 porque 4567 no es un valor de LocationID del diccionario:
Utilice la función dictGet para obtener el nombre de un distrito en una consulta. Por ejemplo:
Esta consulta suma el número de viajes en taxi por distrito que terminan en el aeropuerto de LaGuardia o en el de JFK. El resultado es el siguiente; observe que hay bastantes viajes cuyo barrio de recogida se desconoce:
6

Realizar un JOIN

Por último, escriba algunas consultas que hagan un join de taxi_zone_dictionary con su tabla trips.Comience con un JOIN sencillo que funcione de forma similar a la consulta anterior sobre aeropuertos:
La respuesta es idéntica a la de la consulta con dictGet:
Observe que el resultado de la consulta JOIN anterior es el mismo que el de la consulta previa que usaba dictGetOrDefault (salvo que no se incluyen los valores Unknown). Internamente, ClickHouse está llamando a la función dictGet sobre el diccionario taxi_zone_dictionary, pero la sintaxis JOIN resulta más familiar para los desarrolladores de SQL.
Esta consulta devuelve las filas de los 1000 viajes con el importe de propina más alto y, a continuación, realiza un inner join de cada fila con el diccionario:
Es preferible enumerar solo las columnas que necesita su consulta en lugar de usar SELECT *. Como ClickHouse almacena los datos por columnas, seleccionar menos columnas reduce directamente el volumen de datos que se leen, descomprimen y procesan.

Próximos pasos

Obtenga más información sobre ClickHouse en la siguiente documentación:
Última modificación el 28 de septiembre de 2026