Visão geral
Inicie o ClickHouse
Criar uma tabela
Adicione o conjunto de dados
Instale pg_clickhouse
Conectar o pg_clickhouse
password.
Agora, adicione a tabela de táxi: basta importar todas as tabelas do banco de dados ClickHouse remoto para um schema do Postgres:
\det+ para visualizá-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 o valor médio da gorjeta:
-
Calcule o custo médio com base no número de passageiros:
-
Calcule o número diário de coletas por bairro:
-
Calcule a duração de cada viagem em minutos e, em seguida, agrupe os resultados por
duração da viagem:
-
Mostre o número de embarques em cada bairro, detalhado por hora do dia:
-
Defina o fuso horário de exibição para Nova York e obtenha corridas com destino aos aeroportos
LaGuardia ou JFK:
Criar um Dicionário
LocationID no arquivo corresponde às 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 a partir do arquivo CSV no S3:
Definir
LIFETIME como 0 desativa as atualizações automáticas para evitar
tráfego desnecessário para nosso bucket do S3. Em outros casos, você pode configurá-lo
de outra forma. Para mais detalhes, consulte Atualização de dados de dicionário usando
LIFETIME.- Agora importe-o:
- Confirme se conseguimos consultá-lo:
- Excelente. Agora use a função
dictGetpara obter o nome de um borough em uma consulta. Esta consulta soma o número de corridas de táxi por borough que terminam no aeroporto LaGuardia ou no JFK:
Faça um join
taxi_zone_dictionary e a tabela trips.
-
Comece com um
JOINsimples que funciona de forma semelhante à consulta anterior sobre aeroportos:
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 de cada linha com o dicionário:
Em geral, evitamos usar
SELECT * no PostgreSQL e no ClickHouse. Você
deve recuperar apenas as colunas de que realmente precisa.