Skip to main content
Gera dados aleatórios com um schema especificado. Permite preencher tabelas de teste com esses dados. Há suporte para todos os tipos de dados que podem ser armazenados em uma tabela, incluindo JSON, Dynamic, Variant, BFloat16, Time e Time64. Não há suporte para os tipos AggregateFunction, Interval, Nothing e QBit.

Sintaxe

Argumentos

Configurações

SETTINGS é o último argumento da chamada e controla como são gerados os valores Nullable, Variant, Dynamic e JSON.
SETTINGS também pode ser o único argumento, preservando a estrutura da tabela de inserção:

Valor retornado

Um objeto de tabela com o esquema solicitado.

Exemplo de uso

Em conjunto com generateRandomStructure:
Sem informar o argumento structure (neste caso, a estrutura é aleatória):
Com semente aleatória tanto para a estrutura aleatória quanto para os dados aleatórios:
generateRandom(generateRandomStructure(), [random seed], max_string_length, max_array_length) com um max_array_length grande o suficiente pode gerar uma saída realmente enorme devido à profundidade potencialmente grande de aninhamento (até 16) de tipos complexos (Array, Tuple, Map, Nested).

Gerando JSON

Uma coluna JSON gerada se comporta como um fluxo de documentos com o mesmo schema: o conjunto de chaves e o tipo de cada chave são determinados pela semente aleatória e permanecem iguais em toda a coluna, enquanto os valores, as chaves ausentes e os tamanhos dos arrays variam de uma linha para outra. A profundidade dos objetos é limitada por max_json_depth, o número de chaves por nível por max_json_keys_per_object, e cada chave tem uma probabilidade null_ratio de estar ausente em uma linha. Os valores nas folhas assumem os tipos que o parser de JSON infere em documentos reais: Int64, UInt64, Float64, Bool, String, Date, DateTime, arrays desses tipos, arrays de objetos e arrays mistos; algumas chaves têm um tipo diferente em uma pequena fração das linhas, como acontece com dados coletados de uma aplicação. A declaração de tipo determina o schema gerado: os caminhos tipados estão sempre presentes com o tipo declarado, os caminhos excluídos por SKIP e SKIP REGEXP nunca são gerados, e os limites de max_dynamic_paths e max_dynamic_types são respeitados. Assim, os caminhos que excedem max_dynamic_paths ficam nos dados compartilhados da coluna.
A definição da estrutura também pode ficar a cargo da tabela de inserção, o que é útil para preencher uma tabela com colunas dos tipos JSON, Dynamic ou Variant: