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

BigQuery如何将数组中同类记录合并为逗号分隔字段

实现思路

现有查询仅完成了原始字符串的拆分操作,需要补充分组合并、格式化两个环节:

  • 拆分原始逗号分隔的Info字段为独立键值对,再拆分每个键值对为键、值两部分,同时统一键的大小写避免匹配错误
  • 按SKU和键分组,将同组内的所有值合并为逗号分隔的字符串
  • 按需求拼接为指定格式输出

调整后的查询(标准SQL适配,支持BigQuery/Presto/Spark SQL等)

WITH split_kv AS (
  -- 拆分键值对,分离键和值
  SELECT 
    SKU,
    LOWER(TRIM(SPLIT_PART(TRIM(val), ': ', 1))) AS attr_key,
    TRIM(SPLIT_PART(TRIM(val), ': ', 2)) AS attr_value
  FROM 你的表名,
       UNNEST(SPLIT(Info, ',')) AS val
),
merged_kv AS (
  -- 按SKU和属性键分组合并值
  SELECT 
    SKU,
    attr_key,
    ARRAY_JOIN(ARRAY_AGG(attr_value), ', ') AS merged_values
  FROM split_kv
  GROUP BY SKU, attr_key
)
-- 输出最终结果,如需多行输出则直接SELECT SKU, CONCAT(...) FROM merged_kv即可
SELECT 
  SKU,
  ARRAY_AGG(CONCAT('  ', attr_key, ': ', merged_values)) AS processed_info
FROM merged_kv
GROUP BY SKU

适配说明

如果你使用的是MySQL,做以下函数替换即可:

  • SPLIT_PART(str, ': ', 1)替换为SUBSTRING_INDEX(str, ': ', 1)
  • SPLIT_PART(str, ': ', 2)替换为SUBSTRING_INDEX(str, ': ', -1)
  • ARRAY_AGG+ARRAY_JOIN替换为GROUP_CONCAT

输出效果

针对你提供的SKU=567的测试数据,查询返回的processed_info内容为:

common: tshirt, jeans
  color: blue

和预期效果完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 09:39:03