Pular para o conteúdo principal
Gerar dados aleatórios é útil ao testar novos casos de uso ou fazer benchmarking da sua implementação. O ClickHouse tem uma ampla gama de funções para gerar dados aleatórios que, em muitos casos, eliminam a necessidade de um gerador de dados externo. Este guia apresenta vários exemplos de como gerar conjuntos de dados aleatórios no ClickHouse com diferentes requisitos de aleatoriedade.

Conjunto de dados simples com distribuição uniforme

Caso de uso: Gere rapidamente um conjunto de dados de eventos de usuários com timestamps aleatórios e tipos de evento.
  • rand() % 10000: distribuição uniforme de 10 mil usuários
  • arrayElement(...): seleciona aleatoriamente um de três tipos de evento
  • Timestamps distribuídos ao longo das últimas 24 horas

Distribuição exponencial

Caso de uso: Simular valores de compra em que a maioria é baixa, mas alguns são altos.
  • Timestamps uniformemente distribuídos em um período recente
  • randExponential(1/10) — a maioria dos totais fica próxima de 0, com 15 como valor mínimo ([ClickHouse][1], [ClickHouse][2], [Atlantic.Net][3], [GitHub][4])

Eventos distribuídos ao longo do tempo (Poisson)

Caso de uso: Simule chegadas de eventos que se concentram em um período específico (por exemplo, no horário de pico).
  • Os eventos atingem o pico por volta do meio-dia, com desvio com distribuição de Poisson

Distribuição normal variável ao longo do tempo

Caso de uso: Emular métricas do sistema (por exemplo, uso de CPU) que variam ao longo do tempo.
  • usage segue uma onda senoidal ao longo do dia + aleatoriedade
  • Valores limitados ao intervalo [0,100]

Dados categóricos e aninhados

Caso de uso: Crie perfis de usuário com interesses múltiplos.
  • Comprimento aleatório do array entre 1 e 3
  • Três pontuações por usuário para cada interesse
Leia o post do blog Gerando dados aleatórios no ClickHouse para ver ainda mais exemplos.

Gerando tabelas aleatórias

A função generateRandomStructure é particularmente útil quando combinada com o mecanismo de tabela generateRandom para testes, benchmarking ou criação de dados simulados com schemas arbitrários. Vamos começar vendo como é uma estrutura aleatória usando a função generateRandomStructure:
Você pode ver algo assim:
Você também pode usar uma semente para obter sempre a mesma estrutura:
Agora, vamos criar uma tabela propriamente dita e preenchê-la com dados aleatórios:
Vamos combinar as duas funções para criar uma tabela completamente aleatória. Primeiro, veja a estrutura que vamos obter:
Agora, crie a tabela com essa estrutura e use a instrução DESCRIBE para ver o que foi criado:
Inspecione a primeira linha para ver uma amostra dos dados gerados:
Última modificação em 29 de junho de 2026