如何在PieCloudDB中统计2月推文hashtag并排除标点干扰?
解决方法
核心思路是清洗hashtag,去除末尾的标点符号,再进行统计。PieCloudDB兼容PostgreSQL语法,可通过正则表达式实现清洗,具体SQL如下:
WITH cleaned_hashtags AS ( SELECT -- 提取并清洗hashtag:保留#开头,去除末尾的标点(.、!等非字母数字下划线字符) regexp_replace( unnest(regexp_matches(content, '#[A-Za-z0-9_]+[^\s]*', 'g')), '#([A-Za-z0-9_]+)[^\w]*$', '#\1', 'g' ) AS hashtag FROM tweets -- 过滤2月的推文,假设created_at是日期时间类型 WHERE EXTRACT(MONTH FROM created_at) = 2 ) SELECT hashtag, COUNT(*) AS occurrence_count FROM cleaned_hashtags GROUP BY hashtag -- 按次数降序,名称升序排序 ORDER BY occurrence_count DESC, hashtag ASC;
关键部分说明
- 提取hashtag:用
regexp_matches(content, '#[A-Za-z0-9_]+[^\s]*', 'g')匹配所有以#开头、直到空白字符结束的内容,覆盖带末尾标点的情况。 - 清洗标点:
regexp_replace将末尾的非字母数字下划线字符(比如.、!)去掉,只保留#后面的有效标签内容。 - 拆分多标签:
unnest将单条推文里的多个hashtag拆成独立行,方便统计。
如果你的hashtag允许其他特殊字符(比如连字符),可以调整正则里的[A-Za-z0-9_]部分,比如改成[A-Za-z0-9_-]来包含连字符。
内容的提问来源于stack exchange,提问作者Joe
相关产品推荐
相关产品推荐

