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
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: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:Query
Response
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.Carregue os dados com inferência de esquema
A ferramenta mais simples e poderosa para carregar dados é oclickhouse-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:DESCRIBE TABLE nos permite entender quais tipos foram atribuídos.Query
Response
INSERT INTO, SELECT.
Com a função url, os dados serão lidos diretamente da URL:Explore os dados
Obtenha uma amostra das histórias do Hacker News e de colunas específicas executando a consulta a seguir:Query
Response
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 tipoDateTime, 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
clickhouse-client, insira o arquivo usando a cláusula INFILE, com um INSERT INTO explícito.Query
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 campoid e o operador de concatenação ||
podem ser usados para gerar um link para a publicação original.Query
Response
time
como DateTime, pois usar um tipo de dado adequado permite utilizar a função toYYYYMM():Query
Response
Quem são os que mais comentam em artigos relacionados ao ClickHouse?
Query
Response
Quais comentários geram mais interesse?
Query
Response
Parquet
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.Response
Adicione um índice de salto para acelerar as consultas
Para descobrir quantos comentários mencionam “ClickHouse”, execute a seguinte consulta:Query
Response
system.data_skipping_indices).Execute a consulta novamente quando o índice tiver sido criado:Query
Response
EXPLAIN pode ser usada para entender por que a adição desse índice
melhorou a consulta em cerca de 3,4x.Response
Query
Response
Query
Response