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

如何在Google BigQuery中创建指定长度的全1数组?

在Google BigQuery中生成指定长度的重复元素数组

当然可以实现这类需求,以下是几种实用的方法,完全满足你生成指定长度重复元素数组、展开频率表的需求:

方法一:通用型重复数组构造

这是最灵活的方案,支持任意数据类型的重复元素:

-- 生成长度为7的全1整数数组
SELECT ARRAY(SELECT 1 FROM UNNEST(GENERATE_RANGE(1, 8)) AS idx) AS ones_array;

-- 生成长度为5的重复字符串数组
SELECT ARRAY(SELECT 'custom_value' FROM UNNEST(GENERATE_RANGE(1, 6)) AS idx) AS repeated_str_array;

原理:GENERATE_RANGE(1, n+1)生成包含n个元素的序列,通过子查询将每个位置替换为目标元素,最终组合成数组。

方法二:字符串元素快捷方案(可选)

如果目标元素是字符串,可通过REPEAT+SPLIT快速实现,注意处理末尾空值:

-- 生成长度为7的字符串类型全1数组
SELECT SPLIT(REPEAT('1,', 7), ',')[:-1] AS str_ones_array;

-- 转为整数数组
SELECT ARRAY(SELECT CAST(item AS INT64) FROM UNNEST(SPLIT(REPEAT('1,', 7), ',')) AS item WHERE item != '') AS int_ones_array;

应用:频率表展开

针对你提到的频率表展开需求,结合UNNEST即可直接实现:

WITH frequency_table AS (
  -- 模拟你的频率表数据
  SELECT 'product_x' AS item, 3 AS frequency UNION ALL
  SELECT 'product_y' AS item, 5 AS frequency
)
SELECT item
FROM frequency_table,
UNNEST(ARRAY(SELECT item FROM UNNEST(GENERATE_RANGE(1, frequency + 1)) AS idx)) AS expanded_item;

执行后会得到3条product_x和5条product_y的记录,完成频率表的展开。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 22:30:03