Pular para o conteúdo principal
Neste tutorial, você vai inserir 28 milhões de linhas do Hacker News em uma tabela do ClickHouse usando os formatos CSV e Parquet e executar algumas consultas simples para explorar os dados.

CSV

1

Baixar CSV

Uma versão CSV do conjunto de dados pode ser baixada do nosso bucket do S3 público ou com a execução deste comando:
Com 4,6 GB e 28 milhões de linhas, este arquivo comprimido deve levar de 5 a 10 minutos para baixar.
2

Faça uma amostragem dos dados

clickhouse-local permite processar arquivos locais rapidamente sem precisar implantar e configurar o servidor ClickHouse.Antes de armazenar qualquer dado no ClickHouse, vamos fazer uma amostragem do arquivo usando o clickhouse-local. No console, execute:
Em seguida, execute o seguinte comando para examinar os dados:
Query
Response
Esse comando tem vários recursos sutis. O operador file permite ler o arquivo a partir de um disco local, especificando apenas o formato CSVWithNames. O mais importante é que o esquema é inferido automaticamente a partir do conteúdo do arquivo. Observe também como o clickhouse-local consegue ler o arquivo comprimido, inferindo o formato gzip pela extensão. O formato Vertical é usado para facilitar a visualização dos dados de cada coluna.
3

Carregue os dados com inferência de esquema

A ferramenta mais simples e poderosa para carregar dados é o clickhouse-client: um cliente nativo de linha de comando completo. Para carregar dados, você pode mais uma vez usar a inferência de esquema, deixando que o ClickHouse determine os tipos das colunas.Execute o comando abaixo para criar uma tabela e inserir os dados diretamente do arquivo CSV remoto, acessando seu conteúdo por meio da função url. O esquema é inferido automaticamente:
Isso cria uma tabela vazia usando o esquema inferido a partir dos dados. O comando DESCRIBE TABLE nos permite entender quais tipos foram atribuídos.
Query
Response
Para inserir os dados nesta tabela, use o comando INSERT INTO, SELECT. Com a função url, os dados serão lidos diretamente da URL:
Você inseriu 28 milhões de linhas no ClickHouse com um único comando!
4

Explore os dados

Obtenha uma amostra das histórias do Hacker News e de colunas específicas executando a consulta a seguir:
Query
Response
Embora a inferência de esquema seja uma ótima ferramenta para a exploração inicial dos dados, ela funciona com base no melhor esforço e não substitui, no longo prazo, a definição de um esquema ideal para seus dados.
5

Defina um esquema

Uma otimização imediata e óbvia é definir um tipo para cada campo. Além de declarar o campo de tempo como do tipo DateTime, definimos um tipo apropriado para cada um dos campos abaixo após remover o conjunto de dados existente. No ClickHouse, o id da chave primária dos dados é definido por meio da cláusula ORDER BY.Selecionar os tipos apropriados e escolher quais colunas incluir na cláusula ORDER BY ajudará a melhorar a velocidade das consultas e a compressão.Execute a consulta abaixo para remover o esquema antigo e criar o esquema aprimorado:
Query
Com um esquema otimizado, agora você pode inserir os dados a partir do sistema de arquivos local. Novamente com o clickhouse-client, insira o arquivo usando a cláusula INFILE, com um INSERT INTO explícito.
Query
6

Executar consultas de exemplo

Algumas consultas de exemplo são apresentadas abaixo para inspirar você a escrever suas próprias consultas.

Com que frequência o tema “ClickHouse” aparece no Hacker News?

O campo score fornece uma métrica de popularidade para as histórias, enquanto o campo id e o operador de concatenação || podem ser usados para gerar um link para a publicação original.
Query
Response
O ClickHouse está gerando mais ruído ao longo do tempo? Aqui fica evidente a utilidade de definir o campo time como DateTime, pois usar um tipo de dado adequado permite utilizar a função toYYYYMM():
Query
Response
Parece que o “ClickHouse” está crescendo em popularidade com o tempo.

Quem são os que mais comentam em artigos relacionados ao ClickHouse?

Query
Response

Quais comentários geram mais interesse?

Query
Response

Parquet

Um dos pontos fortes do ClickHouse é sua capacidade de lidar com uma ampla variedade de formatos. O CSV representa um caso de uso bastante comum, mas não é o formato mais eficiente para troca de dados. Em seguida, você carregará os dados de um arquivo Parquet, um formato eficiente orientado a colunas. O Parquet tem um conjunto mínimo de tipos, que o ClickHouse precisa respeitar, e essas informações de tipo são codificadas no próprio formato. A inferência de tipos em um arquivo Parquet invariavelmente resultará em um esquema ligeiramente diferente do arquivo CSV.
1

Inserir os dados

Execute a consulta a seguir para ler os mesmos dados no formato Parquet, novamente usando a função url para acessar os dados remotos:
Chaves nulas com ParquetDevido a uma característica do formato Parquet, temos que aceitar que as chaves podem ser NULL, mesmo que não estejam nos dados.
Execute o comando a seguir para ver o esquema inferido:
Response
Como no caso do arquivo CSV, você pode especificar o esquema manualmente para ter maior controle sobre os tipos escolhidos e inserir os dados diretamente do S3:
2

Adicione um índice de salto para acelerar as consultas

Para descobrir quantos comentários mencionam “ClickHouse”, execute a seguinte consulta:
Query
Response
Em seguida, você criará um índice invertido na coluna “comment” para acelerar esta consulta. Observe que os comentários em minúsculas serão indexados para encontrar termos independentemente do uso de maiúsculas e minúsculas.Execute os seguintes comandos para criar o índice:
A materialização do índice leva algum tempo (para verificar se o índice foi criado, use a tabela do sistema system.data_skipping_indices).Execute a consulta novamente quando o índice tiver sido criado:
Query
Observe como a consulta agora levou apenas 0,248 segundo com o índice, em comparação com os 0,843 segundo anteriores sem ele:
Response
A cláusula EXPLAIN pode ser usada para entender por que a adição desse índice melhorou a consulta em cerca de 3,4x.
Response
Observe como o índice permitiu pular uma quantidade substancial de grânulos para acelerar a consulta.Agora também é possível pesquisar com eficiência por um ou por vários termos:
Query
Response
Query
Response
Última modificação em 29 de junho de 2026