GitHub BigQuery随着时间的推移提交查询而不返回某些回购的结果

时间:2016-08-25 19:53:25

标签: sql github google-bigquery

我正在尝试使用Google BigQuery中的公共数据集随时间推送有关GitHub每月提交的数据。以下查询为Chef和Ansible提供了结果,但没有为Puppet或Salt返回任何内容。

SELECT
  MONTH(committer.date) month,
  YEAR(committer.date) year,
  repo_name,
  COUNT(*) commits,
FROM 
  [bigquery-public-data:github_repos.commits]
WHERE
  repo_name IN ('puppetlabs/puppet',
  'saltstack/salt',
  'ansible/ansible',
  'chef/chef')
GROUP BY
  month,
  year,
  repo_name

然后我尝试通过修改WHERE子句来修改查询以仅拉取Salt或Puppet:

WHERE
    repo_name = 'puppetlabs/puppet'

(我也用'saltstack / salt'作为一个单独的查询重复了这个。)在每种情况下我收到了错误消息:

  

'查询返回零记录。'

我试图通过以下方式进行故障排除:
1)确认我使用的是正确的回购品名称
2)确认回购是公开的,并且(理论上)应该包含在BigQuery数据中 3)我已将Ansible和Chef的查询结果绑定到github.com上的提交,并且在这些情况下的查询给出了准确的结果。

有没有人对问题所在以及如何修改我的查询以返回Salt和Puppet的数据有任何想法?

2 个答案:

答案 0 :(得分:1)

puppetlabs/puppet不是开源的,至少由GitHub的许可证API决定:

curl -H "Accept: application/vnd.github.drax-preview+json" \
     https://api.github.com/repos/puppetlabs/puppet |grep license -A 6

"license": {
  "key": "other",
  "name": "Other",
  "spdx_id": null,
  "url": null,
  "featured": false
},

API的文档:

puppetlabs/puppet许可证:

对我来说,它看起来像是Apache License 2.0,但在GitHub License API确定这实际上是开源许可证之前,它不会包含在GitHub BigQuery存储库中。

请注意,GitHub使用licensee来支持他们的API,这就是他们说算法运行的方式:

  

如果许可证文件有明确的版权声明,则仅此而已   (例如,版权所有(c)2015 Ben Balter),我们将假设作者有意   保留所有权利,因此该项目未获得许可。

     

如果   许可证与已知许可证完全匹配。如果我们脱光了   空白和版权声明,我们可能会幸运,并直接串   Ruby中的比较便宜。

     

如果我们仍然无法匹配许可证,我们   使用一种名为Sørensen-Dice系数的奇特数学事物,即   非常善于计算两个字符串之间的相似性。通过   计算从已知许可证到许可证的百分比变化   例如,您可以告诉某个给定的许可证与该文件的90%相似   MIT许可证,10%可能代表版权线   适应项目。

现在,如果您尝试获取他们的提交信息,您可以使用GitHub Archive BigQuery数据集:

SELECT type, COUNT(*) c
FROM [githubarchive:month.201607]
WHERE repo.name = 'puppetlabs/puppet'
AND type='PushEvent'
GROUP BY 1

答案 1 :(得分:0)

在下面运行以查看来自puppetlabs的所有内容,例如

SELECT repo_name, COUNT(1) commits
FROM [bigquery-public-data:github_repos.commits]
WHERE repo_name LIKE 'puppetlabs/%' 
GROUP BY repo_name
ORDER BY commits DESC

有很多人!