Descripción general
Iniciar ClickHouse
Crear una tabla
Añade el conjunto de datos
Instalar pg_clickhouse
Conectar pg_clickhouse
Si usa la consola de ClickHouse Cloud para ejecutar SQL, conceda al usuario administrador de la consola acceso al servidor externo:
password.
Ahora, agrega la tabla taxi; simplemente importa todas las tablas de la base de datos remota de
ClickHouse a un esquema de Postgres:
\det+ para verla:
\d para mostrar todas las columnas:
COUNT(), por lo que se ejecuta en ClickHouse y solo
devuelve una única fila a Postgres. Usa EXPLAIN para verlo:
Analiza los datos
-
Calcula el importe medio de la propina:
-
Calcule el coste medio en función del número de pasajeros:
-
Calcula el número diario de recogidas por barrio:
-
Calcula la duración de cada viaje en minutos y luego agrupa los resultados según la
duración del viaje:
-
Muestra el número de recogidas en cada barrio, desglosado por hora del día:
-
Configura la zona horaria de visualización para Nueva York y consulta los viajes a los aeropuertos
LaGuardia o JFK:
Crear un diccionario
LocationID del archivo se corresponde con las columnas pickup_nyct2010_gid y
dropoff_nyct2010_gid de tu tabla de viajes:
-
Aún en Postgres, usa la función
clickhouse_raw_querypara crear un [Diccionario] de ClickHouse llamadotaxi_zone_dictionaryy rellenarlo a partir del archivo CSV en S3:EstablecerLIFETIMEen 0 desactiva las actualizaciones automáticas para evitar tráfico innecesario hacia nuestro bucket de S3. En otros casos, puede que quieras configurarlo de otra forma. Para obtener más información, consulta Actualización de datos de diccionario con LIFETIME.- Ahora impórtalo:
- Confirma que se puede consultar:
- Excelente. Ahora utiliza la función
dictGetpara obtener el nombre de un distrito en una consulta. Esta consulta suma el número de viajes en taxi por distrito que terminan en el aeropuerto de LaGuardia o en el JFK:
Esta consulta suma el número de viajes en taxi por distrito que terminan en los aeropuertos LaGuardia o JFK. Fíjate en que hay bastantes viajes en los que se desconoce el barrio de recogida.
Realiza un JOIN
JOIN entre taxi_zone_dictionary y tu tabla
trips.
-
Empieza con un
JOINsimple que funcione de forma similar a la consulta anterior sobre aeropuertos:Observa que la salida de la consultaJOINanterior es la misma que la de la consultadictGetanterior (excepto que no se incluyen los valoresUnknown). Internamente, ClickHouse está llamando a la funcióndictGetpara el diccionariotaxi_zone_dictionary, pero la sintaxisJOINresulta más familiar para los desarrolladores de SQL. -
Esta consulta devuelve las filas correspondientes a los 1000 viajes con la
propina más alta y luego realiza un INNER JOIN de cada fila con el diccionario:
Por lo general, evitamos usar
SELECT * en PostgreSQL y ClickHouse. Solo
debes recuperar las columnas que realmente necesitas.