查找数据中的前10个事件



我正试图在我的推特数据中找到前10个提及(@xxxxx)。我已经创建了最初的表格twitter.full_text_ts,并将其与我的数据一起加载。

create table twitter.full_text_ts as
select id, cast(concat(substr(ts,1,10), ' ', substr(ts,12,8)) as timestamp) as  ts, lat, lon, tweet
from full_text;

我已经能够通过使用这个查询(模式)提取推文中的提及

select id, ts, regexp_extract(lower(tweet), '(.*)@user_(\S{8})([:| ])(.*)',2) as patterns
from twitter.full_text_ts
order by patterns desc
limit 50;

执行此操作会给我

USER_a3ed4b5a   2010-03-07 03:46:23 fffed220
USER_dc8cfa6f   2010-03-05 18:28:39 fffdabf9
USER_dc8cfa6f   2010-03-05 18:32:55 fffdabf9
USER_915e3f8c   2010-03-07 03:39:09 fffdabf9
and so on...

你可以看到fffed220等是提取的图案。

现在,我想做的是计算每一个提到(模式)的次数,并输出前10个。例如,fffdabf9发生20次,fffxxxx发生17次,依此类推。

最可读的方法是将第一个查询保存到临时表中,然后对临时表进行分组:

create table tmp as
--your query
select patterns, count(*) n_mentions
from tmp
group by patterns
order by count(*) desc
limit 10;
with mentions as 
(select id, ts, 
 regexp_extract(lower(tweet), '(.*)@user_(\S{8})([:| ])(.*)',2) as patterns
from twitter.full_text_ts
order by patterns desc
limit 50)
select patterns, count(*) 
from mentions
group by patterns
order by count(*) desc
limit 10;

最新更新