Перейти к основному содержанию
Генерация случайных данных полезна при тестировании новых сценариев использования или проведении бенчмаркинга вашего решения. В ClickHouse есть широкий набор функций для генерации случайных данных, которые во многих случаях позволяют обойтись без внешнего генератора данных. В этом руководстве приведено несколько примеров генерации случайных наборов данных в ClickHouse с разными требованиями к случайности.

Простой однородный набор данных

Сценарий использования: Быстро сгенерировать набор данных о пользовательских событиях со случайными временными метками и типами событий.
  • rand() % 10000: равномерное распределение 10 тыс. пользователей
  • arrayElement(...): случайным образом выбирает один из трёх типов событий
  • Временные метки распределены за предыдущие 24 часа

Экспоненциальное распределение

Сценарий использования: смоделируйте суммы покупок, где большинство значений невелики, а некоторые — высокие.
  • Равномерно распределённые временные метки за недавний период
  • randExponential(1/10) — большинство значений около 0, с минимумом 15 за счёт смещения ([ClickHouse][1], [ClickHouse][2], [Atlantic.Net][3], [GitHub][4])

События, распределённые по времени (Пуассон)

Сценарий использования: Смоделируйте поступление событий, сгруппированных вокруг определённого периода (например, часа пик).
  • Пик событий приходится примерно на полдень, а отклонение распределено по Пуассону

Нормальное распределение, меняющееся со временем

Сценарий использования: Эмулировать системные метрики (например, загрузку CPU), меняющиеся со временем.
  • usage следует суточной синусоиде + случайная составляющая
  • Значения ограничены диапазоном [0,100]

Категориальные и вложенные данные

Сценарий использования: Создайте профили пользователей с несколькими интересами.
  • Случайная длина массива — от 1 до 3
  • Три оценки на пользователя для каждого интереса
Прочитайте статью Generating Random Data in ClickHouse, чтобы увидеть ещё больше примеров.

Создание случайных таблиц

Функция generateRandomStructure особенно полезна в сочетании с движком таблицы generateRandom для тестирования, бенчмаркинга или создания тестовых данных с произвольной схемой. Для начала просто посмотрим, как выглядит случайная структура с помощью функции generateRandomStructure:
Вы можете увидеть примерно следующее:
Вы также можете использовать seed, чтобы каждый раз получать одну и ту же структуру:
Теперь давайте создадим реальную таблицу и заполним её случайными данными:
Давайте объединим обе функции, чтобы получить совершенно случайную таблицу. Сначала посмотрим, какую структуру мы получим:
Теперь создайте таблицу с такой структурой и используйте оператор DESCRIBE, чтобы посмотреть, что у нас получилось:
Просмотрите первую строку, чтобы увидеть пример сгенерированных данных:
Последнее изменение 3 июля 2026 г.