Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql GitHub BigQuery随时间提交查询,不返回某些回购的结果_Sql_Github_Google Bigquery - Fatal编程技术网

Sql GitHub BigQuery随时间提交查询,不返回某些回购的结果

Sql GitHub BigQuery随时间提交查询,不返回某些回购的结果,sql,github,google-bigquery,Sql,Github,Google Bigquery,我试图使用GoogleBigQuery上的公共数据集来获取有关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

我试图使用GoogleBigQuery上的公共数据集来获取有关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的数据?

运行下面的程序,查看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

有很多

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许可证2.0,但在GitHub许可证API确定这实际上是一个开源许可证之前,它不会包含在GitHub BigQuery存储库中

请注意,GitHub用于为其API提供动力,这就是他们所说的算法运行方式:

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

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

如果我们仍然无法匹配许可证,我们 使用一种叫做Sørensen–Dice系数的奇特数学方法,它是 非常擅长计算两个字符串之间的相似性。通过 计算从已知许可证到许可证的更改百分比 文件,例如,您可以判断给定的许可证与 麻省理工学院许可证,这10%很可能代表正在使用的版权线 与项目相适应

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

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

谢谢@Mikhail Berlyant!该查询的结果仍然非常有趣。例如,saltstack/salt repo不是从数据库返回的,而是具有。puppetlabs/puppet也是如此,我希望它是一个查询结果,但它不是一个查询结果。很奇怪,两份回购协议都没有出现。