所以,我正在尝试使用bigquery-public-data:github_repos.files
进行一些查询,May 25, 2018, 2:07:03 AM
已在filename:goreleaser extension:yaml extension:yml path:/
更新,理论上它包含来自github的所有文件数据 - 正如它在表的描述中所述:
HEAD所有文件的文件元数据。
在id列上加入[bigquery-public-data:github_repos.contents] 搜索文字。
所以,我有一个名为goreleaser的工具,使用它,用户创建一个名为.goreleaser.yaml的文件。为了了解有多少存储库正在使用它,我使用了github搜索,就像搜索goreleaser.yml
一样,你可以在这个链接上看到结果。
这显示1k +结果,并获得所有这些可能名称的结果:
goreleaser.yaml
.goreleaser.yml
.goreleaser.yaml
SELECT repo_name, path
FROM [bigquery-public-data:github_repos.files]
WHERE REGEXP_MATCH(path, r'\.?goreleaser.ya?ml')
问题是,github显示1k结果计数,但你只能分页到1k左右。我在Go中使用API等编写了一些代码,你可以在这里看到它。
无论如何,我尝试用bigquery做类似的事情,这是我的愚蠢尝试:
path
这将包括销售工具,这是不行的,但这不是问题。问题是即使使用销售工具,它也只显示约500个结果,而不是1k。
PS:我还尝试了将LIKE
与|Germany|USA|UAE|Turkey|Canada...
|5 | 3 |3 |42 | 12..
等匹配的简化版本,结果相同。
所以,要么我正在做一些可怕的错误,这个表并不包括它所说的所有数据,或github搜索对我说谎。
有什么建议吗?
谢谢!
答案 0 :(得分:3)
并非GitHub中的每个项目都在BigQuery的repo数据集上镜像。
让我们看看4月份获得超过40颗星的所有项目,以及我们在BigQuery的回购中可以找到的项目:
SELECT COUNT(name) april_projects_gt_stars, COUNT(repo_name) projects_mirrored
FROM (
SELECT DISTINCT repo_name, name, c
FROM `bigquery-public-data.github_repos.files` a
RIGHT JOIN (
SELECT repo.name, COUNT(*) c
FROM `githubarchive.month.201804`
WHERE type='WatchEvent'
GROUP BY 1
HAVING c>40
) b
ON repo_name=name
)
9522 vs 3995.为什么?