Descripción general
Requisitos previos
Crear una tabla nueva
El conjunto de datos de taxis de la ciudad de Nueva York contiene información sobre millones de trayectos en taxi, con columnas como el importe de la propina, los peajes, el tipo de pago y más. 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 el menú de navegación de la 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:
Añade el conjunto de datos
Ahora que has creado una tabla, añade los datos de taxis de la ciudad de Nueva York desde archivos CSV en S3.-
El siguiente comando inserta ~2,000,000 filas en tu tabla
tripsdesde dos archivos diferentes en S3:trips_1.tsv.gzytrips_2.tsv.gz: -
Espera a que termine el
INSERT. La descarga de los 150 MB de datos puede tardar un momento. -
Cuando finalice la inserción, verifica que haya funcionado:
Esta consulta debería devolver 1,999,657 filas.
Analizar los datos
Ejecute algunas consultas para analizar los datos. Explore los siguientes ejemplos o pruebe su propia consulta SQL.-
Calcula el promedio de la propina:
Resultado esperado
-
Calcula el costo promedio según el número de pasajeros:
Resultado esperado
El valor de
passenger_countva de 0 a 9: -
Calcula el número diario de recogidas por barrio:
Resultado esperado
-
Calcula la duración de cada viaje en minutos y, a continuación, agrupa los resultados por la duración del viaje:
Resultado esperado
-
Muestra el número de recogidas en cada barrio, desglosado por hora del día:
Resultado esperado
-
Recupere los viajes a los aeropuertos LaGuardia o JFK:
Salida esperada
Crear un diccionario
Un diccionario es una correspondencia de pares clave-valor almacenados en memoria. Para más detalles, consulte DictionariesCree 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 barrios están asociados a los nombres de los cinco distritos de la ciudad de Nueva York (Bronx, Brooklyn, Manhattan, Queens y Staten Island), así como al aeropuerto de Newark (EWR).A continuación se muestra un fragmento del archivo CSV que estás utilizando en formato de tabla. La columnaLocationID del archivo se corresponde con las columnas pickup_nyct2010_gid y dropoff_nyct2010_gid de tu tabla trips:| LocationID | Distrito | Zona | service_zone |
|---|---|---|---|
| 1 | EWR | Aeropuerto de Newark | EWR |
| 2 | Queens | Jamaica Bay | Zona de distrito |
| 3 | Bronx | Allerton/Pelham Gardens | Zona de distrito |
| 4 | Manhattan | Alphabet City | Yellow Zone |
| 5 | Staten Island | Arden Heights | Boro Zone |
- Ejecute el siguiente comando SQL, que crea un Diccionario llamado
taxi_zone_dictionaryy lo carga desde el archivo CSV en S3. La URL del archivo eshttps://datasets-documentation.s3.eu-west-3.amazonaws.com/nyc-taxi/taxi_zone_lookup.csv.
Configurar
LIFETIME en 0 desactiva las actualizaciones automáticas para evitar tráfico innecesario hacia nuestro bucket de S3. En otros casos, puede que lo configure de otra manera. Para obtener más información, consulte Actualización de los datos del diccionario con LIFETIME.-
Verifique que haya funcionado. Lo siguiente debería devolver 265 filas, o una fila por cada barrio:
-
Usa la función
dictGet(o sus variantes) para obtener un valor de un diccionario. Debes indicar 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 elBoroughcuyoLocationIDes 132, que corresponde al aeropuerto JFK):JFK está en Queens. Observa que el tiempo para recuperar el valor es prácticamente 0: -
Utiliza la función
dictHaspara comprobar si una clave está presente en el diccionario. Por ejemplo, la siguiente consulta devuelve1(que equivale a “true” en ClickHouse): -
La siguiente consulta devuelve 0 porque 4567 no es un valor de
LocationIDdel diccionario: -
Utilice la función
dictGetpara 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 los aeropuertos de LaGuardia o JFK. El resultado es como el siguiente, y fíjate en que hay bastantes viajes en los que se desconoce el barrio de recogida:
Realizar un join
Escribe algunas consultas que haganJOIN entre taxi_zone_dictionary y tu tabla trips.-
Empieza con un
JOINsimple que funciona de forma similar a la consulta anterior sobre aeropuertos:La respuesta es idéntica a la consultadictGet:
Ten en cuenta que la salida de la consulta
JOIN anterior es la misma que la de la consulta previa que usaba dictGetOrDefault (salvo que no se incluyen los valores Unknown). Internamente, ClickHouse en realidad 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 correspondientes a 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:
En general, evitamos usar
SELECT * con frecuencia en ClickHouse. Debes recuperar solo las columnas que realmente necesitas.Siguientes pasos
- Introducción a los índices primarios en ClickHouse: Aprenda cómo ClickHouse usa índices primarios dispersos para localizar de forma eficiente los datos relevantes durante las consultas.
- Integre una fuente de datos externa: Revise las opciones de integración de fuentes de datos, incluidos archivos, Kafka, PostgreSQL, canalizaciones de datos y muchas más.
- Visualice datos en ClickHouse: Conecte su herramienta de UI/BI favorita a ClickHouse.
- Referencia SQL: Explore las funciones SQL disponibles en ClickHouse para transformar, procesar y analizar datos.