如何通过Github Archive数据衡量语言流行度?

时间:2017-01-05 00:33:47

标签: github google-bigquery github-api github-archive

我试图通过以下方式衡量编程语言的受欢迎程度:

  1. 回购中的星星数量与......相结合。
  2. repo中使用的编程语言......
  3. 每种语言中代码的总字节数(认识到某些语言更多/更少详细)
  4. 方便的是,Github Archive提供了大量的Github数据,并由BigQuery托管。唯一的问题是我没有看到"语言"可用于Github Archive中各种事件类型的任何有效负载。

    以下是我一直在运行的BigQuery查询,试图查找Github存档数据中是否填写语言,以及在何处填写语言:

    SELECT *
    FROM [githubarchive:month.201612]
    WHERE JSON_EXTRACT(payload, "$.repository.language") is null
    LIMIT 100
    

    有人可以了解我是否能够以这种方式利用Github存档数据,以及我该如何做到这一点?或者我还需要采取其他方法吗?我看到BigQuery上还有一个github_repos公共数据集,它确实有一些语言指标,但语言指标似乎一直都在。我最终希望获得某种月度指标(例如,在某个月内,#34;活跃"回购,最流行的语言是什么)。

    感谢任何建议!

2 个答案:

答案 0 :(得分:8)

使用BigQuery和GitHub Archive和GHTorrent -

要通过拉取请求获取语言,去年12月(从http://mads-hartmann.com/2015/02/05/github-archive.html粘贴的副本):

SELECT COUNT(*) c, JSON_EXTRACT_SCALAR(payload, '$.pull_request.base.repo.language') lang
FROM [githubarchive:month.201612]
WHERE JSON_EXTRACT_SCALAR(payload, '$.pull_request.base.repo.language') IS NOT NULL
GROUP BY 2
ORDER BY 1 DESC
LIMIT 10

http://i.imgur.com/PmDxoEX.png

查找每个项目的星数:

SELECT COUNT(*) c, repo.name 
FROM [githubarchive:month.201612]
WHERE type='WatchEvent'
GROUP BY 2
ORDER BY 1 DESC
LIMIT 10

http://i.imgur.com/yXDHUlB.png

对于快速语言与字节视图,您可以使用GHTorrent:

SELECT language, SUM(bytes) bytes
FROM [ghtorrent-bq:ght.project_languages]
GROUP BY 1
ORDER BY 2 DESC
LIMIT 10

http://i.imgur.com/8RvrVBA.png

或者查看实际文件,请参阅contents of GitHub on BigQuery

现在您可以混合使用这些查询来获得所需的结果!

答案 1 :(得分:1)

SELECT 
  JSON_EXTRACT_SCALAR(payload, '$.pull_request.head.repo.language') AS language,
  COUNT(1) AS usage
FROM [githubarchive:month.201601] 
GROUP BY language
HAVING NOT language IS NULL
ORDER BY usage DESC