如何在BigQuery中通过SQL多连接查询Stackoverflow公开数据集
如果你的实际表名是单数形式(question/answer/comment),对应修改SQL中FROM后的表名即可。
标签匹配逻辑优化说明
你现有SQL中用tags like "%tensorflow%"的匹配方式可能出现误命中,比如匹配到tensorflow2.x、keras-tensorflow这类包含tensorflow字符串的其他标签,建议调整为更精准的匹配规则:
CONCAT('|', tags, '|') LIKE '%|tensorflow|%'
以下三个查询均沿用该精准匹配规则,你可根据实际需求换回原有模糊匹配逻辑。
1. 问题-回答关联表(对应第一个预期输出)
SELECT q.id AS question_id, q.title AS question_title, q.body AS question_body, a.id AS answer_id, a.title AS answer_title, a.body AS answer_body FROM questions q LEFT OUTER JOIN answers a ON a.parent_id = q.id WHERE CONCAT('|', q.tags, '|') LIKE '%|tensorflow|%'
如果需要全量字段可以把SELECT后的字段替换为*即可。
2. 问题-评论关联表(对应第二个预期输出)
这个表拉取所有带tensorflow标签的问题,以及直接挂在问题下的评论:
SELECT q.id AS question_id, q.title AS question_title, q.body AS question_body, c.id AS comment_id, c.text AS comment_text FROM questions q LEFT OUTER JOIN comments c ON c.post_id = q.id WHERE CONCAT('|', q.tags, '|') LIKE '%|tensorflow|%'
3. 回答-评论关联表(对应第三个预期输出)
这个表拉取所有带tensorflow标签的问题对应的回答,以及挂在这些回答下的评论:
SELECT a.id AS answer_id, a.title AS answer_title, a.body AS answer_body, c.id AS comment_id, c.text AS comment_text FROM questions q INNER JOIN answers a ON a.parent_id = q.id LEFT OUTER JOIN comments c ON c.post_id = a.id WHERE CONCAT('|', q.tags, '|') LIKE '%|tensorflow|%'
内容的提问来源于stack exchange,提问作者Jimmy Zhao
相关产品推荐
相关产品推荐

