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

如何拆分含多ASIN的列并与对应EAN重组替换原行?

解决方案:拆分多值ASIN列并与EAN配对

Google Sheets 操作方法

如果用Google Sheets处理,有两种简单的实现方式:

方式1:快速拼接再分列

  • 假设EAN在A列,ASIN在B列,数据从第2行开始(第1行是表头)
  • 在空白列(比如C2)输入公式:
    =ARRAYFORMULA(FLATTEN(IF(SPLIT(B2:B, ",|_", TRUE, TRUE)="",,A2:A&"|"&SPLIT(B2:B, ",|_", TRUE, TRUE))))
    
  • 公式会自动遍历所有行,把逗号/下划线分隔的ASIN拆成单个值,和对应EAN用竖线拼接后扁平化输出
  • 得到结果后,复制整列→右键粘贴为「值」,再用「数据」→「分列」,选竖线作为分隔符,就能得到拆分后的EAN和ASIN两列

方式2:直接输出拆分后的两列

如果不想手动分列,用QUERY+UNNEST组合公式一步到位:

=QUERY(
  UNNEST(
    ARRAYFORMULA(
      MAP(A2:A, B2:B, LAMBDA(ean, asins, 
        IF(asins="",,
          ARRAYFORMULA(ean&"|"&SPLIT(asins, ",|_", TRUE, TRUE))
        )
      ))
    )
  ),
  "SELECT SPLIT(Col1, '|')[OFFSET(0)] AS EAN, SPLIT(Col1, '|')[OFFSET(1)] AS ASIN WHERE Col1 IS NOT NULL",
  1
)

BigQuery SQL 实现

如果是在BigQuery中处理数据,直接用UNNEST配合正则替换统一分隔符即可:

SELECT
  ean,
  TRIM(asin) AS asin
FROM
  `your_project.your_dataset.product_data`,
  UNNEST(SPLIT(REGEXP_REPLACE(asins, ',|_', ','), ',')) AS asin
WHERE
  asins IS NOT NULL AND asins != ''
  • 先用REGEXP_REPLACE把下划线替换成逗号,统一用逗号作为分隔符
  • SPLIT把ASIN字符串转成数组,UNNEST把数组拆成多行,每一行对应原EAN和单个ASIN
  • TRIM用来清理ASIN前后可能存在的空格

为什么之前的SPLIT+OFFSET不行?

SPLIT返回的是数组,OFFSET只能取数组里的某一个位置的元素,没法批量把所有元素拆成单独行。而UNNEST的核心作用就是把数组「摊平」成多行,刚好适配你要把一个单元格里的多值拆成多行的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 14:27:23