Visão geral
Pré-requisitos
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.-
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.
-
Crie a tabela
tripsa seguir no banco de dadosdefault:
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.-
O comando a seguir insere ~2.000.000 de linhas na sua tabela
tripsa partir de dois arquivos diferentes no S3:trips_1.tsv.gzetrips_2.tsv.gz: -
Aguarde a conclusão do
INSERT. O download dos 150 MB de dados pode levar um instante. -
Quando a inserção terminar, verifique se funcionou:
Esta consulta deve retornar 1.999.657 linhas.
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:
Saída esperada
-
Calcule o custo médio com base no número de passageiros:
Saída esperada
O
passenger_countvai de 0 a 9: -
Calcule o número diário de coletas por bairro:
Saída esperada
-
Calcule a duração de cada viagem em minutos e, em seguida, agrupe os resultados pela duração da viagem:
Saída esperada
-
Mostre o número de embarques em cada bairro, detalhado por hora do dia:
Saída esperada
-
Recupere corridas com destino aos aeroportos LaGuardia ou JFK:
Resultado esperado
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 colunaLocationID no arquivo corresponde às colunas pickup_nyct2010_gid e dropoff_nyct2010_gid na sua tabela trips:| LocationID | Distrito | Zona | zona_de_serviço |
|---|---|---|---|
| 1 | EWR | Aeroporto de Newark | EWR |
| 2 | Queens | Jamaica Bay | Zona dos distritos |
| 3 | Bronx | Allerton/Pelham Gardens | Zona dos distritos |
| 4 | Manhattan | Alphabet City | Zona amarela |
| 5 | Staten Island | Arden Heights | Zona do distrito |
- Execute o comando SQL a seguir, que cria um Dicionário chamado
taxi_zone_dictionarye 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.-
Verifique se deu certo. O comando a seguir deve retornar 265 linhas, ou uma linha para cada bairro:
-
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 colunaLocationIDdetaxi_zone_dictionary). Por exemplo, a consulta a seguir retorna oBoroughcujoLocationIDé 132, que corresponde ao aeroporto JFK):JFK fica em Queens. Observe que o tempo para recuperar o valor é praticamente 0: -
Use a função
dictHaspara verificar se uma chave está presente no dicionário. Por exemplo, a consulta a seguir retorna1(que significa “true” no ClickHouse): -
A consulta a seguir retorna 0 porque 4567 não corresponde a nenhum valor de
LocationIDno dicionário: -
Use a função
dictGetpara 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:
Faça um join
Escreva algumas consultas que façam o join dotaxi_zone_dictionary com a tabela trips.-
Comece com um
JOINsimples que funciona de maneira semelhante à consulta anterior sobre aeroportos:A resposta é idêntica à consultadictGet:
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.- 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
- Introdução aos índices primários no ClickHouse: Saiba como o ClickHouse usa índices primários esparsos para localizar dados relevantes com eficiência durante as consultas.
- Integre uma fonte de dados externa: Confira as opções de integração de fontes de dados, incluindo arquivos, Kafka, PostgreSQL, pipelines de dados e muito mais.
- Visualize dados no ClickHouse: Conecte sua ferramenta de UI/BI preferida ao ClickHouse.
- Referência SQL: Navegue pelas funções SQL disponíveis no ClickHouse para transformar, processar e analisar dados.