如何在BigQuery中拆分表内chat_start_url列的第二个超链接至新列
解决方案:拆分chat_start_url列中的第二个超链接
根据你的需求,以下是修改后的BigQuery SQL,直接在CTE中拆分出chat_start_url里的第二个超链接作为新列:
WITH Test_1 AS ( SELECT chat_start_url, -- 拆分第二个超链接,默认按空格分隔,可根据实际分隔符调整 IFNULL(SPLIT(chat_start_url, ' ')[OFFSET(1)], '') AS second_chat_url, chat_start_date_Asia_Kolkata, referrer, chat_duration_in_seconds, visitor_nick, visitor_ip, visitor_email, ROW_NUMBER() OVER (PARTITION BY visitor_ip) AS IP FROM `bigquery-405008.xxxx.xx_chat` ) SELECT * FROM Test_1
适配不同场景的调整方式:
- 如果链接之间的分隔符不是空格,把
SPLIT(chat_start_url, ' ')里的' '替换成实际分隔符(比如逗号','、分号';'等)。 - 要是需要精准匹配超链接(避免误拆分非链接内容),可以用正则表达式提取:
-- 提取第二个http/https开头的超链接 IFNULL(REGEXP_EXTRACT(chat_start_url, r'.*(https?://[^ ]+)'), '') AS second_chat_url
这里的正则https?://[^ ]+会匹配完整的http/https链接,.*会跳过第一个链接的内容,直接提取第二个。
- 如果列中链接数量不固定,也可以先把所有链接提取成数组,再取第二个元素:
IFNULL(REGEXP_EXTRACT_ALL(chat_start_url, r'https?://[^ ]+')[OFFSET(1)], '') AS second_chat_url
内容的提问来源于stack exchange,提问作者Rahul
相关产品推荐
相关产品推荐

