Descripción general
Este tutorial sigue el [tutorial de ClickHouse], pero ejecuta todas las consultas a través de pg_clickhouse. Elija cómo desea configurarpg_clickhouse:
- Desde la consola si utiliza ClickHouse Managed Postgres.
- Desde PSQL si instala y configura la extensión usted mismo.
Iniciar ClickHouse
Primero, cree una base de datos en ClickHouse si aún no tiene una. Una forma rápida de empezar es usar la imagen de Docker:Crear una tabla
Tomemos como referencia el [tutorial de ClickHouse] para crear una base de datos sencilla con el conjunto de datos de taxis de la ciudad de Nueva York:Añade el conjunto de datos
Y luego importa los datos:Desde la consola
Si utiliza ClickHouse Managed Postgres, puede configurarpg_clickhouse y conectarse a un servicio de ClickHouse desde la consola de ClickHouse Cloud.
Abra su servicio de Managed Postgres, seleccione Configuración y busque la
sección Integración de ClickHouse. Haga clic en Habilitar pg_clickhouse.
En el formulario de configuración, introduzca un nombre para el servidor externo. Seleccione el servicio de ClickHouse,
la base de datos en ClickHouse y el usuario que se utilizarán para la conexión. Introduzca la
contraseña de ClickHouse y, a continuación, seleccione la base de datos de Postgres y el esquema de destino en el que se
importarán las tablas de ClickHouse. Haga clic en Conectar para crear el servidor externo
e importar el esquema.
Cuando finalice la configuración, la consola mostrará una confirmación y el servidor externo
aparecerá en la lista de servidores.
Ahora puede abrir la consola SQL de Postgres y consultar las tablas importadas:
taxi en ClickHouse
e impórtala en el esquema de destino taxi.
Desde PSQL
Instalar pg_clickhouse
Compila e instala pg_clickhouse desde PGXN o GitHub. O bien, inicia un contenedor de Docker con la [imagen de pg_clickhouse], que simplemente añade pg_clickhouse a la [imagen de Postgres] de Docker:Conectar pg_clickhouse
Ahora, conéctese a Postgres: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
Ejecuta algunas consultas para analizar los datos. Revisa los siguientes ejemplos o prueba tu propia consulta SQL.-
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
Crea un diccionario asociado a una tabla de tu 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 se corresponden con los nombres de los cinco distritos de la ciudad de Nueva York (Bronx, Brooklyn, Manhattan, Queens y Staten Island), así como con el Aeropuerto de Newark (EWR). Aquí tienes un fragmento del archivo CSV que estás usando, en formato de tabla. La columnaLocationID 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
Escribe algunas consultas que hagan unJOIN 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.