Descripción general
Inicia ClickHouse
Crear una tabla
Añadir el conjunto de datos
Instalar pg_clickhouse
Conectar pg_clickhouse
password.
Ahora, agrega la tabla de taxis; 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(), a ClickHouse, por lo que se ejecuta allí y solo
devuelve una única fila a Postgres. Usa EXPLAIN para verlo:
Analizar los datos
-
Calcule el importe medio de la propina:
-
Calcula el costo promedio según el número de pasajeros:
-
Calcula cuántas recogidas diarias hay por barrio:
-
Calcula la duración de cada viaje en minutos y luego agrupa los resultados por
la duración del viaje:
-
Muestra la cantidad de recogidas en cada barrio, desglosada por hora del día:
-
Establece la zona horaria de visualización en Nueva York y recupera los viajes a los
aeropuertos LaGuardia o JFK:
Crear un diccionario
LocationID del archivo se asigna a las columnas pickup_nyct2010_gid y
dropoff_nyct2010_gid de su tabla de viajes:
| LocationID | Borough | Zone | service_zone |
|---|---|---|---|
| 1 | EWR | Newark Airport | EWR |
| 2 | Queens | Jamaica Bay | Boro Zone |
| 3 | Bronx | Allerton/Pelham Gardens | Boro Zone |
| 4 | Manhattan | Alphabet City | Yellow Zone |
| 5 | Staten Island | Arden Heights | Boro Zone |
-
Aún en Postgres, use la función
clickhouse_raw_querypara crear un [diccionario] de ClickHouse llamadotaxi_zone_dictionaryy cargar el diccionario desde el archivo CSV en S3:
Establecer
LIFETIME en 0 desactiva las actualizaciones automáticas para evitar
tráfico innecesario a nuestro bucket de S3. En otros casos, puede configurarlo
de otra manera. Para obtener más información, consulte Actualizar los datos del diccionario mediante
LIFETIME.- Ahora impórtelo:
- Comprueba que se puede consultar:
- Excelente. Ahora usa 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 LaGuardia o JFK:
Realizar un JOIN
JOIN entre taxi_zone_dictionary y la
tabla trips.
-
Comience con un
JOINsimple que funcione de forma similar a la consulta anterior sobre aeropuertos:
Tenga en cuenta que la salida de la consulta
JOIN anterior es la misma que la de la consulta
dictGet anterior (excepto que no se incluyen los valores Unknown). Entre
bastidores, 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 de los 1000 viajes con el importe de propina
más alto y, a continuación, realiza un JOIN interno entre cada fila y el diccionario:
En general, evitamos usar
SELECT * en PostgreSQL y ClickHouse. Solo
debes recuperar las columnas que realmente necesitas.