Descripción general
Iniciar ClickHouse
Crear una tabla
Añade el conjunto de datos
Instalar pg_clickhouse
Conectar pg_clickhouse
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:
| 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, usa la función
clickhouse_raw_querypara crear un [Diccionario] de ClickHouse llamadotaxi_zone_dictionaryy rellenarlo a partir del archivo CSV en S3:
Establecer
LIFETIME en 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:
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 consulta
JOIN anterior es la misma que la de la
consulta dictGet anterior (excepto que no se incluyen los valores Unknown).
Internamente, ClickHouse está llamando 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 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.