Analytics em tempo realArmazenamento de dadosCloudOSS
Visão geral
Pré-requisitos
1
Crie uma nova tabela
O conjunto de dados de táxis da cidade de Nova York contém informações sobre milhões de corridas, incluindo colunas como valor da gorjeta, pedágios, tipo de pagamento e muito mais. Crie uma tabela para armazenar esses dados.
-
Conecte-se ao console SQL:
- No ClickHouse Cloud, selecione um serviço no menu suspenso e, em seguida, SQL Console no menu de navegação à esquerda.
- No ClickHouse autogerenciado, conecte-se ao console SQL em
https://_hostname_:8443/play. Consulte o administrador do ClickHouse para obter mais detalhes.
-
Crie a seguinte tabela
tripsno banco de dadosdefault:
2
Adicione o conjunto de dados
Agora que você criou uma tabela, adicione os dados de táxis 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 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 alguns instantes. -
Quando a inserção terminar, verifique se ela foi concluída com êxito:
Esta consulta deve retornar 1.999.657 linhas.
3
Analise 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:
Resultado esperado
-
Calcule o custo médio com base no número de passageiros:
Saída esperada
O valor de
passenger_countvaria de 0 a 9: -
Calcule o número diário de corridas iniciadas por bairro:
Saída esperada
-
Calcule a duração de cada viagem em minutos e agrupe os resultados por duração da viagem:
Resultado esperado
-
Mostre o número de embarques em cada bairro, detalhado por hora do dia:
Saída esperada
-
Recupere as corridas para os aeroportos LaGuardia ou JFK:
Saída esperada
4
Crie um Dicionário
Um dicionário é um mapeamento de pares chave-valor armazenado em memória. Para mais detalhes, consulte DicionáriosCrie 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 de Nova York (Bronx, Brooklyn, Manhattan, Queens e Staten Island), além do Aeroporto de Newark (EWR).Veja a seguir 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_dictionarye o preenche com dados do arquivo CSV armazenado 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 no 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.-
Verifique se funcionou. O comando a seguir deve retornar 265 linhas, uma para cada bairro:
-
Use a função
dictGet(ou suas variações) para recuperar um valor de um dicionário. Informe o nome do dicionário, o valor desejado e a chave (que, neste exemplo, é a colunaLocationIDdetaxi_zone_dictionary). Por exemplo, a consulta a seguir retorna oBoroughcorrespondente aoLocationID132, que é o 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 equivale a “true” no ClickHouse): -
A consulta a seguir retorna 0 porque 4567 não é um valor de
LocationIDno Dicionário: -
Use a função
dictGetpara 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 JFK. O resultado é semelhante ao seguinte. Observe que há várias corridas em que o bairro de embarque é desconhecido:
5
Executar um join
Escreva algumas consultas que façam uma junção entre o
taxi_zone_dictionary e sua tabela trips.-
Comece com um
JOINsimples que funciona de modo semelhante à consulta anterior sobre aeroportos:A resposta é idêntica à da consulta comdictGet:
Observe que a saída da consulta
JOIN acima é igual à da consulta anterior que usava dictGetOrDefault (exceto pelos valores Unknown, que não estão incluídos). Internamente, o ClickHouse chama 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 1.000 viagens com os maiores valores de gorjeta e, em seguida, realiza uma junção interna 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óximas etapas
- 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 muitas outras.
- Visualize dados no ClickHouse: Conecte sua ferramenta favorita de UI/BI ao ClickHouse.
- Referência de SQL: Explore as funções SQL disponíveis no ClickHouse para transformar, processar e analisar dados.