Visão geral
Inicie o ClickHouse
Criar uma tabela
Adicione o conjunto de dados
Instale o pg_clickhouse
Conectar pg_clickhouse
Se você estiver usando o console do ClickHouse Cloud para executar SQL, conceda ao usuário administrador do console acesso ao servidor externo:
password.
Agora, adicione a tabela de táxi; basta importar todas as tabelas do banco de dados remoto no 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:
-
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:DefinirLIFETIMEcomo 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:
Esta consulta soma o número de corridas de táxi por borough que terminam em um dos aeroportos, LaGuardia ou JFK. Observe que há várias corridas em que o bairro de origem é desconhecido.
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 consultaJOINacima é a mesma da consultadictGetacima (exceto porque os valoresUnknownnão estão incluídos). Nos bastidores, o ClickHouse está, na verdade, chamando a funçãodictGetpara o dicionáriotaxi_zone_dictionary, mas a sintaxeJOINé 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.