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

在BigQuery中基于逗号分隔符展开多列时如何避免重复数据?

拆分逗号分隔列时出现重复数据的解决方法

原查询语句

SELECT colm_A,colm_B, colm_C From Db.Table_A, UNNEST(Split(COLM_B,',')), COLM_B, UNNEST(SPLIT(COLM_C,',')) COLM_C;

原表数据

Colm_AColm_BColm_C
1鱼F
2狗,猫D,C

错误输出(出现重复)

Colm_AColm_BColm_C
1鱼F
2狗D
2猫C
2狗D
2猫C

期望输出

Colm_AColm_BColm_C
1鱼F
2狗D
2猫C

问题原因

原查询对Colm_B和Colm_C的拆分结果做了无关联的交叉连接,产生笛卡尔积。当两个列都包含多个逗号分隔值时,会生成拆分后B的元素数 × 拆分后C的元素数行数据,其中有效对应关系的行被重复输出。

正确查询语句

通过WITH OFFSET获取拆分元素的位置索引,关联同一位置的元素,避免笛卡尔积:

SELECT
  colm_A,
  b AS colm_B,
  c AS colm_C
FROM Db.Table_A,
UNNEST(SPLIT(colm_B, ',')) WITH OFFSET AS b_offset
JOIN UNNEST(SPLIT(colm_C, ',')) WITH OFFSET AS c_offset
ON b_offset = c_offset

说明

WITH OFFSET会为每个拆分后的元素分配一个从0开始的位置索引,通过ON b_offset = c_offset确保Colm_B和Colm_C中同一位置的元素一一对应,既完成拆分又不会产生重复数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 14:22:35