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

BigQuery能否通过单查询实现按ID行转列合并行数据到唯一列?

答案

可以通过单条BigQuery查询实现,无需额外中间步骤。

实现方案

采用条件聚合的方式完成行转列:按id、name字段分组,针对每个目标属性列,匹配对应cat值提取value,无匹配项时自动返回NULL,和要求的空值生成规则完全一致。

参考SQL代码

SELECT
  id AS ID,
  name AS Name,
  MAX(IF(cat = 'att1', value, NULL)) AS Att1_Val1,
  MAX(IF(cat = 'att2', value, NULL)) AS Att2_Val1,
  MAX(IF(cat = 'att3', value, NULL)) AS Att3_Val1,
  MAX(IF(cat = 'att4', value, NULL)) AS Att4_Val1
FROM `你的源表路径` -- 替换为实际项目、数据集、表名
GROUP BY id, name
ORDER BY id

运行结果对照

基于给出的示例源表数据,执行上述查询后的输出和目标表结构、数据完全匹配:

  • ID=1、Name=name1:Att1_Val1=1,Att2_Val1=2,Att3_Val1=3,Att4_Val1=NULL
  • ID=2、Name=name2:Att1_Val1=4,Att2_Val1=5,Att3_Val1=6,Att4_Val1=7

补充:如果后续cat字段新增了固定枚举属性,只需要在SELECT块中新增对应条件聚合字段即可,整体逻辑无需调整。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 21:00:54