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

如何在BigQuery中去除字符串中的相邻重复项?

BigQuery去除字符串中相邻重复项的两种解决方案

正则表达式方案

利用BigQuery的REGEXP_REPLACE函数,通过正则匹配并替换相邻重复的条目,适合分隔符固定的场景:

SELECT REGEXP_REPLACE(
  your_table.your_column,
  r'([^>]+)(?: >> \1)+',
  r'\1'
) AS cleaned_string
FROM your_table;

正则逻辑说明

  • ([^>]+):捕获单个页面条目(匹配所有非>的字符,适配Page X格式)
  • (?: >> \1)+:匹配1次及以上的>>+ 捕获到的重复条目(\1是反向引用,对应第一个捕获组的内容)
  • 替换为\1:保留唯一的相邻重复条目,去掉后续重复项

数组遍历方案

如果页面名称可能包含特殊字符,或者需要更灵活的判断逻辑,可通过数组拆分+窗口函数实现:

WITH processed_data AS (
  SELECT
    original_column,
    page,
    pos,
    LAG(page) OVER (PARTITION BY original_column ORDER BY pos) AS prev_page
  FROM your_table,
       UNNEST(SPLIT(original_column, ' >> ')) AS page WITH OFFSET AS pos
)
SELECT
  original_column,
  STRING_AGG(page, ' >> ' ORDER BY pos) AS cleaned_string
FROM processed_data
WHERE prev_page IS NULL OR page != prev_page
GROUP BY original_column;

步骤说明

  1. SPLIT(original_column, ' >> '):将字符串按分隔符拆分为数组
  2. UNNEST(...) WITH OFFSET:展开数组并保留元素的原始位置
  3. LAG(page) OVER (...):获取当前元素的前一个元素
  4. 过滤条件:保留第一个元素(prev_page IS NULL),以及与前一个元素不同的条目
  5. STRING_AGG:将过滤后的元素重新拼接为字符串

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 08:45:29