Skip to main content
Генерирует случайные данные по заданной схеме. Позволяет заполнять тестовые таблицы этими данными. Поддерживаются все типы данных, которые можно хранить в таблице, включая JSON, Dynamic, Variant, BFloat16, Time и Time64. Типы AggregateFunction, Interval, Nothing и QBit не поддерживаются.

Синтаксис

Аргументы

Настройки

SETTINGS — последний аргумент вызова. Он определяет, как генерируются значения Nullable, Variant, Dynamic и JSON.
SETTINGS также может быть единственным аргументом. В этом случае сохраняется структура таблицы, в которую выполняется вставка:

Возвращаемое значение

Объект таблица с запрошенной схемой.

Пример использования

В сочетании с generateRandomStructure:
Если аргумент structure не указан (в этом случае структура произвольная):
С начальным значением генератора случайных чисел и для случайной структуры, и для случайных данных:
generateRandom(generateRandomStructure(), [начальное значение генератора случайных чисел], max_string_length, max_array_length) при достаточно большом max_array_length может сгенерировать по-настоящему огромный объём данных из-за возможной большой глубины вложенности (до 16) сложных типов (Array, Tuple, Map, Nested).

Генерация JSON

Сгенерированный столбец JSON представляет собой поток документов с единой схемой: набор ключей и тип каждого ключа определяются начальным значением генератора случайных чисел и остаются неизменными для всего столбца, а значения, наличие ключей и длина массивов меняются от строки к строке. Глубина объектов ограничена параметром max_json_depth, число ключей на одном уровне — параметром max_json_keys_per_object, а вероятность отсутствия ключа в строке задаётся параметром null_ratio. Конечные значения имеют типы, которые JSON-парсер определяет для реальных документов: Int64, UInt64, Float64, Bool, String, Date, DateTime, массивы значений этих типов, массивы объектов и массивы со значениями разных типов; у некоторых ключей тип отличается в небольшой доле строк, как это бывает в данных, полученных из приложения. Объявление типа задаёт схему генерируемых данных: пути с явно заданным типом всегда присутствуют и имеют объявленный тип, пути, исключённые с помощью SKIP и SKIP REGEXP, никогда не генерируются, а ограничения max_dynamic_paths и max_dynamic_types соблюдаются, поэтому пути сверх лимита max_dynamic_paths попадают в общие данные столбца.
Структуру также можно брать из таблицы, в которую выполняется вставка. Это удобно при заполнении таблицы со столбцами типов JSON, Dynamic или Variant: