As etapas abaixo também funcionam facilmente em uma instalação local do ClickHouse. A única mudança é usar a função
s3 em vez de s3cluster (a menos que você tenha um cluster configurado — nesse caso, altere default para o nome do seu cluster).Instruções passo a passo
1
Exploração de dados
Vamos ver a aparência dos dados. A função de tabela O ClickHouse infere o seguinte esquema a partir do arquivo JSON:
s3cluster retorna uma tabela, então podemos DESCRIBE o resultado:2
Crie a tabela
Com base no esquema inferido, ajustamos os tipos de dados e adicionamos uma chave primária.
Defina a tabela a seguir:
3
Inserir dados
O comando a seguir carrega os registros dos arquivos S3 na tabela Alguns comentários sobre nosso comando
youtube.INSERT:- A função
parseDateTimeBestEffortUSOrZeroé útil quando os campos de data recebidos podem não estar no formato correto. Sefetch_datenão for convertido corretamente, ele será definido como0 - A coluna
upload_datecontém datas válidas, mas também inclui strings como “4 hours ago” — o que certamente não é uma data válida. Decidimos armazenar o valor original emupload_date_stre tentar convertê-lo comtoDate(parseDateTimeBestEffortUSOrZero(upload_date::String)). Se a conversão falhar, simplesmente obteremos0 - Usamos
ifNullpara evitar valoresNULLna nossa tabela. Se um valor recebido forNULL, a funçãoifNulldefinirá o valor como uma string vazia
4
Conte o número de linhas
Abra uma nova aba no SQL Console do ClickHouse Cloud (ou uma nova janela do
clickhouse-client) e acompanhe o aumento da contagem.
Levará algum tempo para inserir 4.56B linhas, dependendo dos recursos do seu servidor. (Sem ajustar nenhuma configuração, isso leva cerca de 4,5 horas.)5
Explore os dados
Depois que os dados forem inseridos, conte o número de dislikes dos seus vídeos ou canais favoritos. Vamos ver quantos vídeos foram publicados pelo ClickHouse:Vamos analisar as curtidas e as não curtidas dos vídeos do ClickHouse:A resposta é semelhante a:Aqui está uma busca por vídeos com ClickHouse nos campos Esta consulta precisa processar cada linha e também fazer o parse de duas colunas de strings. Ainda assim, obtemos um desempenho razoável de 4,15M linhas/segundo:O resultado fica assim:
A consulta acima é executada tão rapidamente porque escolhemos
uploader como a primeira coluna da chave primária, então ela só precisou processar 237 mil linhas.title ou description: