如何逐行统计Tweet_text列中以'https://t.co/'开头的链接出现次数
SQL逐行统计链接出现次数方案
原语句问题说明
你写的语句存在两个核心问题:
REGEXP_CONTAINS仅返回布尔值判断文本是否存在匹配,无法统计匹配次数,且你填写的参数顺序错误,该函数标准参数顺序为REGEXP_CONTAINS(待检测字符串, 正则规则)- 全局聚合函数
COUNT会将所有行的结果聚合为单条总统计值,自然无法得到逐行对应的结果
修正后语句(适配BigQuery语法,和你原语句用的函数生态一致)
如果你需要返回每行的原文和对应链接出现次数,语句如下:
SELECT Tweet_text, ARRAY_LENGTH(REGEXP_EXTRACT_ALL(Tweet_text, r'https://t.co/[a-zA-Z0-9]+')) AS link_count FROM `MyTable`
如果只需要逐行的统计结果不需要原文,去掉SELECT子句中的Tweet_text字段即可。
语法说明
REGEXP_EXTRACT_ALL会提取目标列中所有符合正则规则的字符串,返回匹配结果组成的数组ARRAY_LENGTH统计数组长度,就是当前行匹配的链接出现次数- 没有使用全局聚合函数,所以会保留原表的所有行,返回逐行对应的统计结果
- 如果你只需要统计
https://t.co/前缀本身的出现次数,不需要匹配完整的短链结构,将正则规则替换为r'https://t.co/'即可
内容的提问来源于stack exchange,提问作者DataShytter
相关产品推荐
相关产品推荐

