Skip to main content
Neste tutorial, você vai explorar como o ClickHouse pode ser usado para executar consultas analíticas em grandes volumes de dados. Você também verá como usar um dicionário para enriquecer os dados e escrever consultas com junções.

Pré-requisitos

Para este tutorial, você vai precisar de:
1

Crie a tabela

O conjunto de dados usado neste tutorial é o de táxis da cidade de Nova York, que contém detalhes sobre milhões de corridas de táxi, com colunas como valor da gorjeta, pedágios, tipo de pagamento e muito mais.
  1. Selecione SQL Console no menu à esquerda
  2. Clique na aba + ao lado do ícone de início para criar uma nova consulta
  3. No editor SQL, digite a consulta abaixo e clique em Run:
Expandable
2

Insira os dados

Agora que você criou uma tabela, adicione os dados de táxi da cidade de Nova York a partir de arquivos CSV no S3.O comando a seguir insere cerca de 2.000.000 de linhas na sua tabela trips a partir de dois arquivos diferentes no S3: trips_1.tsv.gz e trips_2.tsv.gz:
Expandable
Aguarde até que a inserção dos dados seja concluída. Cerca de 150 MB de dados serão baixados. Quando a inserção terminar, verifique o número de linhas na tabela trips:
O resultado deve ter 1.999.657 linhas
3

Analise os dados

Com os dados carregados, você pode executar algumas consultas para analisá-los.
  • Calcule o valor médio das gorjetas:
  • 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 corrida em minutos e, em seguida, agrupe os resultados por duração:
  • Mostre o número de embarques em cada bairro, discriminado por hora do dia:
4

Criar um dicionário

Em seguida, você criará um dicionário (um mapeamento de pares chave-valor armazenado em memória) chamado taxi_zone_dictionary para mapear IDs de localização para nomes de distritos (boroughs) de NYC, com base em um arquivo CSV que contém todos os bairros da cidade de Nova York. Esses IDs correspondem às colunas pickup_nyct2010_gid e dropoff_nyct2010_gid na tabela de corridas.Veja abaixo um trecho do arquivo CSV que você está usando, em formato de tabela. A coluna LocationID do arquivo corresponde às colunas pickup_nyct2010_gid e dropoff_nyct2010_gid da sua tabela trips:Execute o comando SQL a seguir, que cria um dicionário chamado taxi_zone_dictionary e o preenche com os dados do arquivo CSV no S3. A URL do arquivo é https://datasets-documentation.s3.eu-west-3.amazonaws.com/nyc-taxi/taxi_zone_lookup.csv.
Definir LIFETIME como 0 desabilita as atualizações automáticas, evitando tráfego desnecessário para o nosso bucket do S3. Em outros cenários, talvez seja conveniente configurá-lo de outra forma. Para mais detalhes, consulte Atualização de dados de dicionário usando LIFETIME.
Verifique se funcionou. A consulta a seguir deve retornar 265 linhas, ou seja, uma linha para cada bairro:
5

Execute consultas usando o dicionário

Você pode usar a função dictGet (ou suas variações) para obter um valor de um dicionário. Basta informar o nome do dicionário, o valor desejado e a chave (que, no nosso exemplo, é a coluna LocationID de taxi_zone_dictionary) para receber o valor correspondente. Por exemplo, a consulta a seguir retorna o Borough cujo LocationID é 132 (que corresponde ao aeroporto JFK):
O JFK fica no Queens. Observe que o tempo para recuperar o valor é praticamente zero:
Use a função dictHas para verificar se uma chave existe no dicionário. Por exemplo, a consulta a seguir retorna 1 (que equivale a “true” no ClickHouse):
A consulta a seguir retorna 0 porque 4567 não é um valor de LocationID no dicionário:
Use a função dictGet para obter o nome de um distrito em uma consulta. Por exemplo:
Esta consulta soma o número de corridas de táxi por distrito que terminam no aeroporto LaGuardia ou no JFK. O resultado é semelhante ao seguinte. Observe que há muitas corridas em que o bairro de embarque é desconhecido:
6

Faça uma junção

Por fim, escreva algumas consultas que façam a junção do taxi_zone_dictionary com a sua tabela trips.Comece com um JOIN simples que funcione de forma semelhante à consulta sobre aeroportos mostrada anteriormente:
A resposta é idêntica à da consulta com dictGet:
Observe que o resultado da consulta JOIN acima é o mesmo da consulta anterior, que usava dictGetOrDefault (exceto pelo fato de que os valores Unknown não sã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 corridas com os maiores valores de gorjeta e, em seguida, realiza uma junção interna de cada linha com o dicionário:
Prefira listar apenas as colunas de que sua consulta precisa, em vez de usar SELECT *. Como o ClickHouse armazena os dados por coluna, selecionar menos colunas reduz diretamente o volume de dados lidos, descomprimidos e processados.

Próximos passos

Saiba mais sobre o ClickHouse na documentação a seguir:
Última modificação em 28 de setembro de 2026