BigQuery github数据集返回错误的结果

时间:2018-05-28 11:51:55

标签: github google-bigquery

所以,我正在尝试使用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搜索对我说谎。

有什么建议吗?

谢谢!

1 个答案:

答案 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
)

enter image description here

9522 vs 3995.为什么?

  • 仅镜像开源项目。这根据开源检测到的许可证 - 如果GitHub无法告诉项目正在使用什么许可证,则无法镜像该项目。
  • 新项目:管道可能会错过一些新项目。请报告。