Analítica en tiempo realAlmacenamiento de datosCloudOSS
Descripción general
Requisitos previos
1
Crear una nueva tabla
El conjunto de datos de taxis de la ciudad de Nueva York contiene información sobre millones de trayectos en taxi, incluidas columnas como el importe de la propina, los peajes, el tipo de pago y otras. Cree una tabla para almacenar estos datos.
-
Conéctese a la consola SQL:
- En ClickHouse Cloud, seleccione un servicio en el menú desplegable y, a continuación, SQL Console en la barra de navegación izquierda.
- En ClickHouse autogestionado, conéctese a la consola SQL en
https://_hostname_:8443/play. Consulte los detalles con su administrador de ClickHouse.
-
Cree la siguiente tabla
tripsen la base de datosdefault:
2
Añade el conjunto de datos
Ahora que ha creado una tabla, añada los datos de taxis de la ciudad de Nueva York desde archivos CSV en S3.
-
El siguiente comando inserta aproximadamente 2.000.000 de filas en su tabla
tripsa partir de dos archivos diferentes en S3:trips_1.tsv.gzytrips_2.tsv.gz: -
Espere a que finalice el
INSERT. La descarga de los 150 MB de datos puede tardar unos instantes. -
Cuando finalice la inserción, compruebe que se haya realizado correctamente:
Esta consulta debería devolver 1.999.657 filas.
3
Analice los datos
Ejecute algunas consultas para analizar los datos. Explore los siguientes ejemplos o pruebe con su propia consulta SQL.
-
Calcule el importe medio de las propinas:
Resultado esperado
-
Calcule el coste medio en función del número de pasajeros:
Resultado esperado
El valor de
passenger_countva de 0 a 9: -
Calcule el número diario de recogidas por barrio:
Resultado esperado
-
Calcula la duración de cada viaje en minutos y agrupa los resultados por duración:
Resultado esperado
-
Muestra el número de recogidas en cada barrio, desglosado por hora del día:
Salida esperada
-
Obtenga viajes a los aeropuertos LaGuardia o JFK:
Resultado esperado
4
Crear un diccionario
Un diccionario es una correspondencia de pares clave-valor almacenada en memoria. Para más detalles, consulte DiccionariosCree un diccionario asociado a una tabla en su servicio de ClickHouse.
La tabla y el diccionario se basan en un archivo CSV que contiene una fila por cada barrio de la ciudad de Nueva York.Los neighborhoods se corresponden con los nombres de los cinco boroughs de la ciudad de Nueva York (Bronx, Brooklyn, Manhattan, Queens y Staten Island), además del aeropuerto de Newark (EWR).A continuación se muestra, en formato de tabla, un extracto del archivo CSV que está utilizando. 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 denominado
taxi_zone_dictionaryy lo puebla a partir del archivo CSV almacenado en S3. La URL del archivo eshttps://datasets-documentation.s3.eu-west-3.amazonaws.com/nyc-taxi/taxi_zone_lookup.csv.
Establecer
LIFETIME en 0 desactiva las actualizaciones automáticas para evitar tráfico innecesario hacia nuestro bucket de S3. En otros casos, puede configurarlo de otra forma. Para obtener más información, consulte Actualización de datos de diccionario mediante LIFETIME.-
Verifica que haya funcionado. Lo siguiente debería devolver 265 filas, una por cada barrio:
-
Usa la función
dictGet(o sus variantes) para obtener un valor de un diccionario. Debes proporcionar el nombre del diccionario, el valor que quieres obtener y la clave (que, en nuestro ejemplo, es la columnaLocationIDdetaxi_zone_dictionary). Por ejemplo, la siguiente consulta devuelve elBoroughcorrespondiente alLocationID132, que corresponde al aeropuerto JFK):JFK está en Queens. Observe que el tiempo de recuperación del valor es prácticamente 0: -
Use la función
dictHaspara comprobar si una clave está presente en el diccionario. Por ejemplo, la siguiente consulta devuelve1(que equivale a “verdadero” en ClickHouse): -
La siguiente consulta devuelve 0 porque 4567 no es un valor de
LocationIDen el diccionario: -
Utiliza la función
dictGetpara obtener el nombre de un distrito en una consulta. Por ejemplo:Esta consulta calcula el número de trayectos en taxi por distrito que terminan en el aeropuerto de LaGuardia o en el JFK. El resultado es el siguiente; observe que hay bastantes viajes cuyo barrio de recogida se desconoce:
5
Realizar un join
Escriba algunas consultas que unan
taxi_zone_dictionary con su tabla trips.-
Comience con un
JOINsencillo que funcione de forma similar a la consulta anterior sobre aeropuertos:La respuesta es idéntica a la de la consultadictGet:
Tenga en cuenta que la salida de la consulta
JOIN anterior es la misma que la de la consulta precedente, que utilizaba dictGetOrDefault (salvo que no incluye los valores Unknown). Internamente, ClickHouse llama a la función dictGet para 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 una unión interna de cada fila con el diccionario:
En general, evitamos usar
SELECT * con frecuencia en ClickHouse. Recupere solo las columnas que realmente necesite.Próximos pasos
- Introducción a los índices primarios en ClickHouse: Aprenda cómo ClickHouse utiliza índices primarios dispersos para localizar eficazmente los datos relevantes durante las consultas.
- Integre una fuente de datos externa: Consulte las opciones de integración de fuentes de datos, incluidos archivos, Kafka, PostgreSQL, canalizaciones de datos y muchas otras.
- Visualice datos en ClickHouse: Conecte su herramienta de UI/BI preferida a ClickHouse.
- Referencia de SQL: Explore las funciones SQL disponibles en ClickHouse para transformar, procesar y analizar datos.