Skip to main content
Génère des données aléatoires selon un schéma donné. Permet de peupler des tables de test avec ces données. Tous les types de données pouvant être stockés dans une table sont pris en charge, notamment JSON, Dynamic, Variant, BFloat16, Time et Time64. Les types AggregateFunction, Interval, Nothing et QBit ne sont pas pris en charge.

Syntaxe

Arguments

Paramètres

SETTINGS est le dernier argument de l’appel. Il détermine comment sont générées les valeurs Nullable, Variant, Dynamic et JSON.
SETTINGS peut également être le seul argument, auquel cas la structure de la table d’insertion est conservée :

Valeur renvoyée

Un objet de type table avec le schéma demandé.

Exemple d’utilisation

En combinaison avec generateRandomStructure :
En l’absence de l’argument structure (dans ce cas, la structure est aléatoire) :
Avec une graine aléatoire pour la structure aléatoire comme pour les données aléatoires :
generateRandom(generateRandomStructure(), [random seed], max_string_length, max_array_length) avec une valeur de max_array_length suffisamment élevée peut générer une sortie extrêmement volumineuse en raison de la profondeur d’imbrication potentiellement importante (jusqu’à 16) des types complexes (Array, Tuple, Map, Nested).

Génération de JSON

Une colonne JSON générée s’apparente à un flux de documents de même schéma : l’ensemble des clés et le type de chaque clé sont déterminés par la graine du générateur aléatoire et restent identiques dans toute la colonne, tandis que les valeurs, les clés absentes et la longueur des tableaux varient d’une ligne à l’autre. La profondeur des objets est limitée par max_json_depth, le nombre de clés par niveau par max_json_keys_per_object, et chaque clé a une probabilité null_ratio d’être absente d’une ligne. Les valeurs des feuilles ont les types que l’analyseur JSON déduit de documents réels : Int64, UInt64, Float64, Bool, String, Date, DateTime, des tableaux de ces types, des tableaux d’objets et des tableaux mixtes ; quelques clés changent de type dans une faible proportion des lignes, comme dans les données collectées auprès d’une application. La déclaration du type définit le schéma généré : les chemins typés sont toujours présents avec leur type déclaré, les chemins exclus par SKIP et SKIP REGEXP ne sont jamais générés, et les limites max_dynamic_paths et max_dynamic_types sont respectées. Les chemins au-delà de max_dynamic_paths se retrouvent donc dans les données partagées de la colonne.
La structure peut aussi être déduite de la table d’insertion, ce qui facilite le remplissage d’une table comportant des colonnes JSON, Dynamic ou Variant :