问题描述
我是Google Big-Query的新手,我想从数据库中提取2010年或之后为subreddit创建的所有帖子的帖子标题,帖子正文,评论,分数和创建日期。能够使用
查询所有subreddit评论SELECT * FROM `pushshift.rt_reddit.comments` WHERE lower(subreddit)="politics"
但是我的目的是加入注释和帖子表,以便生成所需的结果,但是我找不到如何做到这一点的方法,该如何实现?请让我知道是否需要其他详细信息。谢谢
解决方法
只是一个简短的注释...您引用的表似乎在@ 2018-08-27 06:59:08 UTC停止了-这意味着如果您要查找更多最新帖子/评论,可能需要找到另一个数据源。
标准SQL:
SELECT
s.title,s.selftext,s.score,s.created_utc post_created_utc,s.author,ARRAY_AGG( STRUCT( c.body,c.created_utc,c.author ) ) comments
FROM
`pushshift.rt_reddit.submissions` s
LEFT OUTER JOIN
`pushshift.rt_reddit.comments` c
ON
CAST(s.id AS string) = c.link_id
WHERE
REGEXP_CONTAINS(c.subreddit,r'(?i)^politics$')
AND s.created_utc > '2009-12-31'
GROUP BY
1,2,3,4,5
LIMIT
10;
日期SQL:
SELECT
MAX(created_utc)
FROM
`pushshift.rt_reddit.submissions`
fh-bigquery.reddit_comments的代码...的工作原理相同。也许使用2018年以后的版本和2018年之前的早期代码。
SELECT
s.title,TIMESTAMP_SECONDS(s.created_utc ) post_created_utc,c.subreddit,c.author ) ) comments
FROM
`fh-bigquery.reddit_posts.20*` s
LEFT OUTER JOIN
`fh-bigquery.reddit_comments.20*` c
ON
regexp_extract(c.link_id,r'(.{6})\s*$') = s.id
WHERE
TIMESTAMP_SECONDS(s.created_utc ) between '2019-01-01' and '2019-01-03'
GROUP BY
1,5,6
LIMIT
10;