Passer au contenu principal
La génération de données aléatoires est utile pour tester de nouveaux cas d’usage ou évaluer les performances de votre implémentation. ClickHouse propose un large éventail de fonctions pour générer des données aléatoires qui, dans de nombreux cas, évitent d’avoir recours à un générateur de données externe. Ce guide présente plusieurs exemples de génération de jeux de données aléatoires dans ClickHouse, selon différents besoins en matière d’aléa.

Jeu de données simple à distribution uniforme

Cas d’usage : générez rapidement un jeu de données d’événements utilisateur avec des horodatages aléatoires et différents types d’événements.
  • rand() % 10000 : distribution uniforme de 10 000 utilisateurs
  • arrayElement(...) : sélectionne aléatoirement l’un des trois types d’événements
  • Horodatages répartis sur les 24 heures précédentes

Distribution exponentielle

Cas d’usage : simuler des montants d’achat dont la plupart des valeurs sont faibles, mais dont quelques-unes sont élevées.
  • Horodatages uniformément répartis sur une période récente
  • randExponential(1/10) — la plupart des totaux sont proches de 0, avec un minimum fixé à 15 ([ClickHouse][1], [ClickHouse][2], [Atlantic.Net][3], [GitHub][4])

Événements répartis dans le temps (Poisson)

Cas d’usage : simuler des arrivées d’événements qui se concentrent autour d’un créneau précis (par ex. l’heure de pointe).
  • Les événements culminent vers midi, avec une variation suivant une loi de Poisson

Distribution normale variant dans le temps

Cas d’usage : Simulez des métriques système (p. ex., l’utilisation du CPU) qui varient au fil du temps.
  • usage suit une onde sinusoïdale diurne + une composante aléatoire
  • Valeurs bornées à [0,100]

Données catégorielles et imbriquées

Cas d’usage : Créez des profils d’utilisateurs avec des centres d’intérêt multiples.
  • Longueur de tableau aléatoire comprise entre 1 et 3
  • Trois scores par utilisateur pour chaque centre d’intérêt
Consultez l’article de blog Generating Random Data in ClickHouse pour encore plus d’exemples.

Génération de tables aléatoires

La fonction generateRandomStructure est particulièrement utile lorsqu’elle est associée au moteur de table generateRandom pour les tests, le benchmarking ou la création de données fictives avec des schémas arbitraires. Commençons simplement par voir à quoi ressemble une structure aléatoire à l’aide de la fonction generateRandomStructure :
Vous pourriez voir quelque chose comme ceci :
Vous pouvez également utiliser une graine pour obtenir la même structure à chaque fois :
Créons maintenant une véritable table et remplissons-la avec des données aléatoires :
Combinons les deux fonctions pour obtenir une table complètement aléatoire. Voyons d’abord quelle structure nous allons obtenir :
Créez maintenant la table avec cette structure, puis utilisez l’instruction DESCRIBE pour voir ce que nous avons créé :
Examinez la première ligne pour voir un aperçu des données générées :
Dernière modification le 25 juin 2026