Saltar al contenido principal
Generar datos aleatorios es útil para probar nuevos casos de uso o hacer benchmark de tu implementación. ClickHouse cuenta con una amplia variedad de funciones para generar datos aleatorios que, en muchos casos, evitan la necesidad de usar un generador de datos externo. Esta guía ofrece varios ejemplos de cómo generar conjuntos de datos aleatorios en ClickHouse con distintos requisitos de aleatoriedad.

Conjunto de datos simple con distribución uniforme

Caso de uso: Genera rápidamente un conjunto de datos de eventos de usuario con marcas de tiempo aleatorias y tipos de evento.
  • rand() % 10000: distribución uniforme de 10k usuarios
  • arrayElement(...): selecciona aleatoriamente uno de los tres tipos de eventos
  • Marcas de tiempo distribuidas a lo largo de las 24 horas anteriores

Distribución exponencial

Caso de uso: Simular importes de compra en los que la mayoría de los valores son bajos, pero unos pocos son elevados.
  • Marcas de tiempo distribuidas uniformemente durante un período reciente
  • randExponential(1/10) — la mayoría de los valores cerca de 0, con un desplazamiento mínimo de 15 ([ClickHouse][1], [ClickHouse][2], [Atlantic.Net][3], [GitHub][4])

Eventos distribuidos temporalmente (Poisson)

Caso de uso: Simular la llegada de eventos que se agrupan en torno a un período específico (p. ej., la hora punta).
  • Los eventos alcanzan su punto máximo alrededor del mediodía, con una desviación con distribución de Poisson

Distribución normal que varía con el tiempo

Caso de uso: Emular métricas del sistema (p. ej., uso de CPU) que varían con el tiempo.
  • usage sigue una onda sinusoidal diurna + variación aleatoria
  • Valores acotados a [0,100]

Datos categóricos y anidados

Caso de uso: Crear perfiles de usuario con varios intereses.
  • Longitud aleatoria del array de 1 a 3
  • Tres puntuaciones por usuario para cada interés
Consulta el blog Generating Random Data in ClickHouse para ver más ejemplos.

Generación de tablas aleatorias

La función generateRandomStructure es especialmente útil cuando se combina con el generateRandom table engine para pruebas, benchmarking o la creación de datos ficticios con esquemas arbitrarios. Comencemos viendo cómo es una estructura aleatoria con la función generateRandomStructure:
Es posible que veas algo como esto:
También puedes usar una semilla para obtener siempre la misma estructura:
Ahora vamos a crear una tabla real y llenarla con datos aleatorios:
Combinemos ambas funciones para obtener una tabla completamente aleatoria. Primero, veamos la estructura que obtendremos:
Ahora crea la tabla con esa estructura y usa la sentencia DESCRIBE para ver qué hemos creado:
Examina la primera fila para ver una muestra de los datos generados:
Última modificación el 10 de junio de 2026