Visão geral
Inicie o ClickHouse
Criar uma tabela
Adicione o conjunto de dados
Instale o pg_clickhouse
Conectar pg_clickhouse
password.
Agora, adicione a tabela de táxi; basta importar todas as tabelas do banco de dados remoto
ClickHouse para um schema do Postgres:
\det+ para vê-la:
\d para mostrar todas as colunas:
COUNT(), para que ela seja executada no ClickHouse e
retorne apenas uma única linha ao Postgres. Use EXPLAIN para ver isso:
Analise os dados
-
Calcule a média do valor da gorjeta:
-
Calcule o custo médio com base no número de passageiros:
-
Calcule o número diário de embarques por bairro:
-
Calcule a duração de cada viagem em minutos e, em seguida, agrupe os resultados por
pela duração da viagem:
-
Mostre o número de embarques em cada bairro, separado por hora do dia:
-
Defina o fuso horário de exibição para Nova York e recupere corridas com destino aos aeroportos LaGuardia ou JFK:
Crie um dicionário
LocationID no arquivo é mapeada para as colunas pickup_nyct2010_gid e
dropoff_nyct2010_gid na sua tabela de viagens:
| 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 |
-
Ainda no Postgres, use a função
clickhouse_raw_querypara criar um [dicionário] do ClickHouse chamadotaxi_zone_dictionarye preencher o dicionário com base no arquivo CSV no S3:
Definir
LIFETIME como 0 desativa as atualizações automáticas para evitar
tráfego desnecessário no nosso bucket do S3. Em outros casos, talvez você o configure
de outra forma. Para mais detalhes, consulte Atualização de dados de dicionário usando LIFETIME.- Agora importe-o:
- Confirme se podemos consultá-la:
- Excelente. Agora use a função
dictGetpara recuperar o nome de um distrito em uma consulta. A consulta a seguir soma o número de corridas de táxi por distrito que terminam no aeroporto LaGuardia ou no JFK:
Faça um JOIN
taxi_zone_dictionary e sua
tabela trips.
-
Comece com um
JOINsimples que funciona de forma semelhante à consulta de aeroporto anterior:
Observe que a saída da consulta
JOIN acima é a mesma da consulta
dictGet acima (exceto porque os valores Unknown não estão
incluídos). Nos bastidores, o ClickHouse está, na verdade, chamando a função
dictGet para o dicionário taxi_zone_dictionary, mas a sintaxe JOIN é
mais familiar para desenvolvedores SQL.-
Esta consulta retorna as linhas das 1000 viagens com o maior valor
de gorjeta e, em seguida, faz um inner join entre cada linha e o dicionário:
Em geral, evitamos usar
SELECT * no PostgreSQL e no ClickHouse. Você
deve recuperar apenas as colunas de que realmente precisa.