Skip to main content

Visão geral

Aprenda a fazer a ingestão e consultar dados no ClickHouse usando o conjunto de dados de exemplo dos táxis da cidade de Nova York.

Pré-requisitos

Você precisa ter acesso a um serviço do ClickHouse em execução para concluir este tutorial. Para obter instruções, consulte o guia Quick Start.
1

Crie uma nova tabela

O dataset de corridas de táxi da cidade de Nova York contém detalhes sobre milhões de corridas, com colunas como valor da gorjeta, pedágios, tipo de pagamento e muito mais. Crie uma tabela para armazenar esses dados.
  1. Conecte-se ao SQL Console:
    • No ClickHouse Cloud, selecione um serviço no menu suspenso e depois SQL Console no menu de navegação à esquerda.
    • No ClickHouse autogerenciado, conecte-se ao SQL Console em https://_hostname_:8443/play. Consulte o administrador do ClickHouse para obter os detalhes.
  2. Crie a tabela trips a seguir no banco de dados default:
2

Adicione o conjunto de dados

Agora que você criou a tabela, adicione os dados de táxi da cidade de Nova York a partir de arquivos CSV no S3.
  1. O comando a seguir insere ~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:
  2. Aguarde a conclusão do INSERT. O download dos 150 MB de dados pode levar um instante.
  3. Quando a inserção terminar, verifique se funcionou:
    Esta consulta deve retornar 1.999.657 linhas.
3

Analisar os dados

Execute algumas consultas para analisar os dados. Explore os exemplos a seguir ou experimente sua própria consulta SQL.
  • Calcule o valor médio das gorjetas:

  • Calcule o custo médio com base no número de passageiros:

    O passenger_count vai de 0 a 9:

  • 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 pela duração da viagem:

  • Mostre o número de embarques em cada bairro, detalhado por hora do dia:

  1. Recupere corridas com destino aos aeroportos LaGuardia ou JFK:

4

Criar um dicionário

Um dicionário é um mapeamento de pares chave-valor armazenado em memória. Para mais detalhes, consulte DictionariesCrie um Dicionário associado a uma tabela no seu serviço ClickHouse. A tabela e o Dicionário são baseados em um arquivo CSV que contém uma linha para cada bairro da cidade de Nova York.Os bairros são mapeados para os nomes dos cinco distritos da cidade de Nova York (Bronx, Brooklyn, Manhattan, Queens e Staten Island), bem como para o Aeroporto de Newark (EWR).Aqui está um trecho do arquivo CSV que você está usando, em formato de tabela. A coluna LocationID no arquivo corresponde às colunas pickup_nyct2010_gid e dropoff_nyct2010_gid na sua tabela trips:
LocationIDDistritoZonazona_de_serviço
1EWRAeroporto de NewarkEWR
2QueensJamaica BayZona dos distritos
3BronxAllerton/Pelham GardensZona dos distritos
4ManhattanAlphabet CityZona amarela
5Staten IslandArden HeightsZona do distrito
  1. 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 desativa as atualizações automáticas para evitar tráfego desnecessário para o nosso bucket do S3. Em outros casos, talvez seja necessário configurá-lo de outra forma. Para mais detalhes, consulte Atualização dos dados do Dicionário com LIFETIME.
  1. Verifique se deu certo. O comando a seguir deve retornar 265 linhas, ou uma linha para cada bairro:
  2. Use a função dictGet (ou suas variações) para obter um valor de um dicionário. Informe o nome do dicionário, o valor desejado e a chave (que, no nosso exemplo, é a coluna LocationID de taxi_zone_dictionary). Por exemplo, a consulta a seguir retorna o Borough cujo LocationID é 132, que corresponde ao aeroporto JFK):
    JFK fica em Queens. Observe que o tempo para recuperar o valor é praticamente 0:
  3. Use a função dictHas para verificar se uma chave está presente no dicionário. Por exemplo, a consulta a seguir retorna 1 (que significa “true” no ClickHouse):
  4. A consulta a seguir retorna 0 porque 4567 não corresponde a nenhum valor de LocationID no dicionário:
  5. Use a função dictGet para obter o nome de um borough em uma consulta. Por exemplo:
    Esta consulta totaliza o número de corridas de táxi por distrito que terminam no aeroporto LaGuardia ou no JFK. O resultado é semelhante ao seguinte, e observe que há várias corridas em que o bairro de embarque é desconhecido:
5

Faça um join

Escreva algumas consultas que façam o join do taxi_zone_dictionary com a tabela trips.
  1. Comece com um JOIN simples que funciona de maneira semelhante à consulta anterior sobre aeroportos:
    A resposta é idêntica à consulta dictGet:
Observe que a saída da consulta JOIN acima é a mesma da consulta anterior, que usou dictGetOrDefault (exceto porque os valores Unknown não estão incluídos). Nos bastidores, o ClickHouse está chamando a função dictGet para o dicionário taxi_zone_dictionary, mas a sintaxe JOIN é mais familiar para desenvolvedores SQL.
  1. Esta consulta retorna as 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 * com frequência no ClickHouse. Recupere apenas as colunas de que você realmente precisa.

Próximos passos

Saiba mais sobre o ClickHouse com a documentação a seguir:
Last modified on July 2, 2026