You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何扩展ClickHouse查询以返回多行不同随机数数组?

扩展ClickHouse查询以返回多行随机值数组

需求

需要扩展现有ClickHouse查询,让结果返回多行,每行包含一个不同的随机值数组。

现有查询代码

with base as (
     -- 生成0到49的随机数,将10个值组成数组
select groupArray(10)(rand()%50) as values 
     -- 生成10行数据
from numbers(10) 
)
select values, arrayMax(base.values)
from base

当前查询结果

当前查询仅返回1行结果:一行包含10个0-49随机数的数组,以及该数组的最大值。

修改后的查询方案

以下两种方案均可实现返回多行独立随机数组的需求:

方案1:直接生成多行独立数组

通过arrayMap为每行生成独立的随机数组,可灵活指定行数和每行数组的元素个数:

select 
    arrayMap(_ -> rand() % 50, numbers(10)) as values, -- 每行生成10个0-49的随机数
    arrayMax(values) as max_value
from numbers(5) -- 控制返回的总行数,这里设为5行

方案2:分组生成数组

通过分组将批量生成的随机数拆分为多个数组,适合需要基于数据量控制的场景:

select 
    groupArray(rand() % 50) as values,
    arrayMax(values) as max_value
from numbers(5 * 10) -- 总行数 = 目标行数 × 每行数组元素数
group by intDiv(number, 10) -- 每10个随机数分为一组,对应一行结果

关键说明

  • 方案1中,numbers(10)决定每行数组的元素数量,numbers(5)决定最终返回的总行数,每行数组的随机值都是独立生成的。
  • 方案2通过intDiv进行分组,确保每组对应一个数组,适合需要从批量数据中拆分数组的场景。

内容的提问来源于stack exchange,提问作者Tom Weisner

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 18:52:08