Skip to main content
Genera datos aleatorios con un esquema dado. Permite poblar tablas de prueba con esos datos. Se admiten todos los tipos de datos que pueden almacenarse en una tabla, incluidos JSON, Dynamic, Variant, BFloat16, Time y Time64. Los tipos AggregateFunction, Interval, Nothing y QBit no son compatibles.

Sintaxis

Argumentos

Configuración

SETTINGS es el último argumento de la llamada y controla cómo se generan los valores Nullable, Variant, Dynamic y JSON.
SETTINGS también puede ser el único argumento, en cuyo caso se conserva la estructura de la tabla de inserción:

Valor devuelto

Un objeto de tipo tabla con el esquema solicitado.

Ejemplo de uso

En combinación con generateRandomStructure:
Sin el argumento structure (en este caso, la estructura es aleatoria):
Con una semilla aleatoria tanto para la estructura aleatoria como para los datos aleatorios:
generateRandom(generateRandomStructure(), [random seed], max_string_length, max_array_length) con un max_array_length lo bastante grande puede generar una salida enorme, debido a la gran profundidad de anidamiento posible (hasta 16) de los tipos complejos (Array, Tuple, Map, Nested).

Generación de JSON

Una columna JSON generada se asemeja a un flujo de documentos con un mismo esquema: el conjunto de claves y el tipo de cada una se derivan de la semilla aleatoria y se mantienen constantes en toda la columna, mientras que los valores, las claves ausentes y las longitudes de los arrays varían de una fila a otra. La profundidad de los objetos está limitada por max_json_depth y el número de claves por nivel, por max_json_keys_per_object. La probabilidad de que una clave esté ausente en una fila es null_ratio. Los valores terminales tienen los tipos que el analizador de JSON infiere de documentos reales: Int64, UInt64, Float64, Bool, String, Date, DateTime, arrays de estos tipos, arrays de objetos y arrays mixtos. Algunas claves tienen un tipo distinto en una pequeña proporción de las filas, como ocurre con los datos recopilados de una aplicación. La declaración del tipo determina el esquema generado: las rutas con un tipo declarado siempre están presentes con ese tipo, las rutas excluidas por SKIP y SKIP REGEXP nunca se generan y se respetan tanto max_dynamic_paths como max_dynamic_types, por lo que las rutas que superan el límite de max_dynamic_paths acaban en los datos compartidos de la columna.
La estructura también puede tomarse de la tabla de inserción, lo que resulta práctico para rellenar una tabla con columnas JSON, Dynamic o Variant: