Skip to main content
根据给定的 schema 生成随机数据。 可用这些数据填充测试表。 支持所有可存储在表中的数据类型,包括 JSON、Dynamic、Variant、BFloat16、Time 和 Time64。 不支持 AggregateFunction、Interval、Nothing 和 QBit 类型。

语法

参数

设置

SETTINGS 是调用时的最后一个参数,用于控制 Nullable、Variant、Dynamic 和 JSON 值的生成方式。
SETTINGS 也可以是唯一的参数,此时会沿用目标表的结构:

返回值

具有所请求 schema 的表对象。

使用示例

配合 generateRandomStructure:
未指定 structure 参数时 (在这种情况下,结构是随机的) :
同时为随机结构和随机数据指定随机种子:
如果 max_array_length 设置得足够大,generateRandom(generateRandomStructure(), [random seed], max_string_length, max_array_length) 可能会生成极其庞大的输出,因为复杂类型 (Array、Tuple、Map、Nested) 的嵌套深度可能很大 (最高可达 16) 。

生成 JSON

生成的 JSON 列读起来就像一串遵循同一 schema 的文档:键的集合以及每个键的类型均由随机种子决定,并在整列中保持不变;而值、缺失的键以及数组长度则逐行变化。对象的深度受 max_json_depth 限制,单层中的键数量受 max_json_keys_per_object 限制,某个键在一行中缺失的概率为 null_ratio。叶子节点的类型与 JSON 解析器对真实文档推断出的类型一致:Int64、UInt64、Float64、Bool、String、Date、DateTime、上述类型的数组、对象数组以及混合数组;与从应用程序中采集的数据类似,少数键会在一小部分行中呈现不同的类型。 类型声明决定了所生成 schema 的形态:类型化路径始终存在,且采用其声明的类型;被 SKIP 和 SKIP REGEXP 排除的路径永远不会生成;同时 max_dynamic_paths 和 max_dynamic_types 的限制均会得到遵守,因此超出 max_dynamic_paths 的路径最终会存入该列的共享数据中。
也可以使用目标插入表的结构,这样向包含 JSON、Dynamic 或 Variant 列的表中 填充数据会更方便: